Skip to content

DFT · Chapter 14 · Industry Case Studies

Case Study — Memory Block: MBIST Signoff

The fifth capstone case takes a memory block through MBIST signoff, and its point is a contrast: scan and ATPG are for logic while memories need their own test. An SRAM is a dense array of bit cells, not flops, so you cannot scan-stitch it, and it has fault models such as coupling, address-decoder, and retention faults that stuck-at ATPG does not target. So memories get MBIST, an on-chip controller that writes and reads the array with a March algorithm at speed and compares reads to expected values. The controller produces a go or no-go result plus an optional failure bitmap. Big memories ship with spare rows and columns, and built-in self-repair swaps in spares to recover yield. Memory is signed off separately, then integrated as a black box behind a collar. A clustered bitmap points to a column or decoder defect that repair often fixes.

Advanced15 min readDFTCase StudyMemoryMBISTBISR

Chapter 14 · Section 14.5 · Industry Case Studies

Project thread — the memory block, MBIST-signed-off: the logic (14.1–14.4) is scan+ATPG; the array needs its own on-chip March test + repair. 14.6 integrates memory + logic in an IP.

1. Why Should I Learn This?

The memory case shows the other half of DFT: scan + ATPG can't test an array, so memories get their own on-chip, at-speed March test (MBIST) — with self-repair (BISR) to recover yield.

  • Memories aren't scannable — dense arrays with own fault models (coupling, decoder, retention) → a dedicated test.
  • MBIST = an on-chip controller that writes/reads/compares with a March algorithm at speedGO/NOGO + bitmap.
  • BISR swaps in spare rows/columns to repair inevitable bad bits → yield recovery (repair signature in efuse).
  • Signed off separately from logic scan/ATPG, then integrated (memory = black box + collar to logic ATPG).

2. Real Silicon Story — the memory that failed a column, then passed

A chip's large SRAM failed MBIST on many dies — NOGO. Treated as logic, it was inexplicable; treated as random defects, the scrap rate was alarming. Someone proposed a respin of the memory.

The bitmap told the real story. MBIST didn't just report NOGO — it produced a failure bitmap, and the failing bits clustered on a single column across many rows. That pattern is not random — it's a structural array defect (a column line or sense-amp fault), exactly the kind large memories expect a few of. And the memory shipped with spare columns: BISR (built-in self-repair) identified the failing column, swapped in a spare, and stored the repair signature in efuse. On re-run, the memory reported GO — the die was good and shipped, no respin, no scrap. Lesson: a memory is not testable by scan — it needs its own test (MBIST, an on-chip, at-speed March), and its bitmap enables diagnosis and repair. A clustered bitmap (a column/row) is a repairable structural defect; BISR recovers the yield that random-defect thinking would have scrapped. Memory is signed off on its own termsGO/NOGO + bitmap + repair — then integrated with the logic.

3. Factory Perspective — the memory case through each lens

  • What the DFT/memory engineer sees: the MBIST controller (March, GO/NOGO, bitmap) and BISR — a dedicated test flow separate from logic scan (8.x).
  • What the yield engineer sees: the bitmap (clustered = structural = repairable) and the repair rateBISR recovers yield on arrays where bad bits are inevitable.
  • What the logic-DFT engineer sees: the memory as a black box with a scan collarlogic faults around it still covered by ATPG; MBIST runs in its own mode.
  • What management cares about: that memories are tested and repaired — a separate signoff that recovers yield (BISR) and prevents escapes on the densest, most defect-prone part of the die.

4. Concept — why not scan, MBIST, BISR, and integration

Why memories aren't scanned:

  • An SRAM is a dense array of bit cells (not flops) — you can't scan-stitch bit cells.
  • It has memory-specific fault models: stuck-at, transition, coupling (bit-to-bit), address-decoder, retention — which scan/stuck-at ATPG doesn't target.
  • → Memories get a dedicated test: MBIST.

MBIST (on-chip, at-speed March):

  • An on-chip controller writes and reads the array with a March algorithm, comparing reads to expected.
  • Built-in (the array is too big for external per-bit patterns) and at-speed (catches timing/coupling faults).
  • March C- (and variants): ascending/descending w0/r0/w1/r1 elements → detects the memory fault classes.

The controller (8.x):

  • A small FSM generates addresses, march data, read-compare → a GO/NOGO plus optionally a failure bitmap (which address/bit).
  • Controlled via test mode or a BIST interface (sometimes through JTAG, 10.x).

Redundancy & repair (BISR, 8.x):

  • Big memories ship with spare rows/columns. BISR finds failing cells and swaps in spares, storing the repair signature (efuse).
  • Recovers yield on an array where a few bad bits are inevitable. Signoff includes repair rate / remaining defects.

Signoff & integration:

  • MBIST coverage = the fault models the March algorithm detects (report which); run at-speed; report GO/NOGO + bitmap + repair.
  • Memory signed off separately from logic scan/ATPG, then integrated: to logic ATPG the memory is a black box (I/O wrapped/observed via a collar so logic around it is covered); MBIST runs in its own mode. Complementary: logic = scan+ATPG, memory = MBIST.
An MBIST controller generates addresses, march data, and read-compare to test the memory array at speed, outputting go/no-go and a bitmap, with BISR swapping in spares and a scan collar wrapping the memory for logic ATPGMBIST controller(FSM)addresses · march data ·read-compareMemory array (SRAM)dense bit cells — notscannableGO/NOGO + bitmappass/fail + whichaddress/bitBISR + sparerows/colsswap failing cells → repair(efuse)Scan collar (to logicATPG)memory = black box; logicaround it covered12
Figure 1 - the MBIST architecture: on-chip test + repair (representative). An on-chip MBIST CONTROLLER (a small FSM) generates ADDRESSES, march DATA (w0/r0/w1/r1), and READ-COMPARE, driving the MEMORY ARRAY at speed. It outputs GO/NOGO (pass/fail) and optionally a failure BITMAP (which address/bit failed). BISR (built-in self-repair) uses the bitmap to swap failing rows/columns for SPARES, storing the repair signature in efuse -> yield recovery. To LOGIC ATPG the memory is a BLACK BOX with a scan COLLAR (its I/O observed so logic faults around it stay covered). Memory is signed off SEPARATELY (MBIST), logic via scan+ATPG - complementary.

5. Mental Model — testing a parking garage vs testing offices

Logic scan and memory MBIST are like two different inspections for two different structures — you can't inspect a parking garage the way you inspect offices.

  • The offices (the logic) have individually addressable rooms you can walk into and check (scan cells you load/observe). The parking garage (the memory array) is thousands of identical bays in a dense grid — you can't run a hallway to each bay (you can't scan-stitch bit cells), and it has its own failure modes (a flooded row, a jammed column gate, a space that won't hold a car overnightcoupling, decoder, retention).
  • So the garage gets a dedicated inspector who drives the whole grid systematicallypark in every bay, come back and check the car's still there, in a set pattern (the March algorithm) — and reports pass/fail plus a map of which bays failed (the bitmap). This inspector is built into the garage (MBIST) because checking every bay from outside would take forever.
  • When the map shows a whole column of bays failing (clustered), that's not random potholes — it's a structural fault (a collapsed ramp to that column). And the garage was built with spare bays: the repair crew (BISR) reassigns the bad column's traffic to a spare column and records the reroute (efuse) — the garage opens for business anyway (yield recovered).
  • You report the two inspections separately (offices vs garage) and then certify the whole building — the garage a sealed unit to the office inspector (a black box + collar), each checked the right way.

Offices you walk (logic scan) vs a parking garage you drive systematically with a built-in inspector (memory MBIST) — a failing column is a structural fault the spare bays (BISR) repair; certify each the right way, then the whole building.

6. Working Example — the MBIST controller & March C-

Ship an MBIST controller sketch and the March C- element sequence:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// SystemVerilog - MBIST controller sketch + March C- (REPRESENTATIVE, simplified)
// March C-  (arrows = address direction ; w=write, r=read ; 0/1 = data):
//   { UP w0 ; UP (r0,w1) ; UP (r1,w0) ; DN (r0,w1) ; DN (r1,w0) ; DN r0 }
module mbist_ctrl #(parameter AW=8) (
  input  logic clk, rst_n, start,
  output logic [AW-1:0] addr,
  output logic          we, wdata,       // write-enable, write-data
  input  logic          rdata,           // read-data from array
  output logic          go, nogo, done,
  output logic [AW-1:0] fail_addr        // (part of the failure bitmap)
);
  // (a small FSM sequences the March elements, generates addr/we/wdata,
  //  and on each read compares rdata to the EXPECTED value; a mismatch -> NOGO + record fail_addr)
  // ... element sequencer (UP/DN, w0/r0/w1/r1) ...
  // on read: if (rdata !== expected) begin nogo <= 1'b1; fail_addr <= addr; end   // bitmap entry
  // go <= ~nogo when done;   done marks the run complete
endmodule
Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# March C- element sequence + MBIST signoff - REPRESENTATIVE, tool-neutral:
  MARCH C-  (workhorse; detects the memory fault classes):
    M0: (UP)  w0                      # initialize all cells to 0
    M1: (UP)  r0, w1                  # read expect 0, then write 1     -> detects transition/coupling up-address
    M2: (UP)  r1, w0                  # read expect 1, then write 0
    M3: (DN)  r0, w1                  # descending
    M4: (DN)  r1, w0
    M5: (DN)  r0                      # final read expect 0
  detects: stuck-at, transition, coupling (bit-to-bit), address-decoder faults ; run AT-SPEED for timing/retention
  OUTPUT: GO/NOGO + failure BITMAP (address/bit) -> BISR repair if clustered ; report coverage of the fault models
# SIGNOFF: report the March algorithm + which fault models it covers + GO/NOGO + bitmap + repair rate. Run at-speed.
# INTEGRATION: to logic ATPG the memory is a BLACK BOX + scan COLLAR (logic around it covered) ; MBIST in its own mode.

March C- walks the array with a fixed read/write sequence to detect the memory fault classes:

The March C-minus sequence: write 0 ascending, then read-0-write-1 and read-1-write-0 ascending, the same descending, and a final read 0, each read compared to expected to detect the memory fault classesMarch C-: w0↑ → (r0,w1)↑ → (r1,w0)↑ → (r0,w1)↓ → (r1,w0)↓ → r0↓ → GO/NOGO + bitmapMarch C-: w0↑ → (r0,w1)↑ → (r1,w0)↑ → (r0,w1)↓ → (r1,w0)↓ → r0↓ → GO/NOGO + bitmap1w0 (↑)initialize all cells to 02(r0, w1) ↑read 0, write 1 — transition/coupling3(r1, w0) ↑read 1, write 04(r0,w1)(r1,w0) ↓descending — decoder/coupling5r0 ↓ → GO/NOGOfinal read; bitmap on mismatch → BISR
Figure 2 - the March C- algorithm sequence (representative). MBIST walks the array element by element: (M0) write 0 to all cells (ascending) ; (M1 up) read 0 then write 1 ; (M2 up) read 1 then write 0 ; (M3 down) read 0 then write 1 ; (M4 down) read 1 then write 0 ; (M5 down) read 0. Each read COMPARES to the expected value ; a mismatch -> NOGO and a bitmap entry. The ascending/descending order and the r/w interleave detect stuck-at, transition, COUPLING (a write to one cell disturbing a neighbor), and address-DECODER faults. Run AT-SPEED to catch timing/retention. This fixed sequence is what makes MBIST both compact (built-in) and thorough.

7. Industry Flow — two complementary signoffs, integrated

The memory is signed off by MBIST separately from the logic's scan+ATPG, then the two are integrated:

Two complementary signoffs: logic signed off by scan and ATPG, memory signed off separately by MBIST with BISR repair, then integrated with the memory as a black box wrapped by a scan collar
Figure 3 - two complementary DFT signoffs, integrated (representative). The LOGIC (flops + combinational logic) is signed off by SCAN + ATPG (14.1-14.4): controllable/observable scan cells, DRC, ATPG coverage. The MEMORY (dense array) is signed off SEPARATELY by MBIST: an on-chip at-speed March test -> GO/NOGO + bitmap, with BISR repairing bad rows/columns from spares. INTEGRATION: the memory is a BLACK BOX to logic ATPG (wrapped by a scan COLLAR so logic faults around it stay covered), and MBIST runs in its own test mode. The full-chip signoff = LOGIC (scan+ATPG) AND MEMORY (MBIST+BISR), each done the right way.

8. Debugging Session — MBIST NOGO with a column-clustered bitmap

1

A large SRAM fails MBIST with NOGO on many dies and, treated as random defects, the scrap rate is alarming and a memory respin is proposed, but the failure bitmap shows the failing bits cluster on a single column across many rows rather than scattering randomly, which is the signature of a structural column-line or sense-amp defect rather than random bit failures -- and because the memory ships with spare columns, BISR swaps in a spare column for the failing one and stores the repair signature, after which the memory re-runs to GO and the die is good and shipped with no respin and no scrap

MEMORIES NEED THEIR OWN TEST — A CLUSTERED MBIST BITMAP IS A REPAIRABLE STRUCTURAL DEFECT; BISR RECOVERS THE YIELD
Symptom

A large SRAM fails MBIST (NOGO) on many dies. Treated as random defects, the scrap rate is alarming and a memory respin is proposed. Random defects, or something structural?

Root Cause

The failure bitmap shows the failing bits cluster on a single column across many rows rather than scattering randomly, which is the signature of a structural column-line or sense-amp defect, not random bit failures — and such defects are exactly what spare columns and BISR exist to repair. MBIST doesn't just report NOGO; it produces a failure bitmapwhich address/bit failed — and the pattern of the bitmap is diagnostic. Random defects would scatter failing bits uniformly across the array. Here they line up on one column across many rows, which points at a shared column resource: a broken/weak column bit-line, a failing sense-amp for that column, or a column-select fault — a single structural defect that makes every cell on that column read wrong, not hundreds of independent cell failures. This distinction is the whole point of memory-specific test and diagnosis (8.x): a dense array is expected to have a few such defects, which is why large memories ship with spare rows/columns. Treating the NOGO as random defects (and scrapping the dies) misreads the bitmap and throws away good silicon — and a respin is pointless because the array is repairable by design. It's neither a logic problem (the memory isn't scan/ATPG territory) nor an un-fixable defect — it's a repairable structural column fault, and the bitmap already told you so.

Fix

Read the bitmap, then repair: recognize the column-clustered pattern as a structural column defect, let BISR swap in a spare column for the failing one and store the repair signature in efuse, then re-run MBIST — after which the memory reports GO and the die is good and ships, with no respin and no scrap. Use the bitmap as diagnosis (13.4 in memory form): the column cluster identifies the failing column. Invoke BISR (built-in self-repair): it allocates a spare column, remaps the failing column's addresses to the spare, and stores the repair signature in efuse so the repair persists in the field (8.x). Re-run MBIST: the array now reports GO — the repaired column reads correctly and the die is good. Report the repair in signoff (which spare used, the repair rate across the lot). If a memory had too many failing columns/rows to repair (spares exhausted), or a decoder fault that spares can't fix, then it's a legitimate scrap — but the bitmap tells you which case you're in. The principle to lock in: a memory is a dense array of bit cells, not flops, so it cannot be scan-stitched and has its own fault models (stuck-at, transition, coupling, address-decoder, retention) that scan and stuck-at ATPG do not target — which is why memories get a dedicated, built-in, at-speed test (MBIST) that walks the array with a March algorithm and reports GO/NOGO plus a failure bitmap; the bitmap is diagnostic, and a clustered bitmap (a whole column or row failing) is the signature of a repairable structural defect (a bit-line, sense-amp, or select fault), not random bit failures, so BISR swaps in a spare row or column and stores the repair signature in efuse to recover yield on an array where a few bad bits are inevitable, and you scrap only when the defect is un-repairable (spares exhausted or a decoder fault) — treating an MBIST NOGO as random defects, and scrapping repairable dies, throws away yield that the memory was designed to recover, whereas reading the bitmap and repairing is how the densest, most defect-prone block on the die is signed off; and the memory is signed off separately from the logic (which is scan+ATPG), then integrated as a black box wrapped by a scan collar so logic faults around it are still covered. (Memory fault models, MBIST, March, and BISR are Ch8; the bitmap-as-diagnosis parallels 13.4; JTAG/BIST access is 10.x; integration with logic ATPG is 14.6.)

9. Common Mistakes

  • Trying to scan a memory array. Bit cells aren't scannable — memories need MBIST (their own test, 8.x).
  • Reading a clustered bitmap as random defects. A column/row cluster is a structural, repairable defect — BISR it, don't scrap.
  • Skipping at-speed. MBIST must run at-speed to catch timing/coupling/retention faults, not just static ones.
  • Not reporting which fault models are covered. MBIST coverage = the fault classes the March detectsreport them.
  • Forgetting the collar. To logic ATPG the memory is a black boxwrap it so logic faults around it are still covered.

10. Industry Best Practices

  • Test memories with MBIST — an on-chip, at-speed March (C- or variant) — not scan/ATPG.
  • Produce a failure bitmap — enables diagnosis (structural vs random) and repair.
  • Repair with BISR — spare rows/columns; store the repair signature (efuse) for the field.
  • Report the memory fault models covered + GO/NOGO + bitmap + repair rate; run at-speed.
  • Integrate as a black box + collar — sign off memory separately, keep logic around it covered by ATPG.

11. Senior Engineer Thinking

  • Beginner: "The memory fails MBIST on lots of dies — random defects, scrap them (or respin)."
  • Senior: "NOGO alone isn't the story — read the bitmap. Failing bits on one column across many rows = a structural column defect (bit-line/sense-amp), not random. That's repairable: BISR swaps in a spare column and efuses the signature — re-run → GO, die shipped. I scrap only if spares are exhausted or it's a decoder fault. Memories need their own test — MBIST at-speed — and the bitmap is my diagnosis. Random-defect thinking scraps repairable yield."

The senior reads the MBIST bitmap as diagnosis, repairs structural defects with BISR, and scraps only the un-repairable.

12. Silicon Impact

The memory case is where the capstone shows that DFT is not one method but two complementary onesscan + ATPG for logic, MBIST for memory — because a dense array is fundamentally not a bag of flops. An SRAM's bit cells can't be scan-stitched, and the array fails in ways scan/stuck-at ATPG doesn't model: coupling (a write to one cell disturbing a neighbor), address-decoder faults, retention (a cell that won't hold its value), on top of stuck-at/transition. So memories get a dedicated, built-in, at-speed test: MBIST, an on-chip controller that writes and reads the array with a March algorithm (C- the workhorse) and compares to expectedbuilt-in because the array is far too large for external per-bit patterns, and at-speed because timing/coupling/retention faults only show at speed. The controller produces a GO/NOGO and, crucially, a failure bitmap (which address/bit) that is diagnostic: a clustered bitmap (a whole column or row) is the signature of a structural, repairable defect (bit-line, sense-amp, select), while scattered bits are random. Because large arrays inevitably carry a few such defects, they ship with spare rows/columns, and BISR (built-in self-repair) swaps in spares and stores the repair signature in efuserecovering yield that random-defect thinking would scrap, and persisting the repair into the field. Signoff therefore reports the March algorithm and the fault models it covers, runs at-speed, and reports GO/NOGO + bitmap + repair rate — and it is done separately from the logic signoff, then integrated: to logic ATPG the memory is a black box wrapped by a scan collar (so logic faults around it stay covered), while MBIST runs in its own test mode. The debug lesson is a memory-domain echo of diagnosis (13.4): read the bitmap — a column cluster is repairable (BISR), not a scrap and not a respin; you scrap only when spares are exhausted or a decoder fault defeats repair. For the DFT/memory engineer, this case is the MBIST controller + BISR; for the yield engineer, it's the bitmap and repair rate that recover the densest, most defect-prone block; for the logic-DFT engineer, it's the black-box collar that keeps the surrounding logic covered; and for the program, it's the recognition that full-chip test = logic (scan+ATPG) AND memory (MBIST+BISR), each done the right way. In the project thread, the logic of 14.1–14.4 is scan-and-ATPG signed off; the memory is now MBIST-and-BISR signed off; and the final case (14.6) integrates memory and logic into an IP with compression and ATPG at scale. The throughline: memories need their own test — an on-chip, at-speed March — and their bitmap turns failures into diagnosis and repair, recovering yield that scan-thinking would throw away.

13. Engineering Checklist

  • Tested the memory with MBIST (on-chip, at-speed March) — not scan/ATPG.
  • Produced a failure bitmap and read it (clustered = structural/repairable vs random).
  • Repaired with BISR — spare rows/columns; stored the repair signature (efuse) for the field.
  • Reported the memory fault models covered + GO/NOGO + bitmap + repair rate; ran at-speed.
  • Integrated as a black box + scan collar — memory signed off separately; logic around it still covered.

14. Try Yourself

  1. Explain why an SRAM can't be scan-stitched and which memory fault models scan/ATPG doesn't target.
  2. Describe MBIST — an on-chip, at-speed March controller (write/read/compare → GO/NOGO + bitmap).
  3. Walk the March C- element sequence and say which fault classes it detects.
  4. Explain BISR — spare rows/columns, the repair signature (efuse), and yield recovery.
  5. Debug an MBIST NOGO with a column-clustered bitmap — why it's repairable (BISR), not random/scrap.

The MBIST/BISR reasoning is tool-neutral; the controller is on-chip, BISR is a memory feature. No paid tool required to reason about the memory case.

15. Interview Perspective

  • Weak: "Memories are tested with BIST instead of scan."
  • Good: "Memories use MBIST — an on-chip controller running a March algorithm — and BISR repairs bad bits with spares."
  • Senior: "A memory is a dense array of bit cells, not flops, so you can't scan-stitch it, and it has fault models scan/ATPG doesn't targetcoupling, decoder, retention. So it gets MBIST: an on-chip controller that writes/reads the array with a March algorithm at-speed and compares, producing GO/NOGO + a failure bitmap. The bitmap is diagnosis — a clustered column/row is a structural, repairable defect, and BISR swaps in spare rows/columns, efusing the repair signature to recover yield (persisting to the field). I scrap only when spares are exhausted or it's a decoder fault. The memory is signed off separately (report the fault models covered, GO/NOGO, bitmap, repair rate) and integrated as a black box + collar so logic ATPG still covers the surrounding logic. Logic = scan+ATPG, memory = MBIST — complementary."

16. Interview / Review Questions

17. Key Takeaways

  • Memories aren't scannable: an SRAM is a dense array of bit cells (not flops) with memory-specific fault models (stuck-at, transition, coupling, address-decoder, retention) that scan/stuck-at ATPG doesn't target — so memories get a dedicated test.
  • MBIST = an on-chip controller that writes/reads the array with a March algorithm (C- the workhorse) at-speed, comparing reads to expectedGO/NOGO + a failure bitmap (which address/bit) — built-in (the array is too big for external patterns) and at-speed (timing/coupling/retention).
  • BISR uses the bitmap to swap failing rows/columns for spares, storing the repair signature in efuseyield recovery (persists to the field) on arrays where a few bad bits are inevitable.
  • The bitmap is diagnosis: a clustered column/row is a structural, repairable defect (bit-line/sense-amp) → BISR it; scatter = random; scrap only when spares are exhausted or a decoder fault defeats repair.
  • Signed off separately from logic (report fault models covered + GO/NOGO + bitmap + repair rate, run at-speed), then integrated as a black box + scan collar so logic around it stays covered by ATPG. Logic = scan+ATPG, memory = MBIST — complementary. Next: 14.6 — IP: scan + compression + ATPG signoff.

18. Quick Revision

Case study — memory block: MBIST signoff. Scan+ATPG = LOGIC ; MEMORIES need their OWN test. An SRAM = a dense ARRAY of bit cells (not flops) → NOT scan-stitchable, with own fault models (stuck-at, transition, COUPLING, address-DECODER, RETENTION) scan/ATPG misses. MBIST = on-chip controller writes/reads the array with a MARCH algorithm (C- workhorse) AT-SPEED, compares → GO/NOGO + failure BITMAP (address/bit). BISR = swap failing rows/cols for SPARES, store the repair signature in efuse → YIELD RECOVERY (persists to field). Bitmap = diagnosis: clustered column/row = a structural REPAIRABLE defect (bit-line/sense-amp) → BISR ; scatter = random ; scrap only if spares exhausted / decoder fault. Signoff SEPARATE from logic (report fault models covered + GO/NOGO + bitmap + repair rate, at-speed) → INTEGRATE as a black box + scan COLLAR (logic around it covered). Logic=scan+ATPG, memory=MBIST — complementary. Ships RTL (MBIST/March). Next: 14.6 — IP: scan + compression + ATPG signoff.