Embedded processor testing techniques based on the execution of self-test programs have been recently proposed as an effective alternative to classic external tester-based testing and pure hardware built-in self-test (BIST) approaches. This project discusses this extremely important role of employing a software-based self-testing in the microprocessor tests and validation sequences.
Software-based self-testing is a nonintrusive testing approach and provides at-speed testing capability without any hardware or performance overheads. The proposed methodology aims at high structural fault coverage with low-test development and test application cost.
In this project we used software-based self-testing techniques to evaluate the open ended LEON3 -- a SPARC V8 (instruction set architecture) hardware implementation which includes several hardware and software based optimizations in the processor level. The whole code base for LEON3 has been written in VHDL and is provided by Gaisler Research. The code base is free to use for further development in this era.
This project deals with the testing of the LEON3 microprocessor with the concept of hardware testing (using Software Based Self Test technique) by exploiting the nature of the instruction set. This technique is an excellent choice for testing the hardware considering the open nature of the LEON3 implementation.
With this approach, we tested and evaluated the different segments of LEON3 processors like the Static memory (SRAM), caches (Instruction and Data), Tags (Instruction and Data), Arithmetic and Logical Unit (ALU) and Registers.
With our development, we can determine the effect of some faults at memory addresses by implementing the codes on the hardware. In this project, we injected some faults by varying the VHDL architectures and letting our codes to detect the faults.
We have written codes in assembly for two types of implementation. First, directly implementing the code on hardware. Second, by using code generator to generate final output file and then to implement them on hardware. Both the methods are working.