Sunteți pe pagina 1din 50

VLSI Testing

ATPG
ATPG Algorithms
Algorithms
Virendra Singh
Indian Institute of Science (IISc)
Bangalore
virendra@computer.org
E0-286: Testing and Verification of SoC Design
Lecture - 10
Feb 9, 2008

E0-286@SERC

D-Algorithm
D-Algorithm
Start
Initialize test cube (tc)
None
exists

None
exists

Select a primitive D-cube


of fault as C
Inconsistent

D-intersect C with previous


test cube (tc) and
perform implication
Consistent
Is there a D or D
on any PO?

Backtrack to the last


point a choice existed

Feb 9, 2008

No test
exists

Yes

Line Justification

Impossible

No

done
Test
generated

Select a gate from D-frontier


and propagate D-cube of the
Selected gate as C
E0-286@SERC

D-Algo
D-Algo (Line
(Line Justification)
Justification)
Begin

Is there any line in tc


which are not justified?

No

Test has
been
generated

Yes
Select an unjustified line and
a singular cube C to justify the line

Consistent

Interset C with previous


test cube tc
Inconsistent
Backtrack to the last
point a choice existed
None
exists
Line Justification
impossible

Feb 9, 2008

E0-286@SERC

Example2:
Example2: Fault
Fault A
A sa0
sa0

Feb 9, 2008

Step 1 D-Drive Set A = 1

E0-286@SERC

Step
Step 2
2 --- Example
Example 2
2

Step 2 D-Drive Set f = 0

0
1

Feb 9, 2008

E0-286@SERC

Step
Step 3
3 --- Example
Example 2
2

Step 3 D-Drive Set k = 1


1
0

Feb 9, 2008

D
D

E0-286@SERC

Step
Step 4
4 --- Example
Example 2
2

Step 4 Consistency Set g = 1


1
0

Feb 9, 2008

1
D
D

E0-286@SERC

Step
Step 5
5 --- Example
Example 2
2

Step 5 Consistency f = 0 Already set


1
0

Feb 9, 2008

1
D
D

E0-286@SERC

Step
Step 6
6 --- Example
Example 2
2

Step 6 Consistency Set c = 0, Set e = 0


1

Feb 9, 2008

D
D

E0-286@SERC

D-Chain
D-Chain Dies
Dies -- Example
Example 2
2

Step 7 Consistency Set B = 0


Fault detected at PO, although D-Chain dies

0
0
1

1
D
D

Test cube: A, B, C, D, e, f, g, h, k, L

Feb 9, 2008

E0-286@SERC

10

D-Algorithm
D-Algorithm :: Example
Example
1

D
1 1

1
1

D
1

1
1
Feb 9, 2008

E0-286@SERC

D 1
D
11

Decision
Decision Tree
Tree

Feb 9, 2008

E0-286@SERC

12

9
9 -- V
V Algorithm
Algorithm (Muth)
(Muth)

Logic values {0/0, 1/1, 0/1, 1/0, 0/u, 1/u, u/0, u/1, u/u}
0/u = {0, D}, 1/u = {D, 1}, u/0 = {0, D}, u/1 = {D, 1}
u/u = {0, 1, D, D}

Reduces amount of search done in multiple path


sensitization D-Algo

Feb 9, 2008

E0-286@SERC

13

9
9 -- V
V Algorithm
Algorithm

Feb 9, 2008

E0-286@SERC

14

9
9 -- V
V Algorithm
Algorithm
1

D
1/u

Feb 9, 2008

E0-286@SERC

15

9-V
9-V Algorithm:
Algorithm: Value
Value Comp
Comp

Feb 9, 2008

E0-286@SERC

16

9-V
9-V Algorithm:
Algorithm: Value
Value Comp
Comp

No Backtracking

Feb 9, 2008

E0-286@SERC

17

Path
Path Oriented
Oriented DEcision
DEcision
Making
Making
(PODEM)
(PODEM)
P.
P. Goel,
Goel, IBM,
IBM, 1981
1981
Feb 9, 2008

E0-286@SERC

18

PODEM
PODEM

New concepts introduced:


Expand binary decision tree only around
primary inputs
Use X-PATH-CHECK to test whether Dfrontier still there

Objectives -- bring ATPG closer to


propagating D (D) to PO

Backtracing

Feb 9, 2008

E0-286@SERC

19

Motivation
Motivation

IBM introduced semiconductor DRAM


memory into its mainframes late 1970s
Memory had error correction and
translation circuits improved reliability
D-ALG unable to test these circuits
Search too undirected
Large XOR-gate trees
Must set all external inputs to define
output
Needed a better ATPG tool

Feb 9, 2008

E0-286@SERC

20

PODEM
PODEM High-Level
High-Level Flow
Flow
1. Assign binary value to unassigned PI
2. Determine implications of all PIs
3. Test Generated? If so, done.
4. Test possible with more assigned PIs? If

maybe, go to Step 1
5. Is there untried combination of values on
assigned PIs? If not, exit: untestable fault
6. Set untried combination of values on
assigned PIs using objectives and
backtrace. Then, go to Step 2
Feb 9, 2008

E0-286@SERC

21

PODEM-Algorithm
PODEM-Algorithm
Start
Assign binary value to an unssigned PI
Deternine implications of all PIs
Test
generated

Yes

Is there a D or D
on any PO?
No
Test Possible with additional
Assigned PIs?

May be

No
Is there an untried combination of
No PIs?
Values on assigned

No

No test
exists

Yes
Set untried combination of vaues
On assigned PIs
Feb 9, 2008

E0-286@SERC

22

PODEM
PODEM

Feb 9, 2008

E0-286@SERC

23

D-Algorithm
D-Algorithm :: Example
Example
1

D
1

D
1

1
1
Feb 9, 2008

E0-286@SERC

1
24

PODEM
PODEM :: Example
Example

Feb 9, 2008

E0-286@SERC

25

PODEM
PODEM :: Value
Value Comp
Comp

Feb 9, 2008

E0-286@SERC

26

PODEM
PODEM :: Decision
Decision Tree
Tree

Feb 9, 2008

E0-286@SERC

27

PODEM
PODEM
PODEM doesnt need
Consistency check conflict can never
occur
J-frontier there are no values that
require justification
Backward implication values are
propagated only in forward directions

Feb 9, 2008

E0-286@SERC

28

Example
Example

Select path s Y for fault propagation

sa1

Feb 9, 2008

E0-286@SERC

29

Example
Example --- Step
Step 2
2 ss sa1
sa1

Initial objective: Set r to 1 to sensitize fault

sa1

Feb 9, 2008

E0-286@SERC

30

Example
Example --- Step
Step 3
3 ss sa1
sa1

Backtrace from r

sa1

Feb 9, 2008

E0-286@SERC

31

Example
Example --- Step
Step 4
4 ss sa1
sa1

Set A = 0 in implication stack

1
0
sa1

Feb 9, 2008

E0-286@SERC

32

Example
Example --- Step
Step 5
5 ss sa1
sa1

Forward implications: d = 0, X = 1

1
0

0
sa1

Feb 9, 2008

E0-286@SERC

33

Example
Example --- Step
Step 6
6 ss sa1
sa1

Initial objective: set r to 1

1
0

0
sa1

Feb 9, 2008

E0-286@SERC

34

Example
Example --- Step
Step 7
7 ss sa1
sa1

Backtrace from r again

1
0

0
sa1

Feb 9, 2008

E0-286@SERC

35

Example
Example --- Step
Step 8
8 ss sa1
sa1

Set B to 1. Implications in stack: A = 0, B = 1

1
0
1

Feb 9, 2008

0
sa1

E0-286@SERC

36

Example
Example --- Step
Step 9
9 ss sa1
sa1

Forward implications: k = 1, m = 0, r = 1, q = 1,
Y = 1, s = D, u = D, v = D, Z = 1
1
1
0
0

1
1

sa1

D
1
D

Feb 9, 2008

E0-286@SERC

37

Backtrack
Backtrack --- Step
Step 10
10 ss sa1
sa1

X-PATH-CHECK shows paths s Y and


Z blocked (D-frontier disappeared)

1
0

suv

0
sa1

Feb 9, 2008

E0-286@SERC

38

Step
Step 11
11 --- ss sa1
sa1

Set B = 0 (alternate assignment)

1
0
0

Feb 9, 2008

sa1

E0-286@SERC

39

Backtrack
Backtrack --- ss sa1
sa1

Forward implications: d = 0, X = 1, m = 1, r = 0,
s = 1, q = 0, Y = 1, v = 0, Z = 1. Fault not sensitized.

0
0
0

0
1

sa1

0
1
0

Feb 9, 2008

E0-286@SERC

40

Step
Step 13
13 --- ss sa1
sa1

Set A = 1 (alternate assignment)

1
1
sa1

Feb 9, 2008

E0-286@SERC

41

Step
Step 14
14 --- ss sa1
sa1

Backtrace from r again

1
1
sa1

Feb 9, 2008

E0-286@SERC

42

Step
Step 15
15 --- ss sa1
sa1

Set B = 0. Implications in stack: A = 1, B = 0

1
1
0

Feb 9, 2008

sa1

E0-286@SERC

43

Backtrack
Backtrack --- ss sa1
sa1

Forward implications: d = 0, X = 1, m = 1, r = 0. Conflict:


fault not sensitized. Backtrack

0
1
0

0
1

sa1

0
1
0

Feb 9, 2008

E0-286@SERC

44

Step
Step 17
17 --- ss sa1
sa1

Set B = 1 (alternate assignment)

1
1
1

Feb 9, 2008

sa1

E0-286@SERC

45

Fault
Fault Tested
Tested -- Step
Step 18
18 ss sa1
sa1

d = 1, m = 1, r = 1, q = 0, s = D, v =

Forward implications:
D, X = 0, Y = D

1
1

1
1
1

sa1

0
D

Feb 9, 2008

E0-286@SERC

46

Backtrace
Backtrace (s,
(s, vvss)Pseudo-Code
)Pseudo-Code
v = vs;

while (s is a gate output)


if (s is NAND or INVERTER or NOR) v = v;
if (objective requires setting all inputs)
select unassigned input a of s with hardest
controllability to value v;
else
select unassigned input a of s with easiest
controllability to value v;
s = a;
return (s, v) /* Gate and value to be assigned */;

Feb 9, 2008

E0-286@SERC

47

Objective
Objective Selection
Selection Code
Code
if (gate g is unassigned) return (g, v);
select a gate P from the D-frontier;
select an unassigned input l of P;
if (gate g has controlling value)
c = controlling input value of g;
else if (0 value easier to get at input of
XOR/EQUIV gate)
c = 1;
else c = 0;
return (l, c );

Feb 9, 2008

E0-286@SERC

48

PODEM
PODEM Algorithm
Algorithm
while (no fault effect at POs)
if (xpathcheck (D-frontier))
(l, vl) = Objective (fault, vfault);
(pi, vpi) = Backtrace (l, vl);
Imply (pi, vpi);
if (PODEM (fault, vfault) == SUCCESS) return (SUCCESS);
(pi, vpi) = Backtrack ();
Imply (pi, vpi);
if (PODEM (fault, vfault) == SUCCESS) return (SUCCESS);
Imply (pi, X);
return (FAILURE);
else if (implication stack exhausted)
return (FAILURE);
else Backtrack ();
return (SUCCESS);
Feb 9, 2008

E0-286@SERC

49

Thank You
Feb 9, 2008

E0-286@SERC

50

S-ar putea să vă placă și