Title: Functional Test Program Generation for Microprocessors
1Functional Test Program Generation for
Microprocessors
2Outline
- Introduction
- Test Program Generation Taxonomy
- Test Program Generation Techniques
- Past Approaches
- Present Trends
- Future Directions
- Conclusion
- References
3Introduction
- Shrinking time-to-market, short product life ..
- Need to reduce design cycle time for embedded
microprocessors. - Functional verification is one of the major
component of this design cycle time. - Existing validation approaches
- Simulation based approaches using random tests
- Formal techniques to verify certain properties
4Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Verifies Functional Correctness
Verifies stuck-at, bridging, delay.. faults
5Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Fault Oriented
Fault Independent
Random
Combined
(RAPS, SMART)
(Critical Path)
6Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Implicit (universal) Fault
Without Fault
Functional Fault
Fault Oriented
Fault Independent
Random
Combined
7Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Implicit (universal) Fault
Without Fault
Functional Fault
Fault Oriented
Fault Independent
Random
Combined
BDD
Heuristic
8Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Implicit (universal) Fault
Without Fault
Functional Fault
Fault Oriented
Fault Independent
Random
Combined
PseudoExhaustive
Exhaustive
BDD
Heuristic
9Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Implicit (universal) Fault
Without Fault
Functional Fault
Fault Oriented
Fault Independent
Random
Combined
PseudoExhaustive
Exhaustive
BDD
Heuristic
10Test Generation Taxonomy
Test Generation
Functional Test
Manufacturing Test
Implicit (universal) Fault
Without Fault
Functional Fault
Fault Oriented
Fault Independent
Random
Combined
PseudoExhaustive
Exhaustive
BDD
Heuristic
11Functional Test Program
TestProgGen
MOV R1, 011 MOV R2, 010 ADD R3, R1, R2 R3 101
R3 101 ?
Verifies the functionality of the processor using
assembly programs
12Test Program Generation Techniques
- Past Approaches
- Functional Fault Model based Test Generation
- Present Trends
- Micro-Architecture Coverage driven Test Gen.
- Instruction-Level Self Test
- Specification based Test Generation
- Future Directions
- Software based Self Test
- Specification driven Validation
13Test Program Generation Techniques
- Past Approaches
- Functional Fault Model based Test Generation
- Nair et. al., IEEE Computers 1978
- Thatte et al. IEEE Computers,1980
- Brahme et al. IEEE Computers,1984
- Lin et al., DAC 1988
- Kannah et al., ATS 2000
- Present Trends
- Micro-Architecture Coverage driven Test Gen.
- Instruction-Level Self Test
- Specification based Test Generation
- Future Directions
- Software based Self Test
- Specification driven Validation
14Testing Random-Access Memories
- Presented a fault model which views faults in
memories at a functional level instead of at a
basic gate level. - Memory Fault Model
- Memory cell array
- One or more cells are stuck at 0 or 1.
- One or more pairs of cells are coupled.
- Decoder
- Does not access the addressed cell
- Access multiple cells, including the addressed
cell - Read/Write Logic
- Some output lines of the sense amplifier logic or
write driver logic may be stuck-at-0 or
stuck-at-1
Nair et. al., IEEE Computers 1978
15Testing of Microprocessors
- Graph model of the architecture
- Node Register groups
- Edge Instructions
- Functional fault models
- Register decoding
- Instruction decoding
- Data Storage
- Data Transfer
- Data Manipulation
- Test generation procedure
- Register decoding
Thatte et. al., IEEE Computers 1980
16Graph Model of the Microprocessor
Registers R1 accumulator R2
general purpose register R3 scratch-pad register
In
I2
I1
I3
I7
Instructions I1 Load R1 I2 Load R2 I3
Add R1 R1 R2 I4 Mov R2 R1 I5 Store R1 I6
Store R2 I7 Mov R3 R1 I8 Mov R1 R3
I4
R2
R1
R3
I3
I8
I6
I5
Out
17Graph Model of the Microprocessor
Registers R1 accumulator R2
general purpose register R3 scratch-pad register
Instructions I1 Load R1 I2 Load R2 I3
Add R1 R1 R2 I4 Mov R2 R1 I5 Store R1 I6
Store R2 I7 Mov R3 R1 I8 Mov R1 R3
Write (R3) I1, I7 Read(R3) I8, I5
18Microprocessor Fault Models
- Register Decoding
- fd(Ri) Ri
- Write (Ri) and Read (Ri)
- Instruction Decoding
- No instruction executed f (Ij / )
- Different instruction is executed f(Ij / Ik )
- F(Ij / Ij Ik )
- Data Storage
- Any cell of a register can be stuck-at-0 or
stuck-at-1 - Data Transfer
- A line in a transfer path can be stuck at 0 or 1
- Two lines in a transfer path can be coupled
- Data Manipulation
19Test Generation for Register Decoding
- Initialize Q with all registers so that Ri lies
ahead of Rj iff l(Ri) lt l(Rj) - A register at the front of the Q
- Repeat
- Write each register Ri of set A with data ONE and
register Rj at the front of Q with data ZERO - Read each register Ri of A
- Read Rj
- A A U Rj
- Q Q - Rj
- Until Q is empty
f(Ri) ? ?, for every Ri ? A f(Ri) ? f(Rj) ? for
every Ri, Rj ? A ??f(Ri)? 1
20Register Decoding Algorithm
A Q R1, R2, R3
21Register Decoding Algorithm
A Q R1, R2, R3
R1 ? ZERO R1 ? ZERO ?
LOAD R1, ZERO STORE R1 Out ZERO ?
22Register Decoding Algorithm
A Q R1, R2, R3 A R1 Q R2, R3
R1 ? ZERO R1 ? ZERO ?
23Register Decoding Algorithm
A Q R1, R2, R3 A R1 Q R2, R3
R1 ? ZERO R1 ? ZERO ? R1 ? ONE, R2 ? ZERO R1 ?
ONE ?, R2 ? ZERO ?
24Register Decoding Algorithm
A Q R1, R2, R3 A R1 Q R2, R3 A
R1, R2 Q R3
R1 ? ZERO R1 ? ZERO ? R1 ? ONE, R2 ? ZERO R1 ?
ONE ?, R2 ? ZERO ?
25Register Decoding Algorithm
A Q R1, R2, R3 A R1 Q R2, R3 A
R1, R2 Q R3
R1 ? ZERO R1 ? ZERO ? R1 ? ONE, R2 ? ZERO R1 ?
ONE ?, R2 ? ZERO ? (R1, R2) ? ONE, R3 ?
ZERO (R1, R2) ? ONE ?, R2 ? ZERO ?
26Register Decoding Algorithm
A Q R1, R2, R3 A R1 Q R2, R3 A
R1, R2 Q R3 A R1, R2, R3 Q
R1 ? ZERO R1 ? ZERO ? R1 ? ONE, R2 ? ZERO R1 ?
ONE ?, R2 ? ZERO ? (R1, R2) ? ONE, R3 ?
ZERO (R1, R2) ? ONE ?, R2 ? ZERO ?
27Extended Fault Model
- Representation for Instructions
- An instruction is composed of a sequence of
microinstructions. - Each microinstruction is made up of a set of
microorders which are executed in parallel - SWAP, CLR, NOT, MOV, EXG, ADD, MUL, DIV
- Simple ADD has 4 microorders
- Fault model for the Instruction Sequencing
- One or more microorders can be inactive
- Microorders which are normally inactive become
active - F(I) I - -
Brahme et. al., IEEE Computers 1984
28Further Improvements
- Chen-Shang Lin and Hong-Fa Ho, DAC 88
- Signal flow model of the processor
- Functional fault models are derived from Turing
machine model - Developed O-algorithm to eliminate redundant
tests and obtain improved fault coverage - Rajesh Kannah, C.P. Ravikumar, ATS 2000
- Reduce the test application time.
- Use structural information to eliminate certain
functional tests using the notion of
fault-grading.
29Test Program Generation Techniques
- Past Approaches
- Functional Fault Model based Test Generation
- Present Trends
- Micro-Architecture Coverage driven Test
Generation - Iwashita et al., ICCAD 1994
- Ho et al., ISCA 1995
- Ur et al., DAC 1999
- Campenhout et al., DAC 1999
- Specification driven Test Generation
- Geist et al., DAC 1999 (Specman Elite from
Verisity) - Mishra et al., HLDVT 2002
- Instruction-Level Self Test
- Lai et al., DAC 2001
- Chen et al., DAC 2003
- Future Directions
- Software based Self Test
- Specification driven Validation
30Test Generation for Pipelined Processors
Iwashita et. al., ICCAD 1994
31FSM Traversal based Test Generation
Ho et. al., ISCA 1995
32Micro Architecture Coverage Driven
Ur et. al., DAC 1999
33High-Level Test Generation
Campenhout et. al., DAC 1999
DPTRACE Path Selection DPRELAX Value
Selection CTRLJUST Signal Justification
34Test Program Generation Techniques
- Past Approaches
- Functional Fault Model based Test Generation
- Present Trends
- Micro-Architecture Coverage driven Test
Generation - Iwashita et al., ICCAD 1994
- Ho et al., ISCA 1995
- Ur et al., DAC 1999
- Campenhout et al., DAC 1999
- Instruction-Level Self Test
- Lai et al., DAC 2001
- Chen et al., DAC 2003
- Specification driven Test Generation
- Geist et al., DAC 1999 (Specman Elite from
Verisity) - Mishra et al., HLDVT 2002
- Future Directions
- Software based Self Test
- Specification driven Validation
35Specman Elite from Verisity Inc.
36Specification driven Test Gen. using Model Checker
Architecture Specification
ADL Specification
Properties (SMV)
Processor Model
Simulator Generation
Not Enough Properties
SMV
Counterexamples
Coverage Report
Simulator
Automatic
Test Programs
Manual
Mishra et. al., HLDVT 2002
37Test Program Generation
- Specification of Properties
- Stall Decode Unit of the DLX architecture
- stall assert G(ID._stall 0)
- Test Program
- The Decode unit (ID) will be stalled in cycle 4.
Fetch Cycle Opcode Dest Src1 Src2
1 NOP 2 ADD
R3 R1 R2 3
ADD R4 R3 R2
38Test Program Generation Techniques
- Past Approaches
- Functional Fault Model based Test Generation
- Present Trends
- Micro-Architecture Coverage driven Test
Generation - Iwashita et al., ICCAD 1994
- Ho et al., ISCA 1995
- Ur et al., DAC 1999
- Campenhout et al., DAC 1999
- Specification driven Test Generation
- Geist et al., DAC 1999 (Specman Elite from
Verisity) - Mishra et al., HLDVT 2002
- Instruction-Level Self Test
- Lai et al., DAC 2001
- Chen et al., DAC 2003
- Future Directions
- Software based Self Test
- Specification driven Validation
39Instruction-Level DFT
Lai et. al., DAC 2001
40Software-Based Self-Test
Chen et. al., DAC 2003
41Conclusion
- The boundary is blurring ..
- Confluence of Functional Verification and
Manufacturing testing - Software-Based Self-Test
- Top-down and Bottom-up Validation
- Specification driven Test Generation
- Micro-Architecture Coverage driven Techniques
- Combined Simulation and Formal Techniques
42References
- Test Generation for Microprocessors S. Thatte et
al., IEEE Computers, June 1980 - Functional Testing of Microprocessors D. Brahme
et al., IEEE Computers, 1984 - Automatic Test Program Generation for Pipelined
Processors H. Iwashita et al., ICCAD 1994 - Architecture Validation for Processors R. Ho et
al., ISCA 1995 - Automatic Functional Test Program Generation for
Microprocessors C. Lin et al., DAC 1998 - Micro Architecture Coverage Directed Generation
of Test Programs S. Ur et al., DAC 1999 - High-Level Test Generation for design
Verification of Pipelined Microprocessors D.
Campenhout et al., DAC 1999 - Functional Testing of Microprocessors with Graded
Fault Coverage R. Kannah et al., ATS 2000 - Instruction Level DFT for Testing Processor and
IP Cores in System-on-a-Chip W. Lai et al., DAC
2001 - Automatic Functional Test Program Generation for
Pipelined Processors using Model Checking, by P.
Mishra et al., HLDVT 2002. - A Scalable Software-Based Self-Test Methodology
for Programmable Processors L. Chen et al., DAC
2003
43 Thank you !
Thank you !