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
graph TD
    subgraph "Fault Relations Quadrant Graph"
        %% Define the axes
        style xAxis stroke-width:2px,stroke:#333
        style yAxis stroke-width:2px,stroke:#333
        xAxis["|
        |
        |
        |
        |
        |
        Input Fault -->"]
        yAxis["--  Output Fault  --
        |"]
        
        %% Define quadrants
        subgraph "Q2: Input s-a-1"
        q2[" Input s-a-1
        Independent or
        Equivalent to
        Output s-a-1"]
        end
        
        subgraph "Q1: Output s-a-1"
        q1[" Output s-a-1
        Dominates
        Input s-a-0"]
        end
        
        subgraph "Q3: Input s-a-0"
        q3[" Input s-a-0
        Independent or
        Equivalent to
        Output s-a-0"]
        end
        
        subgraph "Q4: Output s-a-0"
        q4[" Output s-a-0
        Dominates
        Input s-a-1"]
        end
        
        %% Position quadrants
        q2 --> q1
        q3 --> q4
        
        %% Add origin label
        origin["0"]
        
        %% Style
        style q1 fill:#f9f,stroke:#333,stroke-width:2px
        style q2 fill:#bbf,stroke:#333,stroke-width:2px
        style q3 fill:#bbf,stroke:#333,stroke-width:2px
        style q4 fill:#f9f,stroke:#333,stroke-width:2px
        style origin fill:#fff,stroke:#fff
    end
test1
%%{init: {"quadrantChart": {"chartWidth": 550, "chartHeight": 550}, "themeVariables": {"quadrant1Fill": "#f0f1f5","quadrant2Fill": "#f0f1f5","quadrant3Fill": "#f0f1f5","quadrant4Fill": "#f0f1f5"} }}%%
quadrantChart
    title Fault Relations for One Input, One Output
    x-axis Input 0 --> Input 1
    y-axis Output 0 --> Output 1
    quadrant-1 "O dominates I"
    quadrant-2 Input s-a-1 equivalent to Output s-a-1
    quadrant-3 Input s-a-0 equivalent to Output s-a-0
    quadrant-4 Output s-a-0 dominates Input s-a-1

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_{\alpha}\equiv f_{\beta}
\color{red}{f_{\alpha}\rightarrow f_{\beta}\rightarrow f_{\gamma}}
Under T_{\alpha}\supseteq T_{\beta},in T_{\beta}
f_{\alpha}\equiv f_{\beta}
Collapsing2n\rightarrow n+1n+1\rightarrow n
test setsameT_{\alpha}\supseteq T_{\beta}
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.

%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '60px' }}}%%
graph LR
    A[Start] --> A1[Annotate Stems]
    A1 --> B[Initialize fault lists for primary inputs]
    B --> C[Get next gate in topological order]
    C --> D[Compute gate output value]
    D --> E[Include gate's own stuck-at faults]
    E --> F[Propagate faults from inputs to gate output]
    F --> G[Update fault list for gate's output]
    G --> H{More gates to process?}
    H -- Yes --> C
    H -- No --> I[Collect faults at primary outputs]
    I --> J[End]

NameInputOutputL_{c} fault list
ORa=0, b=0c=0\{L_{a}\cup L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/1}}\quad\color{green}{\underset{\text{NOR}}{c/0}}
ORa=0, b=1c=1\{L_{b}- L_{a}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}}
ORa=1, b=0c=1\{L_{a}- L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}}
ORa=1, b=1c=1\{L_{a}\cap L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}}
for NOR, \color{red}{c/0\rightarrow c/1} and \color{red}{c/1\rightarrow c/0}
NameInputOutputL_{c} fault list
ANDa=0, b=0c=0\{L_{a}\cap L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}}
ANDa=0, b=1c=0\{L_{a}- L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}}
ANDa=1, b=0c=0\{L_{b}- L_{a}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}}
ANDa=1, b=1c=1\{L_{a}\cup L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/0}}\quad\color{green}{\underset{\text{NAND}}{c/1}}
for NAND, \color{red}{c/0\rightarrow c/1} and \color{red}{c/1\rightarrow c/0}
NameStemBranchL_{c} fault list
Fanouta=0b=0, c=0L_{c}=L_{a}\cup c/1
L_{b}=L_{a}\cup b/1
Fanouta=1b=1, c=1L_{c}=L_{a}\cup c/0
L_{b}=L_{a}\cup b/0
NameInputOutputL_{c} fault list
NOTa=0c=1L_{a}\cup c/0
NOTa=1c=0L_{a}\cup c/1
NameInputOutputL_{c} fault list
XORa=0, b=0c=0\{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/1}
XORa=0, b=1c=1\{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/0}
XORa=1, b=0c=1\{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/0}
XORa=1, b=1c=0\{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/1}
for XNOR, \color{red}{c/0\rightarrow c/1} and \color{red}{c/1\rightarrow c/0}, deducted by myself.

Critical Path Tracing&Star Algorithm

Critical Path TracingStar Algorithm
definitionsensitive: \color{red}{a\rightarrow z},\color{red}{\overline{a}\rightarrow\overline{z}}
critial: fault \color{red}{v/\overline{v}} detected by vec t
\color{red}{O_{critical}\rightarrow I_{sensitive}\rightarrow I_{critical}}
sufficient: Input that can set the output value
Unmarked \overline{V}Untestable
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(a=0)\cdot (b= 0) \rightarrow c=0/1
(\overset{\bullet}{a=0})\cdot (b=1)\rightarrow c=0/1
(a=1)\cdot (\overset{\bullet}{b=0})\rightarrow c=0/1
(\overset{\bullet both}{a=1})\cdot (\overset{\bullet both}{b=1})\rightarrow c=1/0
(\overset{\ast either}{a=0})\cdot (\overset{\ast either}{b= 0}) \rightarrow c=0/1
(\overset{\ast}{a=0})\cdot (b=1)\rightarrow c=0/1
(a=1)\cdot (\overset{\ast}{b=0})\rightarrow c=0/1
(\overset{\ast both}{a=1})\cdot (\overset{\ast both}{b=1})\rightarrow c=1/0
OR, NOR(\overset{\bullet both}{a=0})+(\overset{\bullet both}{b=0}) \rightarrow c=0/1
(a=0)+(\overset{\bullet}{b=1})\rightarrow c=1/0
(\overset{\bullet}{a=1})+(b=0)\rightarrow c=1/0
(a=1)+(b=1)\rightarrow c=1/0
NOT(\overset{\bullet}{a=1})\rightarrow c=0
(\overset{\bullet}{a=0})\rightarrow c=1
XOR, XNOR(\overset{\bullet both}{a=0})\oplus (\overset{\bullet both}{b=0})\rightarrow c=0/1
(\overset{\bullet both}{a=0})\oplus (\overset{\bullet both}{b=1})\rightarrow c=1/0
(\overset{\bullet both}{a=1})\oplus (\overset{\bullet both}{b=0})\rightarrow c=1/0
(\overset{\bullet both}{a=1})\oplus (\overset{\bullet both}{b=1})\rightarrow 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.

\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}
\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}
\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 Algebra2

RuleEquation 1(AND)Equation 2(OR)
De Morgan’s Laws\color{red}{\overline{A\cdot B}\equiv \overline{A}+\overline{B}}\color{red}{\overline{A+B}\equiv\overline{A}\cdot \overline{B}}
distributiveA\cdot(B+C)=(A\cdot B)+(A\cdot C)A+B\cdot C=(A+B)\cdot (A+C)
associative(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

Frontiers3

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

NameInputOutputUsage
D-Frontier4
\color{red}{D/\overline{D}\Rightarrow X}
D (or \overline{D})XPODEM: D-Frontier Empty then backtrace
Speed up D-Algorithm
J-Frontier5
\color{red}{X\Rightarrow D/\overline{D}}
not justifiedKnownSpeed up D-Algorithm
E-Frontier6
\color{red}{Known\Rightarrow Known}
0,1,X,D,\overline{D}0,1,X,D,\overline{D}PODEM 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
%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '20px' }}}%%
graph TD
    A[Start] --> B[Initialize Circuit]
    B --> C[Select Target Fault]
    C --> D[Assign Objectives]
    D --> E{Backtrace}
    E -->|Success| F[Imply]
    E -->|Failure| G{Backtrack}
    F --> H{Conflict?}
    H -->|Yes| G
    H -->|No| I{All Objectives Satisfied?}
    I -->|Yes| J[Simulate Fault]
    I -->|No| E
    J --> K{Fault Detected?}
    K -->|Yes| L[Test Found]
    K -->|No| G
    G -->|Possible| D
    G -->|Not Possible| M{All Faults Tested?}
    L --> M
    M -->|Yes| N[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 a\rightarrow b, then \overline{b}\rightarrow\overline{a}

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.

\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}
C_{x}O_{x}
x=PI0.5
x=PO0.5 from YouTube
1 from class
x=a\cdot bC_{x}=C_{a}\cdot C_{b}
C_{\overline{x}}=1-C_{a}\cdot C_{b}
O_{a}=\underbrace{O_{x}}_{\text{Obervability}}\cdot \underbrace{C_{b}}_{\color{red}{\text{Sensitization of a}}}
x=a+bC_{x}=1-\left(1-C_{a}\right)\cdot \left(1-C_{b}\right)
C_{\overline{x}}=C_{\overline{a}}\cdot C_{\overline{b}}
O_{a}=\underbrace{O_{x}}_{\text{Obervability}}\cdot \underbrace{\left(1-C_{b}\right)}_{\color{red}{\text{Sensitization of a}}}
from stem x to a and bC_{x}=C_{a}=C_{b}O_{x}=1-\left(1-O_{a}\right)\cdot\left(1-O_{b}\right)
Testability COP8

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

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

SCOAP: Controllability/Observability9

C_{1} controlability of value to 1, C_{0} controlability of value to 0, O overservability. Values are integer, small values means easy for controllability. f_{fo}() means fanout penalty according to level or number of fanouts.

C_{0},C_{1}O
d=a\cdot b \cdot cC_{0}(d)=\text{min}\left(C_{0}(a),C_{0}(b),C_{0}(c)\right)+f_{fo}(d)
Special case10
C_{1}(d)=\text{max}\left(C_{0}(a),C_{0}(b),C_{0}(c)\right)+f_{fo}(d)
O(a)=O(d)+C_{1}(b)+C_{1}(c)
z=w+x+yC_{0}(z)=\text{max}\left(C_{0}(w),C_{0}(x),C_{0}(y)\right)+f_{fanout}(z)
C_{1}(z)=\text{min}\left(C_{0}(w),C_{0}(x),C_{0}(y)\right)+f_{fo}(d)
O(w)=O(z)+C_{0}(x)+C_{0}(y)
a=\bar{b}C_{0}(b)=C_{1}(a)+f_{fo}(b)
C_{1}(b)=C_{0}(a)+f_{fo}(b)
O(a)=\text{min}(O(b), O(c))
11
STAFAN
d_{f}=P_{fdet}=C\cdot O
P_{fndetN}=1-(1-d_{f})^{n}
P_{fdetN1}=1-(1-(1-d_{f})^{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 \text{dom}(g) needs to be D,\overline{D},X in order to test.

\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.

\begin{align}
a\rightarrow b &\equiv \overline{a}+b\\
b\rightarrow a &\equiv \overline{b}+a
\end{align}
\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}
\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}
\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}
\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}
\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

%%{init: {'theme': 'forest', 'themeVariables': { 'fontSize': '25px' }}}%%
flowchart LR
    A[#5] --> B[Fault Equivalence]
    B --> B1[Properties]
    B1--> B2[def: faults produce same output]
    B1--> B3[transitivity: f1->f2->f3, trivial]
    G --> C[Equivalent Faults Have Same Detection Vectors]
    B --> D[Equivalence Collapsing Reduces Faults]
    D --> E[from 2n to n+2 Faults]

    B --> F[⚠️Faults on Fanout Stems/Branches]
    F --> B3
    J --> F
    B --> G[Relating Faults to Test Vectors]
    G --> H[Tα = Tβ for Equivalent Faults<br>reverse wrong🛑]

    A --> J[Fault Dominance]
    J --> K[Fault α Dominates β if α ≡ β for All Vectors in Tβ]
    K --> L[If β is Detected, α is Definitely Detected]

    B --> N[If Two Faults Dominate Each Other, They are Equivalent]
    N --> O[Use Dominance to Collapse Faults]
    J --> N
    
    A-->P0
    P0[Theorem]
    R-->P[1️⃣: Fanout-Free Combinational Circuit]
    P --> Q[Test Set Detecting PI Faults Also Detects All Faults]

    P0 --> R[2️⃣: General Combinational Circuit]
    R --> S[Test Set Detecting Checkpoint Faults Detects All Faults]

    P0 --> T[3️⃣: Irredundant Circuit]
    T --> U[Test Set Detecting Single Faults Also Detects Multiple Faults]

    A --> V[Fault Classification]
    V --> W[1️⃣Untestable Fault<br>2️⃣Potentially Detectable Fault<br>3️⃣Initialization Fault<br>4️⃣X-Fault on Fanout<br>5️⃣Hyperactive Fault]
%%{init: {'theme': 'forest', 'themeVariables': { 'fontSize': '40px' }}}%%
flowchart LR
    A[#6] --> B[Fault Simulation Overview]
    B --> C[Determine Fault Coverage for Test Set]
    C --> D[Fault List that's Collapsed]
    D --> E[Fault is Removed Once Detected]
    E --> E1[defect level<br>reject rate]

    B --> F[Uses of Fault Simulation]
    F --> G[1️⃣Determine Quality of Test Set]
    G --> H[2️⃣Drop Incidentally Detected Faults in ATPG]
    H --> I[3️⃣Help Narrow Down Candidate Fault Sites in Diagnosis]

    A --> J[Techniques for Fault Simulation]
    J --> K[Serial Fault Simulation]
    J --> L[Parallel-Fault Simulation]
    J --> M[Parallel-Pattern Simulation]
    J --> N[Deductive Fault Simulation]
    J --> O[Concurrent Fault Simulation]
    J --> P[Statistical Simulation]
    J --> Q[Differential Fault Simulation]

    K --> R[Serial Fault Simulation Process]
    R --> S[Inject Fault and Schedule Event]
    S --> T[Simulate and Propagate Event to Primary Output]
    T --> U[Check for Fault Detection at Primary Output]

    L --> V[Parallel-Fault Simulation Process]
    V --> W[Simulate Multiple Faults Simultaneously]
    W --> X[Check Bit Positions for Fault Detection]

    M --> Y[Parallel-Pattern Simulation Process]
    Y --> Z[Simulate Multiple Vectors Simultaneously]
    Z --> AA[Check Bit Positions for Fault Detection]

    N --> AC[Propagate Fault Sets Across Combinational Circuit]
    AC --> AD[Apply Propagation Rules]

    Q --> AF[Simulate Differences Between Consecutive Faults]
    AF --> AG[Force Values Instead of Injecting/Removing Faults]
    
    O --> O1[Create List of Replica Nodes for Each Fault at Every Gate]
    O1--> O2[deductive fault sim with a list]
%%{init: {'theme': 'forest', 'themeVariables': { 'fontSize': '50px' }}}%%
flowchart LR
    A[#7] --> B
    B[PROOFS<br>Parallel Fault Sim]--> D[Inject Fault by Inserting Extra Gate]
    D --> E[If Fault Not Excited<br>Excited&Blocked<br>Do Not Inject]

    A --> G[Fault Simulation in Sequential Circuits]
    G --> H[Store Fault Effects at Flip-Flops]
    H --> I[Insert Fault Effects from Previous Time Frame]

    A --> J[Speeding Up Fault Simulation]
    J --> K[Reduce Number of Events]
    K --> L[Fault Grouping]

    L --> M[Static Fault Grouping]
    M --> N[Random, Depth-First, Breadth-First Reordering]
    N --> N1[DF: no events under<br>BF: no events on left]
    L --> O[Dynamic Fault Grouping]
    O --> P[Groups: Inactive<br>Excitable<br>Normal<br>Hyperactive]
    P --> P1[Hyperactive: propapates to many gates but not detected]
    P--> P2[Reorder by put hyperactive together]

    J --> Q[Eliminate Potential Fault Effects<br>1/x, 0/x]
    Q1[inability to init]-->Q
    Q --> R[Faultsim from Every Starting State]
    R --> R1[truly detect]
    R --> S1
    S1[uninitable states] --> S[Statistical Sampling of Initial States]
    S --> S2[detection probability]

    J --> T[Determine Fault Coverage with Logic Simulation]
    T --> U[Critical Path Tracing]
    U --> U1[1️⃣Logic Sim<br>2️⃣Mark Sensitive<br>3️⃣trace back]
    U --> U2[stem]
    T --> V[Star Algorithm for Fault Detection]
    V -->U2
    V -->V1[1️⃣Logic Sim<br>2️⃣Mark *<br>3️⃣trace back&arcoss fanout]
%%{init: {'theme': 'forest', 'themeVariables': { 'fontSize': '30px' }}}%%
flowchart LR
    A[#8] --> B[Fault Grading / Coverage Estimation]
    B --> C[Motivation: Quick Coverage Estimate]
    
    B --> D[Fault Sampling]
    D --> E[Sample a Subset of Faultlist F]
    E --> F[Run Fault Simulation on Sample]
    F --> G[Fault Coverage Estimation Based on Sample]
    D --> G1[sample size]
    G1 -->G2[✅fc<br>🛑size of faultlist]

    B --> H[Vector Sampling]
    H --> I[Sample Test Set T]
    I --> J[Works for Combinational Circuits]

    A --> K[STAFAN<br>✴️Logic Sim only<br>fanout free]
    K --> M[Signal=1 Prob based on test set]
    M --> M3[Controllability<br>Observability]
    M3--> M4[⚠️3 AND<br>3 OR<br>NOT<br>fanout]
    M4 --> M5[⚠️Fault Detectability]
    M --> M1[Prob a F not detected by n Vs]
    M1--> M2[Prob a F is deted by at least 1 of n Vs]
    M2 --> N[Exptation Nums of Faults Detected]

    A --> O[Non-Statistical Fault Coverage Estimation]
    O --> P[Motivation: Handle Hyperactive Faults in Sequential Circuits]
    P --> Q[Categorize Faults Based on Activity and Detection Sequence]
    Q --> Q1[WANT]
    Q1-->Q2[elim hyperactive Fs early<br>elim active but undect faults early]
    
    O --> R[Hyperactive Fault Handling]
    R --> S[Declare Faults Undetected After k Time Frames]
    R --> T[Suppress Potential Effects of Hyperactive Faults]
    T --> T1[make X=fault free val]
    R --> T2[Over-specify potential effects]
    T2--> T3[x=opposite of fault free val]

    O --> U[Avoiding Active But Unpropagated Faults]
    U --> V[Order Faults in Breadth-First Manner]
    V --> W[Mark Unpropagated Faults as Unpropagatable]

    A --> X[Defect Coverage]
    X --> Y[Fault Coverage Only Measures Specific Fault Models stuckat]
    Y --> Z[Increase Defect Coverage by Testing Multiple Fault Models]
    Y --> AA[Detect Same Fault Multiple Times for Higher Observability]
%%{init: {'theme': 'forest', 'themeVariables': { 'fontSize': '50px' }}}%%
flowchart LR
    A[#13] --> B[Testing Acyclic Sequential Circuits]
    B --> C[Transform to Balanced Combinational Circuit]
    C --> D[Apply Combinational ATPG]
    D --> E[Transform Test Vectors to Test Sequence]

    A --> F[Balanced Model]
    F --> G[Internal Balancing Between Nodes]
    G --> H[Strongly Balanced: All Paths to PIs Have Same Depth]
    
    F --> I[Balanced Model Generation]
    I --> J[Compute PO Weight: Maximum Sequential Depth]
    J --> K[Duplicate/Split Gates as Needed]

    A --> L[Simulation-Based Sequential ATPG]
    L --> M[Avoid Backtracing/Backtracking]
    M --> N[Use Random Test Generation]

    A --> O[CONTEST Algorithm]
    O --> P[Phase 1: Fault-Free Initialization]
    P --> Q[Phase 2: Concurrent Fault Detection]
    Q --> R[Phase 3: Single Fault Targeting]
    
    A --> S[GA-Test]
    S --> T[Use Genetic Algorithm to Optimize Test Vectors]
    T --> U[No Single Target Fault Phase]
    
    A --> V[DIGATE Algorithm]
    V --> W[Distinguishing Sequence Learning]
    W --> X[Application to ATPG: Distinguish Faulty vs Fault-Free Machines]

    A --> Y[State Relaxation & Justification]
    Y --> Z[Use Set/Reset Sequences to Guide GA]
    
    A --> AA[Pseudo-Register Justification]
    AA --> AB[Set Groups of FFs to Specific Values]

    A --> AC[STRATEGATE: State Traversal Based]
    AC --> AD[Use Similar Previously Visited States to Justify Target States]

    A --> AE[Logic-Simulation Based Sequential ATPG]
    AE --> AF[Traverse Circuit States to Detect More Faults]
    AF --> AG[Need to Differentiate New States]
  1. Lec 6: Fault Simulation📁[]
  2. 🔗[]
  3. D-Algorithm📁[]
  4. All gates whose output values are X, but have D (or \overline{D}) on their inputs.[]
  5. Justification Frontier: All gates whose output values are known (implied by problem requirements) but are not justified by their gate inputs.[]
  6. Evaluation, input and output are known[]
  7. Combinational ATPG, PODEM📺[]
  8. 6 3 Testability COP📺[]
  9. SCOAP: Sandia Controllability Observability Analysis Program[]
  10. C_{0}(g)=level(g) in fanout free circuits if circuit contains only AND gates[]
  11. 6 1 Testability Intro📺[]

Posted

in

by

Tags:

Comments

Leave a Reply

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

🧭