36~chapter 04 atpg.pdf
36~chapter 04 atpg.pdf
36~chapter 04 atpg.pdf
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapter 4 Exercise Solutions<br />
4.1 (Random Test Generation)<br />
We would enumerate the pseudo-exhaustive vectors for each of the three<br />
primary output. Let T1 be the exhaustive test set of 8 vectors for inputs<br />
a, b, c for output x, the other 4 primary inputs can take on random values.<br />
Likewise, T2 is the test set of 16 vectors for inputs c, d, e, f for primary<br />
output y, where the remaining 3 primary inputs take random values.<br />
Finally, T3 is the test set of 8 vectors for the last primary output z.<br />
The union of T1, T2, and T3 forms the pseudo-exhaustive test set.<br />
This is not the minimal pseudo-exhaustive test set, since there are some<br />
repeated vectors in T1, T2, and T3.<br />
4.2 (Random Test Generation)<br />
Recall that the detection probability is<br />
d<br />
T<br />
f<br />
f<br />
= n , where f<br />
T is the set<br />
2<br />
of vectors that can detect fault f, and n is the number of inputs in the<br />
circuit. In this circuit, we have 3 inputs, so there is a total of 8<br />
possible vectors.<br />
(a) For e/0, two vectors, abc = {011, 111} can detect it. Thus<br />
d<br />
f<br />
= 0.25<br />
(b) For e/1, one vector, abc = 010 can detect it. Thus<br />
d<br />
f<br />
= 0.125<br />
(c) For c/0, two vectors, abc = {011, 101} can detect it, Thus<br />
d<br />
f<br />
= 0.25<br />
4.3 (Boolean Difference)<br />
ence)<br />
(a) The set of vectors that can detect e/0 is<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 1/8
z<br />
( e = 1) ⋅ = e ⋅ ( z ⋅ ( e = 0) ⊕ z( e = 1)<br />
)<br />
= e ⋅<br />
= e ⋅<br />
= e ⋅<br />
d<br />
d<br />
( g ⊕ ( g + b)<br />
)<br />
g ⋅ g m b + g ⋅ ( g + b)<br />
= e ⋅ g ⋅ b<br />
e<br />
( )<br />
= e ⋅ ac ⋅b<br />
( a + c)<br />
⋅b<br />
= bc + abc<br />
= bc<br />
Thus, the set of vectors is {011, 111}.<br />
(b) The set of vectors that can detect e/1 is<br />
z<br />
( e = 0) ⋅ = e ⋅ ( z ⋅ ( e = 0) ⊕ z( e = 1)<br />
)<br />
= e ⋅<br />
= e ⋅<br />
= e ⋅<br />
d<br />
d<br />
( g ⊕ ( g + b)<br />
)<br />
g ⋅ g m b + g ⋅ ( g + b)<br />
= e ⋅ g ⋅ b<br />
( )<br />
= e ⋅ ac ⋅b<br />
e<br />
( a + c)<br />
= bce + abe<br />
⋅b<br />
= abe<br />
= abc<br />
Thus, the set of vectors is {010}.<br />
(c) The set of vectors that can detect c/0 is<br />
d<br />
z<br />
( c = 1) ⋅ = e ⋅ ( z ⋅ ( c = 0) ⊕ z( c = 1)<br />
)<br />
dc<br />
= c ⋅ a ⊕ b<br />
= c ⋅<br />
( )<br />
( a ⋅b<br />
+ a ⋅ b)<br />
= abc + abc<br />
Thus, the set of vectors is {011, 101}.<br />
4.4 (Boolean Difference)<br />
(a) The set of vectors that can detect a/1 is<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 2/8
i<br />
( a = 0) ⋅ = a ⋅ ( i ⋅ ( a = 0) ⊕ i( a = 1)<br />
)<br />
= a ⋅<br />
= ab<br />
d<br />
da<br />
( 0 ⊕ b)<br />
Thus, the set of vectors is {01}.<br />
(b) The set of vectors that can detect d/1 is<br />
di<br />
( d = 0) ⋅ = d ⋅ ( i ⋅ ( d = 0) ⊕ i( d = 1)<br />
)<br />
dd<br />
= d ⋅<br />
= d ⋅ ab<br />
( 0 ⊕ ab)<br />
But it is impossible to set a=1 and d=0 simultaneously. Thus, the set<br />
of vectors is ∅ .<br />
(c) The set of vectors that can detect g/1 is<br />
i<br />
( g = 0) ⋅ = g ⋅ ( i ⋅ ( g = 0) ⊕ i( g = 1)<br />
)<br />
= g ⋅<br />
= g ⋅ ab<br />
= ab ⋅ ab<br />
= 0<br />
d<br />
dg<br />
( 0 ⊕ ab)<br />
Thus, the set of vectors is ∅ .<br />
4.6 (Boolean Difference)<br />
Since α and β are indistinguishable, any test t that detects one must<br />
also detect the other. In other words, f ( t) f ( t)<br />
α<br />
≡<br />
β<br />
for any detection<br />
vector t. On the other hand, if a vector v does not detect α , it must<br />
also not detect β . In this case, f ( v) ≡ f ( v) ≡ f<br />
α<br />
β<br />
, where f is the<br />
fault-free circuit. Thus, for all vectors t, we have f ( t) f ( t)<br />
Therefore, f ⊕ f = 0 .<br />
4.7 (D Algorithm)<br />
α<br />
β<br />
α<br />
≡<br />
β<br />
.<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 3/8
XNOR 0 1 D D X<br />
0 1 0 D D X<br />
1 0 1 D D X<br />
D D D 1 0 X<br />
D D D 0 1 X<br />
x X X X X X<br />
4.8 (D Algorithm)<br />
Initially, we place a D on b. The D-frontier at this time includes {d,<br />
e}. Next, we pick a D-frontier to propagate the fault effect across.<br />
Suppose we pick d. Then, the decision a=0 is made. At this time, the<br />
D-frontier becomes {x, e}. We pick the D-frontier that is closest to a<br />
PO. Thus, we pick x. The next decision is e1=0. This decision implies y=1<br />
and z=D. In other words, the fault-effect has been propagated all the way<br />
to the PO. The J-frontier consists of {e1=0, b= D }. To justify e1=0, c=0<br />
is sufficient. Justifying b= D is likewise straightforward, simply by<br />
setting b=0. Thus the vector abc=000 detects the target fault b/1.<br />
A similar decision process is made for the target fault e/0. However, in<br />
this case, one would conclude that the fault is untestable.<br />
4.9 (D Algorithm)<br />
The valid value combinations for gate g include:<br />
{Dxx, Dx1, D1x, D xx, D x1, D 1x, xDx, xD1, 1Dx, x D x, x D 1, 1 D x, xxD, x1D,<br />
1xD, xx D , x1 D , 1x D }<br />
4.10 (PODEM)<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 4/8
First, we need to excite the fault. Since the fault is on a PI, the first<br />
objective is b= D . Backtracing from the objective gives us b=0 as the first<br />
decision. Logic simulating the current set of decisions made does not<br />
change values of other gates. The D-frontier at this time includes {d,<br />
e}. Next, we pick a D-frontier to attempt to propagate the fault effect<br />
across. Suppose we pick d. Then, backtracing from the side input gives<br />
us a=0 as the next decision. Logic simulating a=0 together with previous<br />
decisions gives us a new D-frontier {x, e}. We pick the D-frontier that<br />
is closest to a PO. Thus, we pick x. We again backtrace from the side input<br />
e1=0 through an X-path. This leads us to c=0. Logic simulating c=0 with<br />
earlier decisions gives us e=0, e1=0, e2=0, y=1, x=D, z=D. At this time<br />
the fault has been detected. Thus the vector abc=000 detects the target<br />
fault b/1.<br />
A similar decision process is made for the target fault e/0. However, in<br />
this case, one would conclude that the fault is untestable.<br />
4.12 (Static Implications)<br />
Since we know that f=1 implies x=1 and z=0, we can make {f=1, x=1, z=0}<br />
as multiple objectives. Thus, any decisions selected should not violate<br />
any of the objectives at any time. Likewise, we can use the implications<br />
of z=0 to add to the multiple objectives.<br />
4.13 (Static Implications)<br />
(a) The implications for g=0 include<br />
{a=0, b=1, c=1, d=0, e=0, f=1, g=0, h=0}<br />
(b) The implications for $f=0$ include<br />
{a=1, b=1, c=0, d=1, e=1, f=0, g=1, h=0}<br />
4.15 (Dynamic Implications)<br />
Since justifying e=1 via a=0 is not possible, it must be justified via<br />
b=0. Thus, e=1 → b=0 is a dynamically learned implication.<br />
4.17 (Untestable Fault Identification)<br />
(a) The static logic implications of b=0 include<br />
{b=0, c=0, d=0, e=1, g=0, z=0}<br />
(b) The static logic implications of b=1 include<br />
{b=1, c=1, d=1}<br />
(c) The set of faults that are untestable when b=0 is<br />
{b/0, c/0, d/0, e/1, g/0, z/0, a/0, a/1, f/0, f/1, d/1, g/1, e/0, f/0,<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 5/8
f/1, a/0,a/1, c/1}<br />
(d) The set of faults that are untestable when b=1 is<br />
{b/1, c/1, d/1}<br />
(e) The set of untestable faults based on the stem analysis of b is the<br />
intersection of the (c) and (d), which is {c/1, d/1}<br />
4.18 (PODEM)<br />
(a) c/0: The first objective is c=1, which backtraces to b=1. Next, to<br />
propagate the fault, the objective is a=1. At this time the D-frontier<br />
is {g}. The next objective is f=0. With simulation, the fault is detected.<br />
So the vector is abf=110.<br />
(b) c/1: The first objective is c=0, which backtraces to b=0. Next, to<br />
propagate the fault, a=1. At this time the D-frontier is g. The next<br />
objective is f=0. With fault simulation we obtain that the fault is blocked.<br />
So we backtrack to f=1. This also blocks the fault. So we revert f=X and<br />
backtrack to a=0. This also blocks the fault. Finally we backtrack to b=1.<br />
This cannot excite the fault. We are now at the root of the decision tree.<br />
No more backtracks are possible. Thus the fault is untestable.<br />
(c) d/0: The first objective is d=1, which backtraces to b=1. With<br />
simulation we obtain the D-frontier to be {z}. The next objective is g=1.<br />
Backtracing through an X-path leads us to f=0. Simulating at this time,<br />
the D-frontier is still the same. The previous objective g=1 is not yet<br />
justified. So we backtrace from g=1 again via an X-path. This time it takes<br />
us to a=1. With simulation the fault is detected. So the vector is abf=110.<br />
(d) d/1: The first objective is d=0, which backtraces to b=0. At this time<br />
the D-frontier is empty since g=0. So we backtrack to b=1. But this cannot<br />
excite the fault. Thus we backtrack again. No backtracks are possible,<br />
thus the fault is untestable.<br />
4.21 (Untestable Fault Identification)<br />
If a fault f is combinationally untestable, then there exists no input<br />
(PPI, PI) that can excite it and propagate it to any of PPO or PO. This<br />
means that it is impossible in the sequential circuit that can take the<br />
circuit to a state ∈ PPI with any PI that can excite f and propagate its<br />
fault effects to either primary outputs or to the next-state flip-flops.<br />
Thus, f is also sequentially untestable.<br />
4.22 (FAN)<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 6/8
Since both x and y are headlines, it suffices to backtrace to only these<br />
points instead of primary inputs. Furthermore, since we know that y=1<br />
→ x=0, when we backtrace to x, if the required value on x is 1, then<br />
we can immediately backtrack in the decision process.<br />
4.23 (Sequential ATPG)<br />
(a) In time-frame 0, we propagate the D to output z, thus we need the<br />
flip-flop value to be 1. In time-frame -1, the flip-flop value=1 can be<br />
obtained by either the flip-flop value in time-frame -2 to be 1, or a=1.<br />
However, since a=0 (the target fault), we must backtrace to the flip-flop<br />
in time-frame -2. This will repeat indefinitely, resulting the fault to<br />
be untestable using the 5-valued logic.<br />
(b) In time-frame 0, we propagate the D to output z, thus we need the<br />
flip-flop value to be 1/X in the 9-valued logic. In time-frame -1, the<br />
flip-flop value=1/X can be obtained via either the flip-flop in time-frame<br />
-2 or via a. In fact, a=1/0 (the target fault) suffices our need of a=1/X.<br />
Thus, the vector sequence (a=1, a=X) is the test sequence.<br />
4.24 (Sequential ATPG)<br />
Yes, two faults a/0 and a/1 can be detected by the same test sequence.<br />
Consider the test sequence v 0<br />
, v 1<br />
, ..., v k<br />
, where v<br />
k −1<br />
excites a/0 and<br />
propagates it to a state element, and v k<br />
both propagates the fault-effect<br />
from the flip-flop to a PO as well as excites and propagates the other<br />
fault a/1 to a PO.<br />
4.25 (Sequential ATPG)<br />
The reachable states are {00, 01, 11}. The state diagram can be obtained<br />
by constructing the truth table for the present-state and the PIs.<br />
4.29 (Advanced Simulation-Based ATPG)<br />
The sequence that is able to propagate a fault-effect from a flip-flop<br />
FF<br />
i<br />
to a primary output for fault f 1<br />
indicates that this propagation<br />
sequence does not incidentally mask the fault f 1<br />
along the way. This<br />
propagation sequence will be ineffective for another fault<br />
f j<br />
if the<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 7/8
fault-effect from<br />
FF<br />
i<br />
is masked with the fault site for fault<br />
f j<br />
.<br />
4.31 (Path-Delay ATPG)<br />
(a) There are 14 paths in the circuit:<br />
↑ afgj, ↓ afgj, ↑ bgj, ↓ bgj, ↑ befgj, ↓ befgj, ↑ cefgj, ↓ cefgj, ↑ chj,<br />
↓ chj, ↑ dhj, ↓ dhj,↑ ij, ↓ ij.<br />
(c) Both ↑ afgj and ↓ afgj are unsensitizable.<br />
4.32 (Path-Delay ATPG)<br />
Any path that requires a=1 and b=0 as a necessary condition would be<br />
unsensitizable.<br />
4.34 (Path-Del<br />
Delay ATPG)<br />
If the untestable path-delay fault is longer than the testable critical<br />
path, then incidental detection could lead to yield loss.<br />
4.36 (Bridging Faults)<br />
The largest current is drawn from Vdd to Ground if the resistance between<br />
them is minimal. So any test that can turn on parallel transisters at a<br />
same time in both the AND and OR gates such that a conduction occurs from<br />
Vdd to Ground would induce the largest current.<br />
VLSI Test Principles and Architectures Ch. 4 – Test Generation – P. 8/8