ECE5505 Digital Test and Verification Notes Part I

Introduction

This is the blog for VT ECE5505 digital system test and verification course summary, it is currently working as a draft and not finalized.

test0

Fault Relations Quadrant Graph

Q4: Output s-a-0

Q3: Input s-a-0

Q1: Output s-a-1

Q2: Input s-a-1

Output s-a-0
Dominates
Input s-a-1

Input s-a-1
Independent or
Equivalent to
Output s-a-1

Output s-a-1
Dominates
Input s-a-0

Input s-a-0
Independent or
Equivalent to
Output s-a-0

|
|
|
|
|
|
Input Fault -->

-- Output Fault --
|

0

test1
O dominates IInput s-a-1 equivalent to Output s-a-1Input s-a-0 equivalent to Output s-a-0Output s-a-0 dominates Input s-a-1Input 0Input 1Output 0Output 1Fault Relations for One Input, One Output

Simulations

Fault SimulationLogic Sim
Definitiongiven a circuit, fault model, a test set, determine fault coverage
determine test set quality
ATPG, a vector
1️⃣Serial
2️⃣Parallel-fault
3️⃣Parallel-pattern
4️⃣Deductive Fault Simulation
5️⃣Concurrent
6️⃣Critical Path Tracing
7️⃣Statistical
8️⃣Differential
9️⃣Combined
STAFAN
Non-statistical fault coverage estimationIndirect Implication

Fault simulation: given a circuit, a fault model and a test set, determine the fault coverage(measure of quality) of the test set.

Faults Type

Untestable fault
Potentially detectable fault0/x,1/x
Init fault

Dominance&Equivalence

EquivalenceDominance
Definitionfαfβ
fαfβfγ
Under TαTβ,in Tβ
fαfβ
Collapsing2nn+1n+1n
test setsameTαTβ
Fanouttransitivity not work1️⃣FOFree comb ckt: Test Set detect PI SA also detect all SA
2️⃣General comb ckt: test set detect PI&checkpint SA also detect all SA
3️⃣Irredundant comb ckt: a vec detects all single SA detects all testable multiple SA

Deductive Fault Simulation

Deductive fault simulation1, propagate fault sets across combinatinal circuits. Lecture #6, section 10.

✴️write down sets operation equations, then write down the fault list, always check the stems.

Yes

No

Start

Annotate Stems

Initialize fault lists for primary inputs

Get next gate in topological order

Compute gate output value

Include gate's own stuck-at faults

Propagate faults from inputs to gate output

Update fault list for gate's output

More gates to process?

Collect faults at primary outputs

End

NameInputOutputLc fault list
ORa=0,b=0c=0{LaLb}c/1ORc/0NOR
ORa=0,b=1c=1{LbLa}c/0ORc/1NOR
ORa=1,b=0c=1{LaLb}c/0ORc/1NOR
ORa=1,b=1c=1{LaLb}c/0ORc/1NOR
for NOR, c/0c/1 and c/1c/0
NameInputOutputLc fault list
ANDa=0,b=0c=0{LaLb}c/1ANDc/0NAND
ANDa=0,b=1c=0{LaLb}c/1ANDc/0NAND
ANDa=1,b=0c=0{LbLa}c/1ANDc/0NAND
ANDa=1,b=1c=1{LaLb}c/0ANDc/1NAND
for NAND, c/0c/1 and c/1c/0
NameStemBranchLc fault list
Fanouta=0b=0,c=0Lc=Lac/1
Lb=Lab/1
Fanouta=1b=1,c=1Lc=Lac/0
Lb=Lab/0
NameInputOutputLc fault list
NOTa=0c=1Lac/0
NOTa=1c=0Lac/1
NameInputOutputLc fault list
XORa=0,b=0c=0{LaLb}{LbLa}c/1
XORa=0,b=1c=1{LaLb}{LbLa}c/0
XORa=1,b=0c=1{LaLb}{LbLa}c/0
XORa=1,b=1c=0{LaLb}{LbLa}c/1
for XNOR, c/0c/1 and c/1c/0, deducted by myself.

Critical Path Tracing&Star Algorithm

Critical Path TracingStar Algorithm
definitionsensitive: az,az
critial: fault v/v detected by vec t
OcriticalIsensitiveIcritical
sufficient: Input that can set the output value
Unmarked VUntestable
stemstem analysis: for all fanouts, for each fanout, if there exists a sensitive path that connect to the reconvergence gate(no need to be sensitive input), it so cannot traceback to stem.can track back to stem
AND, NAND\2

RuleEquation 1(AND)Equation 2(OR)
De Morgan’s LawsABA+BA+BAB
distributiveA(B+C)=(AB)+(AC)A+BC=(A+B)(A+C)
associative\3

Since D algorithm needs to init with X, frontiers are needed.

NameInputOutputUsage
D-Frontier4 on their inputs.))
D/DX
D (or D)XPODEM: D-Frontier Empty then backtrace
Speed up D-Algorithm
J-Frontier5
XD/D
not justifiedKnownSpeed up D-Algorithm
E-Frontier6
KnownKnown
0,1,X,D,D0,1,X,D,DPODEM with same E-Frontier, outside E=Frontier could copy PI values

PODEM7

Path-Oriented DEcision Making

D algorithm and PODEM finding one vector not in linear way but in binary tree way in the whole vector space, rather than find all in Boolean Differences.

Flowchart

Success

Failure

Yes

No

Yes

No

Yes

No

Possible

Not Possible

Yes

Start

Initialize Circuit

Select Target Fault

Assign Objectives

Backtrace

Imply

Backtrack

Conflict?

All Objectives Satisfied?

Simulate Fault

Fault Detected?

Test Found

All Faults Tested?

End

  • pick objective (excitation or propagation of D)
  • backtrace from objective to PI that is X, if can’t backtrace, backtrack
  • objective->backtrace/backtrack->logic simulation
  • backtrack: reverse decisions
  • backtrace: tracing backwards
PODEMD-Algorithm
✅Decisions on PIs only
✅Values assigned to PIs only
✅No internal value conflicts
❌Decisions on any gate
❌Values assigned anywhere
❌Possible internal values conflicts

Decision on backtrack BETTER

output=0output=1
ANDselect easier oneselect hard one first then easier one
ORselect hard one first then easier oneselect the easier one

Cost to decide which is easier

by distance: distance of gate from PI to PO but cannot guarentee easier

Implications

Make better decisions by checking implications before justify/propagate, implications knowledge as a graph to save storage

contra-positive law for non-trivial logic: if ab, then ba

Indirect implications, do logic simulation, add new values and implications

Controllability Observability Probability

signals uncorrelated or independent meaning no signal reconvergence, not consider circuit structure, observability computatoin similar to STAFAN. Consider the PI controllability and PO observability to be 0.5.

d=abcPd=PaPbPcPdˉ=1Pd\begin{align} d&=a\cdot b\cdot c\\ P_{d}&=P_{a}\cdot P_{b}\cdot P_{c}\\ P_{\bar{d}}&=1-P_{d} \end{align}
CxOx
x=PI0.5
x=PO0.5 from YouTube
1 from class
x=abCx=CaCb
Cx=1CaCb
Oa=OxObervabilityCbSensitization of a
x=a+bCx=1(1Ca)(1Cb)
Cx=CaCb
Oa=OxObervability(1Cb)Sensitization of a
from stem x to a and bCx=Ca=CbOx=1(1Oa)(1Ob)
Testability COP8

Sensitization: similar to boolean diff, so boolean diff is observability, compute P forward and O backwards. Observability similar to STAFAN.

S(l)=PaPbOl=OmSl\begin{align} S\left(l\right)=P_{a}\cdot P_{b}\\ O_{l}=O_{m}\cdot S_{l} \end{align}

SCOAP: Controllability/Observability9

C1 controlability of value to 1, C0 controlability of value to 0, O overservability. Values are integer, small values means easy for controllability. ffo() means fanout penalty according to level or number of fanouts.

C0,C1O
d=abcC0(d)=min(C0(a),C0(b),C0(c))+ffo(d)
Special case10
C1(d)=max(C0(a),C0(b),C0(c))+ffo(d)
O(a)=O(d)+C1(b)+C1(c)
z=w+x+yC0(z)=max(C0(w),C0(x),C0(y))+ffanout(z)
C1(z)=min(C0(w),C0(x),C0(y))+ffo(d)
O(w)=O(z)+C0(x)+C0(y)
a=b¯C0(b)=C1(a)+ffo(b)
C1(b)=C0(a)+ffo(b)
O(a)=min(O(b),O(c))
11
STAFAN
df=Pfdet=CO
PfndetN=1(1df)n
PfdetN1=1(1(1df)n)
independent
fanout free
controlability: C
observability: O
probability related concepts

Fanout-oriented TG(FAN)

multiobjective, headlines: singals at the output of fanout-free regions

Dominator

Dominator: gate g of a signal s, whree all paths from signal s to all POs must pass through g.

Can be used to set objectives for a fault, since the dom(g) needs to be D,D,X in order to test.

dom(g)={{succ(g)}dom(succ(g))Include successor and its domain,if #fanout(g)=1one successorsucc(g)dom(succ(g))Intersection for all successor,if #fanout(g)>1multiple successors\begin{aligned} \text{dom}(g) &= \begin{cases} \underbrace{\{\text{succ}(g)\} \cup \text{dom}(\text{succ}(g))}_{\substack{\color{blue}{\text{Include successor and its domain}}}} , & \text{if } \underbrace{\#\text{fanout}(g) = 1}_{\substack{\color{green}{\text{one successor}}}} \\[4ex] \underbrace{\bigcap_{\forall succ(g)} \text{dom}(\text{succ}(g))}_{\substack{\color{red}{\\\text{Intersection for all successor}}}} , & \text{if } \underbrace{\#\text{fanout}(g) > 1}_{\substack{\color{green}{\text{multiple successors}}}} \end{cases} \end{aligned}

Dynamic dominator: when some PIs are assigned, existing X-paths reduce, more dominators possible.

Satisfiability-Based ATPG

SAT: given a formula f, derive a value assignment that will satisfy f.

aba+bbab+a\begin{align} a\rightarrow b &\equiv \overline{a}+b\\ b\rightarrow a &\equiv \overline{b}+a \end{align}
SATz=xy=(xyz)(zxy)=(xy+z)(z+xy)=(x+y+z)(z+x)(z+y)\begin{align} \underset{\color{red}{z=x\cdot y}}{\text{SAT}}&=(xy\rightarrow z)\cdot (z\rightarrow xy)\\ &=(\overline{xy}+z)\cdot (\overline{z}+xy)\\ &=(\overline{x}+\overline{y}+z)\cdot (\overline{z}+x)\cdot(\overline{z}+y) \end{align}
SATz=x+y=(x+yz)(zx+y)=(x+y+z)(z+x+y)=(xy+z)(z+x+y)=(x+z)(y+z)(z+x+y)\begin{align} \underset{\color{red}{z=x+y}}{\text{SAT}}&=(x+y\rightarrow z)\cdot (z\rightarrow x+y)\\ &=(\overline{x+y}+z)\cdot (\overline{z}+x+y)\\ &=(\overline{x}\cdot\overline{y}+z)\cdot(\overline{z}+x+y)\\ &=(\overline{x}+z)\cdot(\overline{y}+z)\cdot(\overline{z}+x+y) \end{align}
SATx=y=(xy)(yx)=(x+y)(x+y)\begin{align} \underset{\color{red}{x=\overline{y}}}{\text{SAT}}&=(x\rightarrow \overline{y})\cdot (\overline{y}\rightarrow x)\\ &=(\overline{x}+\overline{y})\cdot (x+y) \end{align}
SATz=xy=(xyz)(zxy)=(xy+z)(z+xy)=(x+y+z)(x+y+z)(x+y+z)(x+y+z)\begin{align} \underset{\color{red}{z=x\oplus y}}{\text{SAT}}&=(x\oplus y\rightarrow z)\cdot (z\rightarrow x\oplus y)\\ &=(\overline{x\oplus y}+z)\cdot (\overline{z}+x\oplus y)\\ &=(\overline{x}+y+z)\cdot(x+\overline{y}+z)\cdot (\overline{x}+\overline{y}+\overline{z})\cdot (x+y+\overline{z}) \end{align}
[a110a12Da13elements0/01/0X/0a21middlea221a23entries0/X1/1X/0a31Da32rowa33X0/11/XX/X]\begin{bmatrix} \overset{\text{\textcolor{red}{0}}}{\phantom{a_{11}}} & \overset{\textcolor{red}{D}}{\phantom{a_{12}}} & \overset{\text{elements}}{\phantom{a_{13}}} \\[-1ex] \color{red}{0/0} & \textcolor{red}{1/0} & \textcolor{green}{X/0} \\[2ex] \overset{\text{middle}}{\phantom{a_{21}}} & \overset{\textcolor{red}{1}}{\phantom{a_{22}}} & \overset{\text{entries}}{\phantom{a_{23}}} \\[-1ex] \textcolor{green}{0/X} & \textcolor{red}{1/1} & \textcolor{green}{X/0} \\[2ex] \overset{\textcolor{red}{\overline{D}}}{\phantom{a_{31}}} & \overset{\text{row}}{\phantom{a_{32}}} & \overset{\textcolor{red}{X}}{\phantom{a_{33}}} \\[-1ex] \textcolor{red}{0/1} & \textcolor{green}{1/X} & \textcolor{red}{X/X} \end{bmatrix}

Glossary

#5

Fault Equivalence

Properties

def: faults produce same output

transitivity: f1->f2->f3, trivial

Relating Faults to Test Vectors

Equivalent Faults Have Same Detection Vectors

Equivalence Collapsing Reduces Faults

from 2n to n+2 Faults

⚠️Faults on Fanout Stems/Branches

Fault Dominance

Tα = Tβ for Equivalent Faults
reverse wrong🛑

Fault α Dominates β if α ≡ β for All Vectors in Tβ

If β is Detected, α is Definitely Detected

If Two Faults Dominate Each Other, They are Equivalent

Use Dominance to Collapse Faults

Theorem

2️⃣: General Combinational Circuit

1️⃣: Fanout-Free Combinational Circuit

Test Set Detecting PI Faults Also Detects All Faults

Test Set Detecting Checkpoint Faults Detects All Faults

3️⃣: Irredundant Circuit

Test Set Detecting Single Faults Also Detects Multiple Faults

Fault Classification

1️⃣Untestable Fault
2️⃣Potentially Detectable Fault
3️⃣Initialization Fault
4️⃣X-Fault on Fanout
5️⃣Hyperactive Fault

#6

Fault Simulation Overview

Determine Fault Coverage for Test Set

Fault List that's Collapsed

Fault is Removed Once Detected

defect level
reject rate

Uses of Fault Simulation

1️⃣Determine Quality of Test Set

2️⃣Drop Incidentally Detected Faults in ATPG

3️⃣Help Narrow Down Candidate Fault Sites in Diagnosis

Techniques for Fault Simulation

Serial Fault Simulation

Parallel-Fault Simulation

Parallel-Pattern Simulation

Deductive Fault Simulation

Concurrent Fault Simulation

Statistical Simulation

Differential Fault Simulation

Serial Fault Simulation Process

Inject Fault and Schedule Event

Simulate and Propagate Event to Primary Output

Check for Fault Detection at Primary Output

Parallel-Fault Simulation Process

Simulate Multiple Faults Simultaneously

Check Bit Positions for Fault Detection

Parallel-Pattern Simulation Process

Simulate Multiple Vectors Simultaneously

Check Bit Positions for Fault Detection

Propagate Fault Sets Across Combinational Circuit

Apply Propagation Rules

Simulate Differences Between Consecutive Faults

Force Values Instead of Injecting/Removing Faults

Create List of Replica Nodes for Each Fault at Every Gate

deductive fault sim with a list

#7

PROOFS
Parallel Fault Sim

Inject Fault by Inserting Extra Gate

If Fault Not Excited
Excited&Blocked
Do Not Inject

Fault Simulation in Sequential Circuits

Store Fault Effects at Flip-Flops

Insert Fault Effects from Previous Time Frame

Speeding Up Fault Simulation

Reduce Number of Events

Fault Grouping

Static Fault Grouping

Random, Depth-First, Breadth-First Reordering

DF: no events under
BF: no events on left

Dynamic Fault Grouping

Groups: Inactive
Excitable
Normal
Hyperactive

Hyperactive: propapates to many gates but not detected

Reorder by put hyperactive together

Eliminate Potential Fault Effects
1/x, 0/x

inability to init

Faultsim from Every Starting State

truly detect

uninitable states

Statistical Sampling of Initial States

detection probability

Determine Fault Coverage with Logic Simulation

Critical Path Tracing

1️⃣Logic Sim
2️⃣Mark Sensitive
3️⃣trace back

stem

Star Algorithm for Fault Detection

1️⃣Logic Sim
2️⃣Mark *
3️⃣trace back&arcoss fanout

#8

Fault Grading / Coverage Estimation

Motivation: Quick Coverage Estimate

Fault Sampling

Sample a Subset of Faultlist F

Run Fault Simulation on Sample

Fault Coverage Estimation Based on Sample

sample size

✅fc
🛑size of faultlist

Vector Sampling

Sample Test Set T

Works for Combinational Circuits

STAFAN
✴️Logic Sim only
fanout free

Signal=1 Prob based on test set

Controllability
Observability

⚠️3 AND
3 OR
NOT
fanout

⚠️Fault Detectability

Prob a F not detected by n Vs

Prob a F is deted by at least 1 of n Vs

Exptation Nums of Faults Detected

Non-Statistical Fault Coverage Estimation

Motivation: Handle Hyperactive Faults in Sequential Circuits

Categorize Faults Based on Activity and Detection Sequence

WANT

elim hyperactive Fs early
elim active but undect faults early

Hyperactive Fault Handling

Declare Faults Undetected After k Time Frames

Suppress Potential Effects of Hyperactive Faults

make X=fault free val

Over-specify potential effects

x=opposite of fault free val

Avoiding Active But Unpropagated Faults

Order Faults in Breadth-First Manner

Mark Unpropagated Faults as Unpropagatable

Defect Coverage

Fault Coverage Only Measures Specific Fault Models stuckat

Increase Defect Coverage by Testing Multiple Fault Models

Detect Same Fault Multiple Times for Higher Observability

#13

Testing Acyclic Sequential Circuits

Transform to Balanced Combinational Circuit

Apply Combinational ATPG

Transform Test Vectors to Test Sequence

Balanced Model

Internal Balancing Between Nodes

Strongly Balanced: All Paths to PIs Have Same Depth

Balanced Model Generation

Compute PO Weight: Maximum Sequential Depth

Duplicate/Split Gates as Needed

Simulation-Based Sequential ATPG

Avoid Backtracing/Backtracking

Use Random Test Generation

CONTEST Algorithm

Phase 1: Fault-Free Initialization

Phase 2: Concurrent Fault Detection

Phase 3: Single Fault Targeting

GA-Test

Use Genetic Algorithm to Optimize Test Vectors

No Single Target Fault Phase

DIGATE Algorithm

Distinguishing Sequence Learning

Application to ATPG: Distinguish Faulty vs Fault-Free Machines

State Relaxation & Justification

Use Set/Reset Sequences to Guide GA

Pseudo-Register Justification

Set Groups of FFs to Specific Values

STRATEGATE: State Traversal Based

Use Similar Previously Visited States to Justify Target States

Logic-Simulation Based Sequential ATPG

Traverse Circuit States to Detect More Faults

Need to Differentiate New States

  1. Lec 6: Fault Simulation📁[↩]
  2. a=0)\cdot (b= 0) \rightarrow c=0/1\)
    (a=0)(b=1)c=0/1
    (a=1)(b=0)c=0/1
    (a=1both)(b=1both)c=1/0
(a=0either)(b=0either)c=0/1
(a=0)(b=1)c=0/1
(a=1)(b=0)c=0/1
(a=1both)(b=1both)c=1/0
OR, NOR(a=0both)+(b=0both)c=0/1
(a=0)+(b=1)c=1/0
(a=1)+(b=0)c=1/0
(a=1)+(b=1)c=1/0
NOT(a=1)c=0
(a=0)c=1
XOR, XNOR(a=0both)(b=0both)c=0/1
(a=0both)(b=1both)c=1/0
(a=1both)(b=0both)c=1/0
(a=1both)(b=1both)c=0/1

ATPG

Automatic test pattern generation

Boolean Difference

Expensive for large circuits, regarding time and space. D-algorithm and PODEM are used since one vector is enough for testing.

Bα/xBoolean Diff=α(x)faultαstxdfz(α)dα(x)PO z Val Diff=α(x)(fz(α=0))(fz(α=1))=α(x)[fz(α=0)fz(a=1)+fz(a=0)fz(a=1)]\begin{align} \underset{\color{green}{\text{Boolean Diff}}}{B_{\alpha/x}}&= \underset{\color{red}{\text{fault}\:\alpha\: \text{st}\: x}}{\alpha\left ( x \right )} \cdot \underset{\color{blue}{\text{PO }z\text{ Val Diff}}}{\frac{\mathrm{d} f_{z}\left(\alpha\right)}{\mathrm{d} \alpha\left ( x \right )}}\\ &=\alpha\left(x\right) \cdot \left(f_{z}\left( \alpha=0 \right)\right)\oplus \left(f_{z}\left( \alpha=1 \right)\right)\\ &= \alpha\left(x\right) \cdot \left[ f_{z}\left( \alpha=0 \right)\cdot \overline{ f_{z}\left( a=1 \right)}+\overline{f_{z}\left( a=0 \right)}\cdot f_{z}\left( a=1 \right)\right] \end{align}
Bα/xBoolean Diff=α(x)Fault α st xdfz[α(x)]dα(x)PO z Val Diff=α(x)Excite fault[fz(α=0)fz(α=1)XOR of output values]=α(x)Excite fault[fz(α=0)fz(α=1)+fz(α=0)fz(α=1)Expanded XOR operation: sensitize difference for propagation]\begin{aligned} \underbrace{B_{\alpha/x}}_{\substack{\color{green}{\text{Boolean Diff}\\}}} &= \underbrace{\alpha(x)}_{\substack{\color{red}{\text{Fault }\alpha\\\text{ st }x}}} \cdot \underbrace{\frac{\mathrm{d}f_z\Big[\alpha(x)\Big]}{\mathrm{d}\alpha(x)}}_{\substack{\color{blue}{\text{PO }z \text{ Val Diff}}}} \\[2ex] &= \underbrace{\alpha(x)}_{\substack{\color{red}{\text{Excite fault}}}} \cdot \Big[\underbrace{f_z(\alpha=0) \oplus f_z(\alpha=1)}_{\color{blue}{\text{XOR of output values}}}\Big] \\[2ex] &= \underbrace{\alpha(x)}_{\substack{\color{red}{\text{Excite fault}}}} \cdot \Big[\underbrace{f_z(\alpha=0) \cdot \overline{f_z(\alpha=1)} + \overline{f_z(\alpha=0)} \cdot f_z(\alpha=1)}_{\color{blue}{\text{Expanded XOR operation: sensitize difference for propagation}}}\Big] \end{aligned}
dxda=(x(a=0))(x(a=1))=x(a=0)x(a=1)+x(a=0)x(a=1)\begin{align} \frac{d x}{da}&= \left(x\left( a=0 \right)\right)\oplus \left(x\left( a=1 \right)\right)\\ &= x\left( a=0 \right)\cdot \overline{ x\left( a=1 \right)}+\overline{x\left( a=0 \right)}\cdot x\left( a=1 \right) \end{align}

Boolean Algebra

Boolean Algebra((🔗[↩]

  • AB)C=A(BC)\)
  • (A+B)+C=A+(B+C)
    Boolean Algebra

    D Algorithm

    Init with X, Justify recursively to PI and Propagate by recursively backtrack

    Frontiers((D-Algorithm📁[↩]
  • All gates whose output values are X, but have D (or \(\overline{D}\[↩]
  • Justification Frontier: All gates whose output values are known (implied by problem requirements) but are not justified by their gate inputs.[↩]
  • Evaluation, input and output are known[↩]
  • Combinational ATPG, PODEM📺[↩]
  • 6 3 Testability COP📺[↩]
  • SCOAP: Sandia Controllability Observability Analysis Program[↩]
  • C0(g)=level(g) in fanout free circuits if circuit contains only AND gates[↩]
  • 6 1 Testability Intro📺[↩]

  • Posted

    in

    by

    Tags:

    Comments

    One response to “ECE5505 Digital Test and Verification Notes Part I”

    1. […] ECE5505 Digital Test and Verification Notes Part I […]

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    🧭