04.11.2014 Views

36~chapter 04 atpg.pdf

36~chapter 04 atpg.pdf

36~chapter 04 atpg.pdf

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!