Title: CPE/EE 428, CPE 528 Testing Combinational Logic (2)
1CPE/EE 428, CPE 528 Testing Combinational Logic
(2)
- Department of Electrical and Computer Engineering
University of Alabama in Huntsville
2Testing Digital Systems
- Combinational vs Sequential Systems
- We shall cover combinational first
- Sequential circuits can be tested using
combinational test generation and scan chains - The state FFs are connected in a shift register.
Any value can be shifted in (setting an
arbitrary state), the next state loaded, and then
shifted out. Thus tests can be directly applied
to the combinational logic.
3Testing Digital Systems Detection
A good circuit N produces function Z(x)
A circuit with fault f produces a different
function Z f (x)
x
Z f (x)
N f
- Detecting a fault
- A test vector t is an assignment of input values.
It detects a fault f iff Z(t) ? Z f (t) - The set of all tests T that detects f is found
by Z(x) ? Z f (x) 1
4Testing Digital Systems Detection
- Assume x4 s-a-0 (stuck-at 0, sa0)
x2
x3
x1
Good Circuit
Z
x4
x2
x3
x1
Faulty Circuit
Zf
5Testing Digital Systems Detection
test for x4 s-a-0
x2
(ab) ? a ? (ab) a (ab) a aa ab
(a b) a ab ((x2x3)x1) x1x4
(cx1) x1x4 (c x1) x1x4 cx1x4
x1x4 x1x4
x3
x1
Z
x4
Z(x) ? Z f (x) 1 Z (x2 x3) x1 x1x4 Z f
(x2 x3) x1
? gt x1x4 1
- This says that any input vector with x1 0 and
x4 1 is a test vector for x4 s-a-0. x2 and x3
are dont-cares.
6Testing Digital Systems Detection
x2
x3
0
0
test for x4 s-a-0
x1
0
1/0
Z
1
1
x4
1/0
1/0
s-a-0
- The combined good/bad circuit can be drawn
- values shown are for v/vf
- that is, values in the good circuit / values in
the faulty circuit - v/vf shows a discrepancy between good/faulty
circuit values
7Fault Activation and Propagation
x2
x3
0
0
x1
0
1/0
test for x4 s-a-0
Z
1
1
x4
1/0
1/0
s-a-0
- Two basic concepts in fault detection illustrated
- A test must activate the fault by creating
different v/vf values at the fault site - thus x4 is assigned to be 1. If it really is
stuck at zero, we know there will be a change in
circuit values. - A test must propagate the error to a primary
output - other circuit values must be selected to allow
the good/faulty value to be seen at an output.
8Path Sensitization
x2
x3
0
0
x1
0
1/0
test for x4 s-a-0
Z
1
1
x4
1/0
1/0
Sensitized path
s-a-0
- Path sensitization
- A line whose value (with the test t) changes in
the presence of fault f is said to be sensitized
to fault f by test t - these lines are indicated by having different
v/vf values - A path composed of sensitized lines is a
sensitized path
9Another example
x2
x3
x1
Z
x4
s-a-0
10Another example
sensitized path
1
1
x2
1/0
x3
1/0
x1
1
1/0
Z
0/1
0
x4
0
s-a-0
Assign 1 to x1 to activate the fault
Assign other inputs to enable propagation
11An Alternate Test Vector
- Alternate sensitized path for x1 s-a-0
x2
x3
x1
Z
x4
s-a-0
12An Alternate Test Vector
- Alternate sensitized path for x1 s-a-0
0
0
x2
x3
0
0
1/0
x1
1
0/1
Z
0/1
0/1
x4
1
sensitized path
s-a-0
13Stem vs. Branch Faults
- Actually x1 could be treated as three different
fault sites. - A stem fault. The fault is on the common stem.
- A branch fault. The fault is on one of the
branches. - i.e. the input to the AND and NOT gates could be
different - need to know the actual circuit topology
stem
x2
x3
1
x1
0/1
0/1
1/0
Z
x4
0/1
branch s-a-0
14Controlling and Inverting Values
- Aside
- Primitive logic gates (AND, OR, NAND, NOR) can be
characterized by two parameters - controlling value c
- inversion i
- Controlling value
- the value when on any one input will determine
the gates output regardless of the other inputs - (e.g. 0 on any AND gate input)
- If one input has the controlling value, the
gates output will be - c ? i, where c and i come from the following
table
15Controlling and Inverting Values
- Along the sensitized path
- any input sensitized to the fault will have a
value, call it d - all other inputs will have c (complement of
controlling value) - a non-controlling, or enabling, value
- the output will have value d ? i
d
d
1
d
d
d
could be 1/0 or 0/1
16Controlling and Inverting Values
x2
x3
0
0
x1
0
1/0
Z
1
1
x4
1/0
1/0
s-a-0
Which are controlling, which are enabling?
17Testing Digital Circuits
- Another test for another fault
- think in terms of controlling and inverting values
s-a-1
x2
x3
x1
Z
x4
18Testing Digital Circuits Redundancy
- Fault f is detectable if there exists a test t
that detects it i.e. Z(t) ? Z f (t) - However, f is undetectable if Z(x) Z f (x)
for all x - Cool! There are some circuits where even if
there is a fault in certain places, they still
work! - A circuit that contains an undetectable fault is
a redundant circuit. - The fault site obviously has no effect on the
circuit function - The circuit can be simplified you can remove
something!
19Testing Digital Circuits Redundancy
X
a
b
Y
F
c
Z
- Example
- F ab bc ac
- Is the fault Y s-a-0 detectable?
- Activate and propagate Y s-a-0
20Redundancy
- Y s-a-0 is undetectable
- F ab bc ac ab ac
- The term bc is a redundant cover in the Kmap
- its not an essential implicant of the function
the other two are - Change to circuit
- Gate Y can be removed from the circuit without
affecting the logic function. - Or you can keep it and have some fault tolerance
21Redundancy Pro and Con
- Pro and Con
- The fault is undetectable.
- This can be good! The circuit still works even
if there are certain faults in it. - Are others undetectable too? or harder to
detect - The redundant circuit requires extra hardware
extra area on the IC
22Redundancy Pro and Con
- The circuit is hazard free on transition 111 gt
011 - Hazard the value of the function takes on an
intermediate value different from the final value - With a non-redundant circuit, there is a chance
of a 1 - 0 - 1 hazard - With the redundant circuit, if the inputs change
from 111 gt 011, the output will not go to zero.
Are there other such transitions?
X
a
b
Y
c
Z
23Testing Digital Circuits Redundancy
- Removing redundant covers
- Other redundancies
- Triple modular redundancy a method for
achieving fault tolerance. - faults are correct by additional logic
- many faults would be untestable theyd be
automatically corrected - and logic synthesis would optimize the
redundancy away! - Need a test mode to disable correction
24Testing is it so simple?
- Test engineers Sherlock Holmes of the industry
- Methods for automatically generating tests were
necessary - Collectively known as ATPG gtAutomatic Test
Pattern Generation
25D-Calculus
D (Detect) 1/0 - represents a logic 1 in the
good circuit and a logic 0 in the bad circuit
Five-valued logic 0, 1, D, Dbar, X (dont care)
26D-Calculus
Truth tables for AND, OR, NAND, and NOR gates
27Definitions
- Test generation algorithms work in terms of
- Primary inputs (PI) a controllable input to a
circuit. E.g., a pin on an IC, or an output of
an FF in a scan system - Primary outputs (PO) an observable output of
the circuit. E.g., a pin on an IC, or a D input
to an FF in a scan system - Justify, justification the process of selecting
PIs to force a certain line to have a specific
value - Propagate, propagation the process of selecting
appropriate PIs that allow a discrepancy D to
be pushed to a PO - Test generation algorithms are all about
- finding the appropriate PIs to control to
activate a fault - finding the appropriate PIs to control to
propagate the fault to one of the POs.
28More Definitions
- Forward implication
- Def Knowing one or more gate inputs, imply the
output value. - Assume all gate inputs are the same value
either all c or all c - Then the output is
- output value ? i
- We can refine this if we know the controlling
value - i.e. only one of the inputs needs to have c to
know output - Backward implication
- Def Knowing the output and possibly some inputs,
imply one or more of the inputs - Assume all gate inputs are the same either all
c or c - Then the inputs are
- inputs output ? i
- We can refine this if we know the controlling
value - If the input needed to produce the output is c,
then only one input needs to have it.
29Justify Algorithm
- Justify (l , v) Recursive algorithm to justify
line l to value v - l v
- if l is a primary input return youre done on
this path - set c and i to controlling/inversion values of
gate driving l - inval v ? i
- if (inval c)
- select one input j of gate l
- Justify (j, inval)
- else
- for every input j of gate l
- Justify (j, inval)
30An example of justification
- l v
- if l is a primary input return youre done on
this path - set c and i to controlling/inversion values of
gate driving l - inval v ? i
- if (inval c)
- select one input j of gate l
- Justify (j, inval)
- else
- for every input j of gate l
- Justify (j, inval)
31Test Generation Propagate Algorithm
- Prop (l , err) Propagate value err from line l
- l err
- if line l is a primary output return youre
home - k fanout gate of line l
- c,i controlling/inversion value of gate k
- for every input j of k other than l
- Justify (j, c)
- Propagate (k, err ? i)
32Testing Digital Circuits
- What you know
- Fault models what can go wrong and how we model
it - physical and logical
- Basic idea of detection activate fault and
propagate to output - What you dont know
- how to figure out, systematically, whether the
whole thing works - how to reduce the number of faults to consider
when generating tests - Today
- Review equivalence and fault collapsing
- Begin test generation algorithms
33Detection
- Basic approach seen so far
- Select a line and a fault line l s-a-v
- Activate the fault
- Drive line l to v selecting the inputs needed
to set an internal line to a known value is
known as line justification - Activation creates a discrepancy D
- Propagate the fault
- Propagate the discrepancy D along a sensitized
path to any primary output
discrepancy
s-a-0
0
1/0
Notation good value/bad value
x
0/1
1
34Fault Dominance
- Equivalence vs. Dominance
- Dominance is a special case of fault equivalence
- Fault equivalence, if Z f (x) Z g (x) for
all xthen the faults are functionally
equivalent. - If this is true for a subset of x, then there is
a dominance relation - Dominance
- Let Tg be the set of all tests that detect a
fault g. - A fault f dominates the fault g iff f and g are
functionally equivalent under Tg. - Z f (t) Z g (t) for all t in Tg
- Tg is a subset of Tf
35Equivalence and Dominance Summary
- What are the equivalence classes?
s-a-0 s-a-1
Equivalence A0, B0, Z1
s-a-0 s-a-1
s-a-0 s-a-1
Dominance Z0 dominates A1, B1
11, 01, 10
36Aside Fault Location
- Detection got us down to three tests
- Were left with three tests for this gate if
were interested in fault detection. - If were interested in fault location, we need
more - To isolate y s-a-1
- Need to apply both 10 and 01
- 10, alone, detects the equivalent faults y s-a-1
and z s-a-0 - 01, alone, detects the equivalent faults x s-a-1
and z s-a-0 - Together, they can isolate the three faults
(assuming only one fault active).
x
sa1
z
sa0
y
sa1
37Overall process
set of faults for circuit
38Test Generation
- Toward an algorithmic means to generate test
vectors - What do we want in a test vector?
- fault activation and propagation
- if the discrepancy D wiggles (i.e. from good to
bad), then so does the output - how do we determine if a function changes with
respect to a variable - Use Automatic Test Generation algorithms (ATG)
39Primary inputs and outputs
- Test generation algorithms work in terms of
- Primary inputs (PI) a controllable input to a
circuit. E.g. A pin on an IC, or an output of
an FF in a scan system - Primary outputs (PO) an observable output of
the circuit. E.g. A pin on an IC, or a D input
to an FF in a scan system - They all operate in terms of
- finding the appropriate PIs to control to
activate a fault - finding the appropriate PIs to control to
propagate a discrepancy to one of the POs.
40Propagate, Justify
- A few definitions
- justify, justification the process of selecting
PIs to force a certain line to have a specific
value - the verb justify a 0 on the input a of gate B
- the noun justification is the process of
justifying - propagate, propagation the process of selecting
appropriate PIs that allow a discrepancy D to
be pushed to a PO - propagate the D to any output
- propagation is the process
- involves justification
41Imply all you can
- Forward implication
- Def Knowing one or more gate inputs, imply the
output value. - Assume all gate inputs are the same value
either all c or all c - Then the output is
- output value ? i
- We can refine this if we know the controlling
value - i.e. only one of the inputs needs to have c to
know output
42Look behind yourself too
- Backward implication
- Def Knowing the output and possibly some inputs,
imply one or more of the inputs - Assume all gate inputs are the same either all
c or c - Then the inputs are
- inputs output ? i
- We can refine this if we know the controlling
value - If the input needed to produce the output is c,
then only one input needs to have it.
43Justify Algorithm
- Justify (l , v) Recursive algorithm to justify
line l to value v
l v if l is a primary input return youre
done on this path set c and i to
controlling/inversion values of gate driving l
inval v ? i if (inval c) select one input
j of gate l Justify (j, inval) else for
every input j of gate l Justify (j, inval)
44An example of justification
l v if l is a primary input return youre
done on this path set c and i to
controlling/inversion values of gate driving l
inval v ? i if (inval c) select one input
j of gate l Justify (j, inval) else for
every input j of gate l Justify (j, inval)
45Test Generation Propagate Algorithm
- Prop (l , err) Propagate value err from line l
l err if line l is a primary output return
youre home k fanout gate of line l c,i
controlling/inversion value of gate k for every
input j of k other than l Justify (j,
c) Propagate (k, err ? i)
46Will this always work?
- Will justify and propagate always work?
- Circuits without reconvergent fanout
- select one and justify are each independent
of any previous justification - youre guaranteed that propagation and justify
will not interfere
47Test Generation Basic Algorithm
- Algorithm to test line l s-a-v
begin set all values to x (unknown) Justify line
l to value v if (v 0) Propagate D on
line l else Propagate D on line l end
48Automatic Test-Pattern Generation (ATPG)
- Test U2.ZN for s-a-1
- 1) Activate (excite) fault gtU2.ZN 0
- 2) Work backward gt A 0
- 3) Work forward (sensitize the path to PO)
gtU3.A2 1, U5.A2 1 - 4) Work backward (justify outputs) gtABC 110
49Reconvergent Fanout
Fault B s-a-1?
Fault U4.A1 s-a-1?
We create two sensitized paths that prevent fault
from propagating to the PO. The problem can be
solved by changing A to 0, but this breaks rules
of the ATPG! The PODEM algorithm solves the
problem.
Signal B branches and then reconverges at logic
gate U5. ATPG works.
50Test Generation example
- With reconvergent fanout
- Fanout paths from a gate reconverge at some later
gate - Inputs needed for propagation may be inconsistent
with ones needed for justification
Procedure justify G1 to 0 gt abc1 propagate
to G4 gt requires G2 1 but a1 makes
G20 Inconsistency crash and burn
Kaboom!
51Test generation example, contd
- Need to backtrack propagate on other path
52Backtracking
- Backtracking requires that a decision tree be
maintained - Each node describes a designs state
- values previously justified on lines
- implications, forward and backward
- Each arc describes a new decision
- justify a line, activate a fault
- Need to be able to go back
- to former state
53Maintaining the decision tree
Procedure justify G1 to 0 gt abc1 propagate
to G4 gt requires G2 1 but a1 makes
G20 Inconsistency propagate to G5 gt justify
G3 to 1 this works with e0
State 1 all xs
justify G1 to 0
State 1A
abc1
Prop. to G5
Prop. to G4
G3 1 e 0 win
G21, a1 inconsistency fail
State 1A1
State 1A2
Backtrack, G21 no longer part of design state.
Revert to previous state.
54Observations on approach
- Enumeration used
- justify algorithm was recursive
- When gate has controlling value on input, one
path selected - may need to backtrack and follow another
- eventually, may need to follow all
- Propagate algorithm was recursive
- When there is a fanout at a propagation point,
one path selected toward output - may need to backtrack and follow another
- eventually, may need to follow all
- The backtracking, again, is due to reconvergent
fanouts and previous values justified on them - No solution? Â redundant wrt the fault
- As it turns out
- The natural state maintenance in recursive
programs can keep track of the decision tree
55More terminology
- When propagating a discrepancy
- Often, due to fanout, there are several options
- Propagate needs to pick one for the sensitized
path - D - frontier
- The D-frontier is the set of all gates with D or
D on one or more inputs and an x on its output
(no other inputs are controlling) - This is the set from which you select a
propagation (sensitization) path
56D-Frontier
- Back to our example
- After the activation of the fault, and forward
implication, the D- frontier is ? - If D-frontier Ø, then no path to primary output
- failure, backtrack
- previous justifications have made this path
impossible
57J-Frontier
- In line justification
- The J-frontier is the set of all gates whose
output values are known, but the outputs are not
implied (yet) by the inputs - Some inputs may be known, but the current output
value is not implied - Similar to D-frontier, but looking backward
58J-Frontier
- Back to the Example
- The fault is activated and forward implication is
done - A gate is selected from the D-frontier for
propagation - In this case, G5 is the only choice
- The J-frontier is then ?
59Implication Revisited
- Implication Process
- Compute all values uniquely determined by
implication - 1, 0, D, D, x looking forward and backward
- more aggressive than previous implication
- maintain the D and J frontier
60Backward Implication
new implication front
implication front
After
Before
lt
1
x
lt1
1
x
lt
1
x
lt
0
lt0
0
1
1
x
x
0
lt0
J-frontier
J-frontier , a
a
x
a
x
lt1
1
lt
1
x
1
lt
1 gt
1
x
61Forward Implication
After
Before
0gt
0
0gt
x
x
x
1
1gt
1gt
x
1
1
0gt
0 a
0
0 a
J-front
J-front, a
x
x
1gt
0 a
1
0 a
J-front
J-front, a
lt0
x
D
D
x a
Dgt a
D-front, a
D-front
1gt
1
D
x a
D
0gt
D-front
D-front, a
0gt
0
62Where are we now?
- Pieces of test generation algorithms seen
- justify, propagate
- problems with reconvergent fanout
- need to backtrack makes for a messier algorithm
- need to keep track of state, and what
combinations have been tried before. - heuristics to guess at best next path to follow
- To come
- D algorithm
- and eventually Podem
63Implication Process Revisited
- Unique D-drive
- If there is only one gate on the D frontier,
then implication propagates D through the gate. - Its the only direction D could propagate
after
before
D
D
x
D gt
a
x
lt 1
D-frontier a
D-frontier
64All Pieces in Place
- Pieces
- Controlling and inverting values
- Fault activation
- Justification
- Propagation
- Forward/backward implication
- D and J frontiers
- Decision tree maintenance
- Discussion of the D algorithm
- note that this is a version of the D algorithm
- a number of situations have been left open, e.g.
- select an input , select a gate
- which one?
65D-Algorithm
- Initialization
- set all line values to X
- activate the target fault by assigning logic
value to that line - 1. Propagate D to PO
- 2. Justify all values
- Imply_and_check() does only necessary
implications,no choices - if D-alg() SUCCESS then return SUCCESS
- else undo assignments and its implications
66Test Generation The D Algorithm
Decorate design with all known values. Check for
inconsistencies.
- if (imply_and_check() FAIL) return FAIL
- if (error not at primary output)
- if (D-frontier Ø) return FAIL
- repeat
- select an untried gate (G) from D-frontier
- c controlling value of G
- assign c to every input of G with value x
- if (D-Alg() SUCCESS) return SUCCESS
- until all gates from D-frontier tried
- return FAIL
- if (J-frontier Ø) return SUCCESS
- select a gate G from the J-frontier
- c controlling value of G
- repeat
- select an input (j) of G with value x, assign c
to j - if (D-Alg() SUCCESS) return SUCCESS
- assign c to j / reverse decision/
- until all inputs of G are specified
- return FAIL
Push D to a primary output
Once at primary output, justify all values needed
to have D on the primary output
67A circuit and fault to test
68Tracing through an example
1
all xs
a 0, b c 1
D
0
1
1
Decisions Implications Comments a
0 Activate the fault h 1 b
1 Unique D-drive through g c 1 (the
unique path for D) g D D-frontier becomes
i,k,m
69Tracing through an example
1
all xs
1
0
D
a 0, b c 1
D
0
1
1
d 1
Decisions Implications Comments d1
Propagate through i i D d
0 D-frontier becomes k, m, n
70Tracing through an example
all xs
1
1
0
D
a 0, b c 1
1
D
0
1
D
1
0
1
d 1
1
1
1
jklm1 Bang
Decisions Implications Comments
jk1 Propagate through n lm1 nD
e0, e1 kD But k 1 Contradiction!
D-frontier remains k, m, n
71Tracing through an example
all xs
1
1
0
D
a 0, b c 1
1
0
1
D
D
0
1
d 1
1
e 1
jklm1 Bang
Decisions Implications Comments e
1 Propagate through k kD e0
j1 D-frontier becomes m, n
72Tracing through an example
all xs
1
1
0
D
a 0, b c 1
1
0
1
D
D
0
d 1
1
1
1
0
1
1
e 1
jklm1 Bang
Decisions Implications Comments
lm1 propagate through n n D f
0 f 1 m D But m 1,
contradiction! D-frontier remains m, n
lm1 Bang
73Tracing through an example
all xs
1
1
0
D
a 0, b c 1
1
D
0
1
D
D
0
d 1
1
1
1
0
1
D
e 1
jklm1 Bang
Decisions Implications Comments f
1 Propagate through m m D f 0
l 1 n D J-frontier is Null
lm1 Bang
f 1, n D party!
74What about the J-frontier?
- In this example, all inputs were easily justified
through implication - essentially, d, e, and f were primary inputs
- if these were driven by other gates, the earlier
inputs might not have been implied. e.g.
a
a
x
x
lt 0
0
x
x
J-frontier
J-frontier , a
75What about the J-frontier?
- The D-algorithm
- picks a gate from the J-frontier
- and then tries to set each input to a controlling
value - If that value fails due to imply_and_check, it
is inverted and a new input is tried - how does it handle the case where none of the
inputs should be controlling? - if (J-frontier Ø) return SUCCESS
- select a gate G from the J-frontier
- c controlling value of G
- repeat
- select an input (j) of G with value x, assign c
to j - if (D-Alg() SUCCESS) return SUCCESS
- assign c to j / reverse decision/
- until all inputs of G are specified
- return FAIL
exit here if output of gate G is justified,
possibly before setting all inputs
76J-Frontier
- Assume a change to the example circuit
- Then we would be left with elements in the
J-frontier set - J-frontier is f
- If the xs are primary inputs, this is easy
- If theyre not primary inputs,
- more gates begin to show up in J-frontier
- you may not be able to set the input you select
to the controlling value - If there is a redundancy, the whole process might
fail.
1
1
0
D
1
D
0
1
D
D
0
1
1
1
x
0
1
D
77Another example
all xs
Decision Tree
c-sa0
decisions implications comments
78Another example
all xs
c1, b1
0
0
Decision Tree
D
h1
1
1
c-sa0
D
D
j0
D
0
a1
1
d0
decisions implications comments
activate fault, unique D drive
c1,b1,gfD
h1 iD prop through i. j,kDf
hJf a1 jD, k1 prop through j. Df null.
backtrack (a x) j0 a0, kD prop
through i, fault at output d0 justify h
79Summary D algorithm
- How does it work
- Conceptually
- Activate fault and propagate
- Then justify the remaining gates
- When propagating
- assign c to other inputs of the gates on the
sensitized path - do forward and backward implication
- when going backward, specify gate inputs if they
are all c - if one input should be c, put gate into J-frontier
80Summary D algorithm
- Oh, by the way
- justify the rest of these inputs
- That is, the D-frontier is pursued with only
partial regard to whether the c values selected
are self consistent - In the process, the J-frontier grew large
- 5 gates shown highlighted
- plus the gates that drive them
- and theres lots of reconvergent fanout to
cause justification problems.
81Summary D Algorithm
- Depth-first push toward primary output
- do justification and consistency afterward as
needed - backward implication can cause problems
- use backtracking as necessary
- Exhaustive, exponential
- The number of operations performed is an
exponential function of the number of gates - This is worst case, typically only seen when a
fault turns out to be undetectable - But you dont know its undetectable until you
exhaustively try everything - Heuristics for selecting one of help reduce
search time of successful searches - Test generators are often limited in their search
depth, thus some detectable faults dont have
tests.