Skip to content

DFT · Chapter 13 · DFT Debug Methodology

Diagnosis & Failure Localisation

A mismatch that survived the real-versus-false fork is a real defect, and diagnosis is how you localize it, working from the observed failures back to a candidate net, cell, or instance precise enough to point physical failure analysis at the right spot. Diagnosis is an inverse problem: given the failing patterns and their failing cells, the netlist, and the fault model, the tool computes the fault candidates that best explain what was observed. It intersects the back-cones of the failing cells while staying consistent with the passing cells, so more failing patterns give a tighter candidate set. The output is a ranked candidate list, a suspected fault type, and often a layer hint, but diagnosis localizes rather than proves. Resolution tracks observability, so compression can lower it, and volume diagnosis across many dies drives yield learning.

Advanced15 min readDFTDiagnosisLocalizationPFAYield Learning

Chapter 13 · Section 13.4 · DFT Debug Methodology

Project thread — the mini-SoC's real defect localized: cone-intersection to a ranked candidate, a diagnostic mode to beat compression, PFA to confirm, and volume diagnosis for yield.

1. Why Should I Learn This?

Diagnosis turns a confirmed defect into a place to look — a ranked candidate list precise enough to point PFA and, in volume, to drive yield learning.

  • An inverse problem: from failing patterns/cells back to the likely fault site by intersecting back-cones (consistent with passing cells).
  • Output: a ranked candidate list, a suspected fault type (stuck-at/bridge/open/transition), an xy/layer hintdiagnosis localizes, PFA proves.
  • Resolution ~ observability: many observers → tight; compression hides the failing cell → looser → use a diagnostic mode (7.x tradeoff).
  • Volume diagnosis → a Pareto of sites → systematic vs randomyield engineering.

2. Real Silicon Story — the diagnosis compression blurred

A part had a confirmed real defect (it survived the 13.3 triage), but diagnosis returned a loose candidate listdozens of suspects spread across the die. PFA can't be pointed at dozens of sites; deprocessing is slow and destructive. The debug stalled.

The cause was compression. The design used an on-chip compactor (7.x): many scan cells fed a compactor that produced a compressed signature, so the datalog recorded which signature bit miscompared, not which exact cellhiding the observability diagnosis needs to intersect cones tightly. The fix was a DIAGNOSTIC mode: re-run the failing patterns with the compactor bypassed (a high-resolution / bypass mode) so each individual cell's pass/fail was visible again. With full observability restored, diagnosis intersected the failing cones to a few candidates, and PFA confirmed a bridge at the top suspect. Lesson: diagnosis resolution depends on observability, and compression trades diagnosability for test cost (7.x) — when diagnosis is loose, un-compact with a diagnostic mode. And remember the boundary: diagnosis localized the bridge to a candidate; PFA proved it — the two are different jobs.

3. Factory Perspective — diagnosis through each lens

  • What the test/DFT engineer sees: the diagnosis run — feed failing patterns/cells in, get a ranked candidate list + fault type; switch to a diagnostic mode if compression blurs it.
  • What the failure-analysis engineer sees: the candidate + xy/layer hint as a PFA target — where to deprocess/image to confirm the physical defect.
  • What the yield/process engineer sees: the volume Pareto — is the same site failing across many dies (systematic → process/design) or scattered (random)?
  • What management cares about: that diagnosis shortens PFA (cost/time) and drives yield learning — turning test failures into process improvements, not just scrapped dies.

4. Concept — the inverse problem, cones, resolution, volume

What diagnosis is:

  • An inverse problem: given failing patterns + their failing cells (datalog) + the netlist + the ATPG fault model, compute the fault candidates (nets/pins) that best explain the observed failures.
  • Direction: from observed failures → back to the likely fault site.

How it works — cone intersection:

  • Each failing compare cell has a logic cone feeding it; the defect must lie in the intersection of the cones of the failing cells.
  • It must be consistent with the passing cells — a candidate that would make a passing cell fail is rejected.
  • More failing patterns that observe a site → a tighter candidate set.

Output:

  • A ranked candidate list (top suspects + confidence), a suspected fault type (stuck-at / bridge / open / transition), often a physical (x,y) / layer hint.
  • Boundary: diagnosis localizes; it does not prove. PFA (deprocess/image) confirms the physical defect.

Resolution ~ observability:

  • Many patterns/cells observe the site → tight (few candidates). Poor observability → loose (many candidates).
  • Compression (7.x) reduces resolution — the compactor hides which exact cell failed → may need a DIAGNOSTIC (bypass / hi-res) mode to un-compact. A real coverage-vs-diagnosability tradeoff.

Fault-model match & signature:

  • Chain diagnosis (13.2) for chain defects; logic (scan) diagnosis for logic defects.
  • The failure signature (which patterns fail, stuck-at vs transition, systematic vs random) suggests the defect class (bridge / open / stuck).

Volume diagnosis → yield learning:

  • Aggregate diagnosis across many failing dies → a Pareto of failing sites/layers.
  • Systematic (same site, many dies) = a design/process marginality (fix the mechanism); random = particle defects. This is how DFT drives yield learning.

Tool boundary (garbage in, garbage out):

  • Diagnosis gives candidates + confidence, not certainty; PFA confirms.
  • A wrong fault model or unmasked X degrades diagnosis → clean the pattern debug (13.3) first.
Diagnosis intersects the back-cones of the failing compare cells and constrains the result with the passing cells to produce a small ranked set of candidate nets for physical failure analysisFailing cell A → conenets/gates feeding AFailing cell B → conenets/gates feeding BINTERSECTION of conesexplains ALL failsPASSING cellsCONSTRAINreject candidates thatwould fail a passRanked CANDIDATEStop suspects + fault type +xy/layer→ PFA confirmsdiagnosis localizes; PFAproves12
Figure 1 - diagnosis by back-cone intersection (representative). Each failing compare cell has a logic back-cone feeding it, and the defect must lie in the INTERSECTION of the failing cells' cones while remaining CONSISTENT with the PASSING cells - a candidate that would have failed a passing cell is rejected. The intersection, constrained by the passes, yields a small ranked set of candidate nets, and more failing observations tighten it. Output: candidates, fault type, and an xy/layer hint for PFA. Diagnosis localizes; PFA proves.

5. Mental Model — triangulating a signal from multiple towers

Diagnosis is like triangulating a hidden transmitter from multiple receiving towers — the more towers that hear it, the tighter you pin its location.

  • Each failing cell is a tower that heard the signal (the defect's effect); its cone is the direction it heard from. The transmitter (the defect) must be where the directions cross — the intersection of the failing cones.
  • The towers that didn't hear it (the passing cells) are just as useful: they rule out whole regions (if the defect were there, they'd have heard it) — so they constrain the fix.
  • More towers hearing it → a tighter fix (fewer candidates). Few towers (poor observability) → a fuzzy fix (many candidates). If a relay tower (a compactor) merges several towers' reports into one summary, you lose bearing — so you switch to direct reception (a diagnostic/bypass mode) to get each tower's report individually.
  • Triangulation gives you a likely spot (candidates + confidence) — but you still send a crew to dig (PFA) to prove the transmitter is there. And if every failing chip triangulates to the same spot, that's not bad luck — it's a broken tower on the network (a systematic process/design issue) to fix at the source (volume diagnosis → yield).

Triangulate the defect from the towers that heard it (failing cells' cones), ruled in by crossings and out by the silent towers (passing cells) — more towers = tighter; a relay (compactor) blurs bearing; a crew (PFA) proves it; same-spot-everywhere = a systematic fix.

6. Working Example — from failing datalog to a ranked candidate

Trace a diagnosis from failing cells to a candidate for PFA:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# Diagnosis (logic/scan) - REPRESENTATIVE, tool-neutral:
  INPUT : failing patterns + failing cells (datalog, from a CLEAN pattern debug 13.3) + netlist + fault model
  STEP 1 - CONE INTERSECTION:
     failing cell A <- cone {n1,n2,n5,n8}
     failing cell B <- cone {n5,n8,n9}
     intersection (explains BOTH fails) = {n5, n8}
  STEP 2 - CONSISTENCY WITH PASSES:
     passing cell C <- cone {n8, n12}  ; if the defect were on n8, C would ALSO fail -> C PASSED -> REJECT n8
     -> surviving candidate = {n5}
  STEP 3 - RANK + FAULT TYPE:
     candidate n5, confidence high ; signature (fails only transition patterns, not stuck-at) -> suspect a slow/OPEN or bridge
     physical hint: n5 at (x,y), metal-2
  OUTPUT: ranked candidate list [n5 (0.9), ...], fault type = transition/open, xy/layer for PFA
  --- RESOLUTION caveat ---
     if COMPRESSION (7.x) is on, the datalog shows a compacted SIGNATURE bit, not cells A/B/C individually
     -> LOOSE candidate list -> re-run failing patterns in a DIAGNOSTIC (bypass/hi-res) mode -> restore observability -> tighten
  --- BOUNDARY ---   diagnosis LOCALIZES (n5, candidate) ; PFA (deprocess/image at x,y) PROVES the physical defect
  --- VOLUME ---     aggregate n5-type hits across many dies -> if SYSTEMATIC (same site) -> design/process fix (yield), not just this die

Resolution is a ladder set by observability — compression lowers a rung, a diagnostic mode restores it:

A resolution ladder: many observers give a tight candidate set, compression lowers resolution to a loose set, a diagnostic bypass mode restores it, and volume diagnosis aggregates dies into a yield Pareto
Figure 2 - the diagnosis resolution ladder (representative). Resolution tracks OBSERVABILITY. Top rung: a site observed by many failing patterns gives a TIGHT candidate set that PFA can be pointed at. Middle: COMPRESSION merges cells into a compacted signature, observability drops, and the list goes LOOSE. Restore: re-run in a diagnostic bypass or high-resolution mode to un-compact. Bottom: single-die diagnosis localizes this defect, while VOLUME diagnosis aggregates many dies into a Pareto separating systematic from random.

6b. From a Failing Pattern to a Candidate Cell — the Arithmetic

Section 6 shows the tool's reasoning. This section shows the part you do by hand before the tool runs, and the part you must be able to check afterwards. It is a short chain, and every link in it can be got wrong in a way that sends you to the other end of the die.

The chain

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
failing pattern        the ATE says pattern 18432 failed
   |
failing cycle          which tester cycle inside that pattern miscompared
   |
failing output/chain   which scan-out pin -- therefore which chain
   |
unload position        the Nth bit shifted out of that chain
   |
candidate scan cell    unload position -> cell index (arithmetic below)
   |
capture cone           the logic that fed that cell's D input
   |
candidate nets/gates   intersected across all failing cells
   |
ranked candidates      scored by how well each explains fails AND passes
   |
physical correlation   (x,y) and layer -> PFA

The step people get wrong is the fourth, and getting it wrong is not a small error — it puts the candidate at the opposite end of the chain.

The direction convention, stated

A scan chain is an ordered shift register. This curriculum numbers cells 1..N from the scan-in end, so cell 1 is adjacent to scan-in and cell N is adjacent to scan-out — the same convention used in Scan Chain Failure Debug, where a chain break is localized as k = N + 1 − C.

During unload the cell nearest the scan-out pin emerges first. So for an unload position p, counted 1-based with p = 1 as the first bit out:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
   cell_index = N + 1 - p          (cells numbered 1..N from SCAN-IN)
 
   sanity check both ends:
     p = 1  ->  cell N      the cell closest to scan-out, first bit out    OK
     p = N  ->  cell 1      the cell closest to scan-in,  last bit out     OK

State the convention before you use it, every time, because it is not universal. Some tools number from the scan-out end, and some report the unload position 0-based. Both flip or shift the answer. The check that costs nothing: substitute p = 1 and p = N into whatever formula you are using and confirm the two extremes land on the two ends of the chain. If they do not, the formula is wrong, and it is better to find that out in ten seconds than after a deprocessing run.

The worked case

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# Failure observation - what the tester reported. Nothing here is inferred.
  Pattern            : 18432          (transition-delay pattern set)
  Failing cycle      : 3,417
  Failing output     : SO[7]  -> chain 7
  Chain 7 length     : 412 cells
  Unload position    : 137            (1-based, first bit out = 1)
  Expected / observed: 1 / 0          single-bit miscompare
  Other chains       : all pass on this pattern
  Other patterns     : 3 of 2,048 fail; all fail on chain 7
 
# Localization - arithmetic, still not a hypothesis.
  cell_index = N + 1 - p = 412 + 1 - 137 = 276
 
  Chain 7, cell 276.  Map through the scan-stitching report to the instance
  name and the capture cone feeding its D input:
 
  cell 276  ->  u_core/u_alu/rslt_reg[13]
  capture cone (fan-in of rslt_reg[13].D):
      u_alu/add_stage2/sum[13]
      u_alu/add_stage2/carry[12]
      u_alu/rslt_mux/sel_q
      ... 41 nets, 28 gates total
 
# Cross-pattern intersection - now the candidate set narrows.
  4 failing patterns, all observing chain 7:
     pattern 18432 -> cell 276  -> cone A  (41 nets)
     pattern 18719 -> cell 276  -> cone A
     pattern 19004 -> cell 281  -> cone B  (37 nets)
     pattern 20117 -> cell 276  -> cone A
  intersection(A,B) = 9 nets
 
  passing-pattern constraint: 6 of those 9 nets are observed by cells that
  PASSED on other patterns -> a defect there would have failed those too
  -> REJECT 6 -> 3 surviving candidates.
 
# Ranked candidates - the diagnosis HYPOTHESIS begins here.
  1. u_alu/add_stage2/carry[12]   score 0.87   transition/slow-to-rise
  2. u_alu/add_stage2/sum[13]     score 0.61   transition
  3. u_alu/rslt_mux/sel_q         score 0.22   stuck-at-0
  fault-type evidence: fails ONLY transition patterns, passes all stuck-at
                       -> a timing-dependent defect (resistive open / bridge),
                          not a hard stuck-at
  physical: candidate 1 at (2431.5, 1180.2) um, metal-3 -> PFA target

Observation is not hypothesis

Draw a hard line through the middle of that listing, and keep drawing it in every diagnosis review you attend.

Everything above the ranked list is observation: the tester measured it, or it follows from the measurement by arithmetic you can check. Pattern 18432 failed. The miscompare was at unload position 137 on chain 7. Cell index 276 follows from the chain length and the stated convention. These are facts, and if one is wrong it is because a convention was misread, not because a model was wrong.

Everything from the ranked list down is hypothesis. carry[12] at score 0.87 is the tool's statement that a defect there explains the observed fails and passes better than the alternatives given its fault model. It is not a measurement. It is conditional on the netlist matching the silicon, on the fault model covering the actual defect mechanism, and on the datalog being clean. A resistive open behaves like nothing in a stuck-at model, and a diagnosis run against the wrong model will still return a confident-looking ranked list — confidence scores are relative to the candidates considered, not to the truth.

The practical discipline: report observations and hypotheses in separate sentences. "Chain 7, cell 276, transition patterns only" is something you can defend. "The defect is on carry[12]" is something PFA either confirms or refutes, and it is a considerable difference when someone is about to spend a week deprocessing a die.

Failing pattern, cycle, chain and unload position are measured; the cell index and capture cone follow by arithmetic and lookup; cone intersection, passing-cell constraint and ranked candidates are inferred; physical failure analysis confirms.ATE: pattern, cycle,SO pinmeasuredUnload position pmeasuredCell = N + 1 - parithmetic, checkableCapture conestitching report lookupIntersect + constraininference begins hereRanked candidateshypothesis, model-dependentPFA confirmshypothesis becomes fact12
Figure 2b - the localization chain, split into what is measured and what is inferred. The tester reports a failing pattern, cycle, output and unload position; the cell index follows by arithmetic from the chain length and the stated numbering convention, and the stitching report maps it to an instance and its capture cone. Everything to that point is observation. Cone intersection, the passing-cell constraint and the ranked candidates are hypothesis, conditional on the netlist and the fault model. PFA converts the top hypothesis back into a fact.
1

Diagnosis returned 40 scattered candidates because nobody ran the flush test first

DIAGNOSED-BEFORE-STRUCTURE-WAS-VALIDATED
Symptom

A failing part from a new lot went straight to logic diagnosis. The result was unusable — and unusually so, which was the clue everyone missed:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
Diagnosis summary - die 07, wafer 12
  Failing patterns          : 1,904 of 2,048   (93%)
  Failing chains            : 6 of 12
  Candidate sites returned  : 40
  Top score                 : 0.11
  Score spread              : 0.11 ... 0.04   (essentially flat)
  Candidates within one hierarchy block : 3 of 40

Forty candidates scattered across six hierarchy blocks, with a top score of 0.11 and no separation between first and fortieth. The team's first reading was "multiple defects", their second was "the fault model is wrong", and two days went into re-running diagnosis with a bridging model and then with a cell-aware model. Both returned similarly flat lists.

Root Cause

Diagnosis was run before the scan infrastructure had been shown to work, so it was interpreting shift failures as capture failures.

Logic diagnosis rests on an assumption nobody had checked: that the values unloaded from the chains are the values the capture edge actually latched. If the shift path itself is broken, every unloaded bit after the break is wrong regardless of what the logic did, and the tool — which has no way to know this — dutifully explains those wrong bits as logic defects. The intersection of cones from bits that were never valid observations has no reason to converge anywhere, which is precisely what a flat 40-candidate list across six blocks looks like.

Two numbers in the summary said so before any diagnosis run was needed. 93% of patterns failing is not what a logic defect looks like; a single logic defect is observed by a minority of patterns, because most patterns do not sensitize it. And 6 of 12 chains failing simultaneously is not what one defect looks like either — one defect sits in one cone, feeding one cell, on one chain. Broad, correlated, cross-chain failure is the signature of shared infrastructure: a clock, a reset, a scan-enable, a supply. Those two numbers together should have stopped the diagnosis run before it started.

The actual defect, found later in ten minutes, was a scan-enable buffer with a slow rising edge. It reached six chains in one region of the die. During shift the chains behaved erratically near the mode transition; the captured logic values were mostly fine. Diagnosis had been explaining, in careful detail, data that meant nothing.

Fix

Establish that the shift path works before asking what the logic did. The order is not a preference — the second question is meaningless until the first is answered.

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
STEP 1 - FLUSH TEST.  Shift a known pattern in and straight out, no capture.
         This exercises ONLY the shift path: cells, stitching, scan-enable,
         shift clock. Nothing about the logic is involved.
           chains 1,2,3,4,5,9,10,11,12 : flush PASS
           chains 6,7,8               : flush FAIL, and the failing bit
                                        position MOVES between runs
         -> the shift infrastructure is broken. STOP. Do not run diagnosis.
 
         A moving failure position is itself diagnostic: a stuck chain gives
         a fixed position, a marginal timing or mode-control problem gives a
         position that wanders.
 
STEP 2 - CHAIN DIAGNOSIS on the failing chains only.
         Localize a break with k = N + 1 - C  (see /dft/scan-chain-failure-debug).
         Here the position did not repeat -> not a hard break -> look at what
         the failing chains SHARE rather than at any one chain.
           chains 6,7,8 share scan_en buffer u_se_buf_3 and its region
         -> shared control, not per-chain structure.
 
STEP 3 - CLASSIFY shift vs capture.
         Re-run at half shift frequency: all chains flush PASS.
         -> timing-dependent shift-path failure, confirmed.
         -> the earlier capture data was never valid.
 
STEP 4 - ONLY NOW, with flush clean at the reduced rate, re-run the logic
         patterns and diagnose. Result on this die: 2 candidates, top score
         0.79, both in one block. PFA confirmed a resistive via on the
         scan-enable buffer output.

The rule this establishes is worth more than the fix: flush first, classify second, diagnose third. Logic diagnosis assumes valid observations, and only the flush test establishes that assumption. Running it costs one pattern and a few seconds of tester time. Skipping it cost two days here and, in the worst version of this failure, points a deprocessing run at a die location where there is nothing to find.

Two signatures worth memorising, because they let you refuse a diagnosis result on sight:

  • A flat candidate list with a low top score is not a hard diagnosis problem — it is usually invalid input. Diagnosis converges when the observations are real. When it will not converge, suspect the data before suspecting the tool or the fault model.
  • Broad, cross-chain, high-percentage failure points at shared infrastructure, not at a logic defect. Clock, reset, scan-enable, mode control, supply. One defect in the logic cannot make six chains fail at once.

Related reading: the real-versus-false triage that must precede this is Pattern Mismatch Debug; chain-structure localization is Scan Chain Failure Debug; the same discipline under tester conditions is Silicon Bring-up & Tester Debug.

7. Industry Flow — diagnose, confirm, and (in volume) learn

Diagnosis localizes to candidates, PFA confirms, and volume diagnosis turns failures into yield learning:

A clean failing datalog feeds diagnosis, which produces ranked candidates; a diagnostic mode tightens loose results, PFA confirms the defect, and volume diagnosis drives yield learningClean datalog → diagnosis (cone intersection) →candidates → PFA confirms → volume → yield1Clean failing datalogfrom a clean pattern debug (13.3)2Diagnosiscone intersection + fault model → ranked candidates3Diagnostic mode if looseun-compact (7.x) → tighten resolution4PFA confirmsdeprocess/image the top candidate (proves)5Volume → yield learningPareto → systematic vs random → fix mechanism
Figure 3 - diagnosis-to-yield flow (representative). A clean failing datalog feeds diagnosis, which intersects the failing cones consistently with the passes to produce a ranked candidate list with a fault type and an xy/layer hint. If resolution is loose because of compression, a diagnostic mode tightens it. PFA then deprocesses the top candidate and confirms the physical defect. In volume, aggregating across many dies gives a Pareto that separates systematic sites from random ones and drives yield learning.

8. Debugging Session — a real defect that diagnosed loose

2

A real defect diagnosed to dozens of candidates because compression hid which cell failed

RESOLUTION-TRACKS-OBSERVABILITY
Symptom

A confirmed real defect (it survived the 13.3 triage) diagnoses to a loose candidate listdozens of suspects across the die. PFA can't be pointed (deprocessing dozens of sites is infeasible). The debug stalls. Why so loose?

Root Cause

On-chip compression records which compacted signature bit miscompared rather than which exact scan cell failed, hiding the per-cell observability diagnosis needs to intersect back-cones tightly — so the candidate list is loose. Diagnosis is an inverse problem solved by intersecting the back-cones of the failing cells (constrained by the passing cells): its resolution depends on observabilityhow precisely you know which cells failed. With a compactor (7.x), many scan cells feed a compressor that emits a compressed signature, so the datalog captures which signature bit miscompared, not which individual cell — collapsing the distinct observation points diagnosis relies on. The result is exactly what's seen: a defect that is genuinely real but poorly localized, because the tool can only intersect coarse (signature-level) observations, yielding a broad candidate set. This is the coverage-vs-diagnosability tradeoff made concrete: compression buys test-time/data-volume savings (7.x) but costs diagnostic resolution. It's not a diagnosis-tool failure and not a second defect — it's missing observability, and it can't be fixed by "trying harder" on the compacted data (garbage in, garbage out: the fine-grained information simply isn't in the compacted datalog).

Fix

Restore observability with a diagnostic mode: re-run the failing patterns with the compactor bypassed (a diagnostic bypass or high-resolution mode) so each scan cell's pass/fail is visible again, which tightens the candidate list to a few suspects that PFA then confirms as a bridge. Switch the failing patterns into the design's DIAGNOSTIC modebypass the compactor (or use a high-resolution capture) so the datalog records per-cell pass/fail instead of a compacted signature (this is exactly why diagnosable designs provide such a mode, 7.x). With full per-cell observability restored, re-run diagnosis: the tool can now intersect the failing cells' cones precisely and constrain with the passes, collapsing dozens of candidates to a few. Hand the top candidate + xy/layer hint to PFA, which deprocesses/images that spot and confirms the physical defect — here a bridge. Note the two distinct jobs: diagnosis localized the bridge to a candidate; PFA proved it. The principle to lock in: diagnosis is an inverse problem that localizes a real defect by intersecting the back-cones of the failing cells consistent with the passing cells, so its resolution is bounded by observability — how precisely you know which cells failed — and on-chip compression deliberately lowers that observability by recording a compacted signature instead of individual cells, which is a real coverage-versus-diagnosability tradeoff, not a tool failure; when diagnosis returns a loose candidate list on a compressed design, re-run the failing patterns in a diagnostic bypass or high-resolution mode to un-compact and restore per-cell observability, tightening the result, and always remember that diagnosis localizes to candidates with confidence while PFA proves the physical defect, and that aggregating diagnosis across many dies turns per-die localization into a yield-learning Pareto of systematic versus random sites. (Compression/compaction is 7.x; the clean pattern debug that must precede diagnosis is 13.3; the fork is 13.1.)

9. Common Mistakes

  • Diagnosing on a dirty datalog. Unmasked X / bad models (13.3) → garbage-in, garbage-out — clean the pattern debug first.
  • Expecting tight resolution under compression. The compactor hides the failing cell (7.x) → use a diagnostic/bypass mode.
  • Treating candidates as proof. Diagnosis localizes; PFA proves — candidates have confidence, not certainty.
  • Ignoring the passing cells. Passes constrain the candidate set (reject candidates that would fail a pass).
  • Missing the systematic signal. Same site across many dies = a process/design fix (volume diagnosis), not just a scrapped die.

10. Industry Best Practices

  • Feed diagnosis a clean datalog (X masked, models right, 13.3) — resolution is only as good as the input.
  • Use the failing and passing cells — intersection + consistency give the ranked candidates.
  • Switch to a diagnostic mode when compression makes the result loose (7.x) — restore observability.
  • Treat candidates as PFA targets, not verdicts — PFA confirms the physical defect.
  • Run volume diagnosis — aggregate a Pareto to separate systematic (fixable mechanism) from random.

11. Senior Engineer Thinking

  • Beginner: "Diagnosis gave dozens of candidates — the tool's bad, or there are many defects."
  • Senior: "A loose list on a compressed design means missing observability, not a bad tool — the compactor hid which cell failed (7.x). I re-run in a diagnostic/bypass mode to un-compact, and the candidates collapse to a few. Then PFA proves the top one — diagnosis localizes, PFA proves. And I check volume: if this site fails across many dies, it's systematic — a process/design fix, not just a scrap. Garbage in, garbage out — so I only diagnose a clean datalog."

The senior reads loose resolution as an observability problem, uses a diagnostic mode, and separates localization (diagnosis) from proof (PFA).

12. Silicon Impact

Diagnosis is the step that converts a confirmed defect into an actionable location — and, in aggregate, converts test failures into yield learning. It is fundamentally an inverse problem: from the observed failures (which patterns, which cells) plus the netlist and fault model, compute the fault candidates that best explain what was seen — reasoning backward from effect to likely cause. The engine is back-cone intersection: the defect must lie in the intersection of the failing cells' cones and be consistent with the passing cells (a candidate that would have failed a passing cell is rejected), so more failing observations tighten the set. The output — a ranked candidate list, a suspected fault type (stuck-at/bridge/open/transition), and an xy/layer hint — exists to point PFA, which is the essential boundary: diagnosis localizes; PFA proves. Because the method is observation-driven, its resolution tracks observability: many observers → tight, few → loose — and this collides productively with compression (7.x), which hides which exact cell failed behind a compacted signature, lowering resolution. That's a real coverage-vs-diagnosability tradeoff, resolved by a DIAGNOSTIC (bypass/hi-res) mode that un-compacts and restores per-cell observability — the reason diagnosable, compressed designs provide such a mode. Two boundaries keep diagnosis honest: garbage in, garbage out (a wrong fault model or unmasked X from a dirty 13.3 debug degrades the result — so clean the pattern debug first), and candidates are confidence, not certainty (PFA is the arbiter). The highest-leverage use is volume diagnosis: aggregating diagnosis across many failing dies yields a Pareto of failing sites/layers that distinguishes systematic failures (the same site across many dies → a design/process marginality to fix at the mechanism) from random particle defects — turning DFT from per-die pass/fail into a yield-learning engine that feeds process and design. For the failure-analysis engineer, diagnosis is a PFA target; for the yield/process engineer, it's a Pareto that directs improvement; for the DFT engineer, it's the payoff of clean chain (13.2) and pattern (13.3) debug; and for the program, it's how a debugged failure becomes fewer failures next lot. The next lesson (13.5) takes this whole localize-and-confirm discipline onto the tester at silicon bring-up, where the environment is live and the pressure is highest.

13. Engineering Checklist

  • Fed diagnosis a clean datalog (X masked, models right, 13.3) — no garbage-in.
  • Used failing + passing cells — cone intersection + consistency → ranked candidates.
  • Switched to a diagnostic/bypass mode when compression made the result loose (7.x).
  • Treated candidates as PFA targets (with confidence) — PFA confirms the physical defect.
  • Ran volume diagnosis — a Pareto to separate systematic (mechanism fix) from random.

14. Try Yourself

  1. Explain diagnosis as an inverse problem — from failing cells back to a candidate site via cone intersection.
  2. Show how the passing cells constrain (reject) candidates — and why more failing observers → tighter.
  3. State the boundary: diagnosis localizes, PFA proves — and what each produces.
  4. Explain why compression lowers diagnostic resolution and how a diagnostic/bypass mode restores it (7.x).
  5. Describe volume diagnosis → a Paretosystematic vs randomyield learning.

The diagnosis reasoning is tool-neutral; diagnosis is a DFT tool, PFA is a lab process, volume Pareto is yield engineering. No paid tool required to reason about localization.

15. Interview Perspective

  • Weak: "Diagnosis tells you where the defect is."
  • Good: "Diagnosis intersects the failing cells' cones to give candidate sites, and PFA confirms the physical defect."
  • Senior: "Diagnosis is an inverse problem: from the failing patterns/cells (a clean datalog — garbage in, garbage out) plus the netlist and fault model, it computes candidates by intersecting the failing cells' back-cones, consistent with the passing cells, and ranks them with a fault type and xy/layer hint. Its resolution tracks observabilitymore observers, tighter — so compression (7.x) lowers it by hiding which cell failed, and I un-compact with a diagnostic/bypass mode when it's loose. The boundary is firm: diagnosis localizes, PFA proves. And the big win is volume diagnosis — aggregate across many dies into a Pareto to separate systematic (a process/design fix) from random, so DFT drives yield learning, not just per-die scrap."

16. Interview / Review Questions

Diagnosis sits between two standardised worlds and one unstandardised one, and it is worth being explicit about which is which.

  • IEEE 1149.1 (JTAG / boundary scan) and IEEE 1500 (embedded core test) — the standardised access mechanisms through which test modes and chains are reached. What is standardised here is the access, not the diagnosis.
  • IEEE 1450 (STIL) — the standard pattern-and-datalog interchange format. Where a failure datalog is exchanged in STIL, the field meanings are defined; many production flows use vendor formats instead.
  • Diagnosis algorithms, candidate scoring, confidence values, and the ranked-list format are not standardised. They are vendor implementations of cone-intersection and fault-simulation techniques, and the scores from two tools are not comparable. Treat a confidence number as an internal ranking, never as a probability.
  • Scan cell numbering, unload-position indexing, and stitching-report formats are per-tool conventions. This is why section 6b states the convention before using it. The cell = N + 1 − p arithmetic follows from a stated convention, not from a standard.
  • Physical failure analysis — deprocessing, imaging, and probing — is laboratory practice governed by procedure rather than by a test standard. It is the only step in this chapter that establishes a fact about the silicon.

Within this curriculum: the triage that must precede diagnosis is Pattern Mismatch Debug; chain-structure localization and the k = N + 1 − C derivation are in Scan Chain Failure Debug; the observability cost of compaction is in Compression Loss Debug and EDT Scan Compression; the same discipline under tester conditions is Silicon Bring-up & Tester Debug. For the fault models that determine what a candidate list can even express, see Stuck-at Faults, Transition Delay Faults and Bridging & IDDQ Faults. The chain ordering that maps a cell index to an instance is Scan Stitching & Ordering.

17. Key Takeaways

  • Diagnosis is an inverse problem: from failing patterns/cells + netlist + fault model back to the fault candidates that best explain the observed failures — by intersecting the failing cells' back-cones, consistent with the passing cells (more failing observers → tighter).
  • Output: a ranked candidate list (+ confidence), a suspected fault type (stuck-at/bridge/open/transition), and an xy/layer hint — but diagnosis localizes, it does not prove; PFA (deprocess/image) confirms.
  • Resolution ~ observability: compression (7.x) hides which cell failedloose candidates → use a DIAGNOSTIC (bypass/hi-res) mode to un-compact (a real coverage-vs-diagnosability tradeoff).
  • Volume diagnosis aggregates across many dies into a Pareto of sites/layers → systematic (same site → design/process fix) vs randomyield learning (DFT beyond per-die pass/fail).
  • Garbage in, garbage out: a wrong fault model or unmasked X degrades diagnosis → clean the pattern debug (13.3) first; diagnosis gives candidates + confidence, not certainty. Next: 13.5 — silicon bring-up & tester debug.

18. Quick Revision

Diagnosis & failure localisation. A mismatch that survived the fork (13.3) is REAL → DIAGNOSIS = an INVERSE problem: from failing patterns/cells + netlist + fault model → fault CANDIDATES by INTERSECTING the failing cells' back-cones, consistent with the PASSING cells (more failing observers = tighter). Output: ranked candidates + confidence + fault type (stuck-at/bridge/open/transition) + xy/layer. Boundary: diagnosis LOCALIZES, PFA PROVES (deprocess/image). Resolution ~ observabilitycompression (7.x) hides the failing cell → LOOSE → re-run in a DIAGNOSTIC (bypass/hi-res) mode to un-compact. VOLUME diagnosis → aggregate many dies → a Paretosystematic (same site → design/process fix) vs randomyield learning. Garbage in = garbage out → clean 13.3 first. Next: 13.5 — silicon bring-up & tester debug.