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 Simulation | Logic Sim | |
Definition | given 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 estimation | Indirect 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 fault | 0/x,1/x | ||
Init fault | |||
Dominance&Equivalence
Equivalence | Dominance | ||
Definition | f_{\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} | |
Collapsing | 2n\rightarrow n+1 | n+1\rightarrow n | |
test set | same | T_{\alpha}\supseteq T_{\beta} | |
Fanout | transitivity not work | 1️⃣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]
Name | Input | Output | L_{c} fault list |
---|---|---|---|
OR | a=0, b=0 | c=0 | \{L_{a}\cup L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/1}}\quad\color{green}{\underset{\text{NOR}}{c/0}} |
OR | a=0, b=1 | c=1 | \{L_{b}- L_{a}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}} |
OR | a=1, b=0 | c=1 | \{L_{a}- L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}} |
OR | a=1, b=1 | c=1 | \{L_{a}\cap L_{b}\}\cup \color{red}{\underset{\text{OR}}{c/0}}\quad\color{green}{\underset{\text{NOR}}{c/1}} |
Name | Input | Output | L_{c} fault list |
---|---|---|---|
AND | a=0, b=0 | c=0 | \{L_{a}\cap L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}} |
AND | a=0, b=1 | c=0 | \{L_{a}- L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}} |
AND | a=1, b=0 | c=0 | \{L_{b}- L_{a}\}\cup \color{red}{\underset{\text{AND}}{c/1}}\quad\color{green}{\underset{\text{NAND}}{c/0}} |
AND | a=1, b=1 | c=1 | \{L_{a}\cup L_{b}\}\cup \color{red}{\underset{\text{AND}}{c/0}}\quad\color{green}{\underset{\text{NAND}}{c/1}} |
Name | Stem | Branch | L_{c} fault list |
Fanout | a=0 | b=0, c=0 | L_{c}=L_{a}\cup c/1 L_{b}=L_{a}\cup b/1 |
Fanout | a=1 | b=1, c=1 | L_{c}=L_{a}\cup c/0 L_{b}=L_{a}\cup b/0 |
Name | Input | Output | L_{c} fault list |
NOT | a=0 | c=1 | L_{a}\cup c/0 |
NOT | a=1 | c=0 | L_{a}\cup c/1 |
Name | Input | Output | L_{c} fault list |
---|---|---|---|
XOR | a=0, b=0 | c=0 | \{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/1} |
XOR | a=0, b=1 | c=1 | \{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/0} |
XOR | a=1, b=0 | c=1 | \{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/0} |
XOR | a=1, b=1 | c=0 | \{L_{a}- L_{b}\}\cup \{L_{b}- L_{a}\}\cup \color{red}{c/1} |
Critical Path Tracing&Star Algorithm
Critical Path Tracing | Star Algorithm | |
definition | sensitive: \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 |
stem | stem 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
Rule | Equation 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}} |
distributive | A\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) |
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.
Name | Input | Output | Usage |
D-Frontier4 \color{red}{D/\overline{D}\Rightarrow X} | D (or \overline{D}) | X | PODEM: D-Frontier Empty then backtrace Speed up D-Algorithm |
J-Frontier5 \color{red}{X\Rightarrow D/\overline{D}} | not justified | Known | Speed 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
PODEM | D-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=0 | output=1 | |
---|---|---|
AND | select easier one | select hard one first then easier one |
OR | select hard one first then easier one | select 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=PI | 0.5 | |
x=PO | 0.5 from YouTube 1 from class | |
x=a\cdot b | C_{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+b | C_{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 b | C_{x}=C_{a}=C_{b} | O_{x}=1-\left(1-O_{a}\right)\cdot\left(1-O_{b}\right) |
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 c | C_{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+y | C_{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)) |
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 |
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]
- Lec 6: Fault Simulation📁[↩]
- 🔗[↩]
- D-Algorithm📁[↩]
- All gates whose output values are X, but have D (or \overline{D}) on their inputs.[↩]
- 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[↩]
- C_{0}(g)=level(g) in fanout free circuits if circuit contains only AND gates[↩]
- 6 1 Testability Intro📺[↩]
Leave a Reply