Skip to content

DFT · Chapter 8 · Memory BIST (MBIST)

Why Memories Need Their Own Test

Scan and ATPG test random logic, but they cannot test memory arrays, so memories test themselves with memory BIST. There are four reasons. First, a memory is a dense array of bit cells, not random logic, so modeling every cell with ATPG would need an astronomical number of patterns and per-cell access that does not exist, while a regular array fits an algorithmic test. Second, memories have their own fault classes, such as coupling between cells, retention, and address-decoder faults, that logic stuck-at models miss. Third, cells sit behind an address, data, and control interface with sense amplifiers and are not scannable per cell. Fourth, a memory is an unknown source in scan that corrupts the compactor. The solution is an on-chip controller that runs algorithmic March patterns at speed, which is scalable, on-chip, and repair-enabling.

Foundation12 min readDFTMBISTMemory TestMarchX-Source

Chapter 8 · Section 8.1 · Memory BIST (MBIST)

Project thread — the mini-SoC memory that was an X-source in scan (7.5) now gets its own test: MBIST. 8.6 runs it end-to-end and closes the 7.5 loop.

1. Why Should I Learn This?

Every real SoC has embedded memories, and scan/ATPG can't test them — so MBIST is a required, standard part of the DFT flow.

  • Memory is a dense array (not random logic) → algorithmic test fits; per-gate ATPG doesn't.
  • Memory has its own fault classes (coupling, retention, decoder — 8.2) → stuck-at won't do.
  • Cells aren't scannable per cell, and memory is an X-source in scan (7.5).
  • MBIST = on-chip controller running algorithmic March patterns at-speed — scalable, on-chip, repair-enabling (8.5).

2. Real Silicon Story — trying to scan a memory

A team, closing coverage (Chapter 6), found a memory block dragging their number down and tried to raise its scan coverage the way they would for logic — more ATPG patterns, then test points (6.4). Coverage wouldn't move, the pattern count exploded, and — worse — the memory corrupted their scan compression as an X-source (7.5).

The effort was fundamentally misdirected. A memory's bit cells aren't flops on a scan chain — there's no per-cell scan access for ATPG to exploit — and its real defects (coupling between neighbors, retention, decoder faults) aren't stuck-at faults ATPG models. No amount of logic ATPG can test a memory array.

The fix was to stop scanning the memory and give it its own test: MBIST — an on-chip controller running an algorithmic March test (8.3) that writes and reads every cell at speed. In scan mode, the memory was bypassed/initialized (resolving the 7.5 X-source). Memory coverage came from MBIST; logic coverage from scan — each with the right tool. Lesson: memories need their own test; don't try to scan an arrayMBIST it.

3. Factory Perspective — memory test through each lens

  • What the test engineer sees: a separate MBIST run (algorithmic, at-speed, go/nogo) for memories — tiny test data (generated, not stored) — alongside scan for logic.
  • What the yield engineer sees: that memory arrays are large → some defects are statistically certain, so MBIST + repair (8.5) is what recovers yield (1.2) instead of scrapping whole dies.
  • What the RTL/DV engineer sees: that memories must be wrapped (MBIST access) and bypassed/initialized in scan (kill the X-source, 7.5) — an integration requirement, not more ATPG.
  • What management cares about: that memory coverage (via MBIST) is part of the DPPM commitment (6.5/1.5), and that MBIST + repair protects yield on memory-heavy SoCs.

4. Concept — why scan fails, and what MBIST provides

Why scan/ATPG can't test memory arrays:

  • Dense array, not random logic: millions of identical bit cells — ATPG would need per-cell access and enormous patterns; the regular structure instead invites an algorithmic test.
  • Own fault classes (8.2): coupling (neighbor interference), retention (leaky cells), address-decoder faults, read/write timing, pattern-sensitivenot logic stuck-at; need cell-pair and address-sequence patterns.
  • No per-cell scan access: cells are behind an address/data/control interface and sense ampsnot flops on a chain.
  • X-source in scan (7.5): memory outputs are unknown during scan → corrupt the compactor → must be bypassed/initialized in scan.

What MBIST provides:

  • On-chip controller (8.4) that generates an algorithmic test (March, 8.3): write/read every cell in specific patterns and address orders, comparing read data to expectedpass/fail.
  • At-speed: runs at the memory's rated frequency → catches timing and retention faults a slow test misses.
  • Scalable: patterns are generated, not storedtiny test data volume (unlike scan's stored patterns) — and it scales to array size as O(N) (8.3).
  • On-chip: can run at power-on / in the field (link to Chapter 9's in-system BIST) — not just on the ATE.
  • Repair-enabling: the comparator's failure info drives redundancy/BISR (8.5) to repair bad cells → yield (1.2).

The division of labor:

  • Logic → scan/ATPG (Chapters 3–7). Memory → MBIST (this chapter). Each defect domain gets the right tool; in scan, the memory is bypassed so it doesn't corrupt compression (7.5).
Random logic is tested by scan and ATPG; a memory array cannot be scanned per cell and is tested by an on-chip MBIST controller running algorithmic patternsRandom logicflops + gates→ SCAN + ATPG (Ch3–7)scan cells,stuck-at/transitionMemory arraydense cells; not scannable;own faults; X-source (7.5)→ MBIST (self-test)on-chip controller,algorithmic March, at-speed12
Figure 1 - logic vs memory need different test methods (representative). RANDOM LOGIC (flops + gates) is tested by SCAN + ATPG (Ch3-7): flops become scan cells, ATPG targets stuck-at/transition. A MEMORY ARRAY is a dense grid of bit cells behind an address/data/control interface + sense amps -- NOT flops on a chain, so scan CAN'T reach the cells; its faults (coupling, retention, decoder) aren't logic stuck-at; and in scan its outputs are UNKNOWN (X), corrupting the compactor (7.5). So the memory tests ITSELF with MBIST: an on-chip controller writes+reads the array with algorithmic March patterns at-speed, comparing to expected. Logic -> scan; memory -> MBIST.

5. Mental Model — inspecting a library vs a warehouse of machines

Scan/ATPG and MBIST are like two different inspection jobs needing two different methods.

  • Random logic is like a warehouse of unique machines (gates/flops) — you inspect each by wiring test points to it (scan cells) and probing specific inputs/outputs (ATPG). Every machine is different, so you need a tailored approach — exactly what ATPG does.
  • A memory is like a vast library of identical shelves (bit cells). You don't wire a test point to every book — that's absurd. Instead you run an algorithm: 'walk the aisles in order, place a known book on every shelf, then walk back and check each is still there and readable' — a March test. The regular structure makes the algorithm efficient where per-item wiring is impossible.
  • The library also has failure modes a machine doesn't: a book fading over time (retention), a mis-numbered aisle (address decoder), or a book bleeding onto its neighbor (coupling) — you must check pairs and sequences, not just each book alone.
  • And you don't send the algorithm's every step from outside — you install a librarian robot (the on-chip MBIST controller) that runs the walk itself, at full speed, and just reports pass/fail (and which shelf failed, for repair).

You inspect a warehouse of unique machines by wiring each; you inspect a library of identical shelves by running an algorithm — memory needs the algorithm (MBIST).

6. Working Example — a memory, and why scan can't reach it

A behavioral memory shows the interface scan can't scan through:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// SystemVerilog - a simple synchronous RAM (behavioral). The ARRAY is not flops on a scan chain.
module ram #(parameter AW=8, DW=32) (
  input  logic clk, we,
  input  logic [AW-1:0] addr,          // address decoder selects ONE of 2^AW cells
  input  logic [DW-1:0] wdata,
  output logic [DW-1:0] rdata          // via sense amps - UNKNOWN (X) until written (an X-source in scan, 7.5)
);
  logic [DW-1:0] mem [0:(1<<AW)-1];    // 2^AW x DW bit cells - a DENSE ARRAY, not scannable per cell
  always_ff @(posedge clk) begin
    if (we) mem[addr] <= wdata;        // write path
    rdata <= mem[addr];                // read path (sense amps)
  end
endmodule
Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
# Why scan/ATPG can't test this - REPRESENTATIVE, tool-neutral:
  - mem[] is a DENSE ARRAY (2^AW x DW cells) behind addr/we/wdata/rdata -> NO per-cell scan access
  - real faults: COUPLING (mem[a] write disturbs mem[b]), RETENTION (cell leaks), ADDRESS DECODER (wrong cell),
    read/write TIMING -> NOT logic stuck-at (Ch2) -> ATPG can't model or reach them
  - in scan, rdata is UNKNOWN (X) until written -> floods the compactor (7.5) -> must BYPASS/INIT in scan
# SOLUTION: MBIST - an on-chip controller WRITES+READS every cell with a March algorithm (8.3) at-speed, compares
#   to expected -> pass/fail (+ failing address for repair, 8.5). Memory -> MBIST; logic -> scan.

7. Industry Flow — memory takes the MBIST path

Logic and memory split into scan and MBIST paths, both feeding coverage/signoff:

Logic goes down the scan and compression path; memories are wrapped, bypassed in scan, and tested by MBIST; both feed coverage and signoffLogic → scan; memory → MBIST; both → signoffLogic → scan; memory → MBIST; both → signoff1Logic → scan/ATPG/compressionCh3–7 → logic coverage2Memory wrapped + bypassed in scankills the X-source (7.5)3MBIST self-testalgorithmic March, at-speed (8.3)4Failing addresses → repair (8.5)redundancy/BISR → yield (1.2)5Coverage + signoff (6.5)logic + memory → DPPM (1.5)
Figure 2 - the logic vs memory test split (representative). The design's LOGIC goes down the SCAN/ATPG/COMPRESSION path (Ch3-7) -> logic coverage. Each MEMORY is WRAPPED and BYPASSED/INITIALIZED in scan (kills the 7.5 X-source) and instead tested by MBIST -- an on-chip controller running an algorithmic March test (8.3) at-speed, with a comparator -> memory pass/fail (+ failing addresses for repair, 8.5). Both paths feed COVERAGE + SIGNOFF (6.5) against the DPPM target (1.5). Memory gets the right tool (MBIST), and stops hurting scan compression.

8. Debugging Session — trying to scan-cover a memory

1

A memory block drags down scan coverage and the team adds ATPG patterns and test points to cover it, which is futile because the cells are not scannable per cell and the memory's faults are not logic stuck-at, and the memory also corrupts scan compression as an X-source -- so the fix is MBIST (algorithmic self-test) plus bypassing the memory in scan, not more logic ATPG

YOU CAN'T SCAN A MEMORY ARRAY — MBIST IT AND BYPASS IT IN SCAN
Symptom

A memory block is dragging down scan coverage. The team adds more ATPG patterns, then test points (6.4), to 'cover' it — coverage won't move, pattern count explodes, and the memory corrupts the scan compactor (7.5).

Root Cause

A memory array cannot be tested by scan/ATPG at all — its cells aren't scannable per cell, its real faults aren't logic stuck-at, and it's an X-source in scan — so logic ATPG effort on it is fundamentally misdirected. Three independent facts make this impossible: (1) No per-cell scan access — the array's bit cells are not flops on a scan chain; they sit behind an address/data/control interface, so ATPG has no way to control or observe an individual cell the way it does a scan flop. (2) Wrong fault models — a memory's defects are coupling (a write to one cell disturbing a neighbor), retention (a cell leaking its value over time), address-decoder faults (the wrong cell accessed), and read/write timingnone of which the stuck-at model ATPG uses can represent, so even if ATPG could reach the cells, it isn't looking for the right defects. (3) X-source — during scan the memory's outputs are unknown until written, so they flood the compactor (7.5), hurting the very logic coverage you're trying to raise. Piling on patterns/test points fights all three at once and can't win — the memory simply isn't a scan problem.

Fix

Test the memory with MBIST (its own algorithmic self-test) and bypass/initialize it in scan — logic coverage comes from scan, memory coverage from MBIST. Insert an on-chip MBIST controller (8.4) that runs an algorithmic March test (8.3): it writes and reads every cell in specific patterns and address orders at speed, comparing to expected → pass/fail (and failing addresses for repair, 8.5) — this catches the coupling/retention/decoder/timing faults that are the memory's actual defects. In scan mode, bypass or initialize the memory (drive its outputs to a known value) so it stops being an X-source at the compactor (7.5), letting logic compression/coverage run cleanly. Now each domain uses the right tool: logic → scan/ATPG/compression (Chapters 3–7), memory → MBIST (this chapter), and both feed coverage/signoff (6.5) toward the DPPM target (1.5). The principle to lock in: memory arrays cannot be tested by scan/ATPG — they are dense arrays with no per-cell scan access, their real faults (coupling, retention, address-decoder, timing) are not logic stuck-at, and they are X-sources in scan — so memories test themselves with MBIST, an on-chip controller that algorithmically writes and reads the array at-speed and compares to expected; the fix for a memory dragging down scan coverage is MBIST plus bypassing the memory in scan, never more logic ATPG. (Memory fault models are 8.2; March algorithms are 8.3; the controller is 8.4; repair is 8.5; the X-source resolution ties back to 7.5.)

9. Common Mistakes

  • Trying to ATPG-cover a memory. Cells aren't scannable; faults aren't stuck-atMBIST it.
  • Leaving the memory live in scan. It's an X-source (7.5) — bypass/initialize it in scan.
  • Assuming stuck-at covers memory faults. Coupling/retention/decoder need algorithmic patterns (8.2/8.3).
  • Testing memory at a slow clock. Memory needs at-speed MBIST (timing/retention) — like transition test (2.3).
  • Forgetting repair. Large arrays have certain defects — plan redundancy/BISR (8.5) for yield (1.2).

10. Industry Best Practices

  • Use MBIST for all embedded memories — algorithmic, at-speed self-test.
  • Wrap + bypass/initialize memories in scan — remove the X-source (7.5), let logic compression run clean.
  • Run at-speed — catch timing/retention faults (8.2).
  • Plan redundancy + BISR for large arrays — recover yield (8.5/1.2).
  • Report memory coverage (MBIST) with logic coverage toward the DPPM target (6.5/1.5).

11. Senior Engineer Thinking

  • Beginner: "This memory block has low scan coverage — add ATPG patterns and test points."
  • Senior: "You can't scan a memory array — no per-cell access, and its faults (coupling/retention/decoder) aren't stuck-at. Plus it's an X-source in scan (7.5). I MBIST it — an on-chip controller running an algorithmic March test at-speed — and bypass it in scan. Logic → scan; memory → MBIST. Then I plan repair (8.5) because a big array will have defects."

The senior gives memory its own test (MBIST) and bypasses it in scan — never fights an array with logic ATPG.

12. Silicon Impact

MBIST exists because memories are a fundamentally different test problem than logic, and every modern SoC is full of them — so memory test is not optional, it's a standard, required discipline that runs alongside scan. The four reasons scan can't do the job are structural, not fixable with effort: no per-cell scan access (cells aren't flops on a chain), wrong fault models (a memory's coupling/retention/decoder/timing defects aren't stuck-at), the regular-array structure that suits an algorithm rather than per-gate ATPG, and the X-source behavior that hurts scan compression (7.5). MBIST answers all four with an on-chip controller running an algorithmic March test (8.3) at speed — an approach that is scalable (patterns generated, not storedtiny test data, crucial when arrays are huge), on-chip (usable at power-on and in the field, the bridge to Chapter 9), and — uniquely valuable for memory — repair-enabling (its failure data drives redundancy/BISR, 8.5, to recover yield that would otherwise be lost to a single bad cell, 1.2). The immediate, concrete payoff for the project is that 7.5's problem dissolves: with the memory MBIST-tested and bypassed in scan, it stops corrupting the compactor, so logic compression runs clean and memory coverage is achieved — each defect domain with the right tool, both feeding the DPPM commitment (6.5/1.5). For the RTL/DV engineer, the lesson reframes a memory from a coverage liability into an integration task: wrap it for MBIST, bypass it in scan, and let the algorithmic self-test do what no amount of logic ATPG ever could. The rest of the chapter builds the pieces — fault models (8.2), March algorithms (8.3), the controller (8.4), repair (8.5) — and puts them on the mini-SoC memory in 8.6.

13. Engineering Checklist

  • Identified all embedded memories — planned MBIST for each (not scan/ATPG).
  • Wrapped memories and bypassed/initialized them in scan (removed the X-source, 7.5).
  • Chose at-speed MBIST to catch timing/retention (8.2/8.3).
  • Planned redundancy + BISR for large arrays (yield, 8.5/1.2).
  • Reported memory (MBIST) coverage with logic coverage toward the DPPM target (6.5/1.5).

14. Try Yourself

  1. List the four reasons scan/ATPG can't test a memory array (access, fault models, dense array, X-source).
  2. For the behavioral RAM, argue why ATPG has no per-cell access to mem[].
  3. Name three memory-specific faults (coupling, retention, decoder) and why stuck-at misses them (8.2).
  4. Explain why the memory is an X-source in scan and how bypass/init fixes it (7.5).
  5. State what MBIST provides (algorithmic, at-speed, scalable, on-chip, repair) and why each fits memory.

The reasoning is tool-neutral; the RAM is representative. Real MBIST comes from memory/DFT tools. No paid tool required to see why memory needs its own test.

15. Interview Perspective

  • Weak: "Memories are tested with MBIST instead of scan."
  • Good: "Scan can't reach memory cells and memory faults aren't stuck-at, so an on-chip MBIST controller tests the array."
  • Senior: "Scan/ATPG can't test a memory array for four reasons: it's a dense array (not random logic) with no per-cell scan access; its real faultscoupling, retention, address-decoder, timingaren't logic stuck-at; and it's an X-source in scan that corrupts the compactor (7.5). So memories test themselves with MBIST: an on-chip controller that algorithmically writes and reads every cell with a March test (8.3) at-speed, comparing to expected → pass/fail (+ failing addresses for repair). It's scalable (patterns generated, not stored → tiny test data), on-chip (in-field/power-on), and repair-enabling (BISR → yield). The fix for a memory hurting scan coverage is MBIST + bypass it in scannever more logic ATPG. Logic → scan; memory → MBIST."

16. Interview / Review Questions

17. Key Takeaways

  • Scan and ATPG cannot test memory arrays — so memories test themselves with MBIST.
  • Four reasons: memory is a dense array (not random logic, suits an algorithm); it has its own fault classes (coupling, retention, address-decoder, timing — 8.2, not logic stuck-at); its cells are not scannable per cell (behind an address/data/control interface); and it's an X-source in scan that corrupts the compactor (7.5).
  • MBIST is an on-chip controller that algorithmically writes and reads the array with March patterns (8.3) at-speed and compares to expected → pass/fail (+ failing addresses for repair).
  • MBIST's benefits fit memory exactly: at-speed (timing/retention), scalable (patterns generated, not stored → tiny test data), on-chip (in-field/power-on, Chapter 9), and repair-enabling (redundancy/BISR, 8.5 → yield, 1.2).
  • Division of labor: logic → scan/ATPG/compression (Ch3–7); memory → MBIST (this chapter) — and bypassing the memory in scan resolves the 7.5 X-source, letting logic compression run clean. Next: 8.2 — memory fault models.

18. Quick Revision

Why memories need their own test (Ch8 opener). Scan/ATPG can't test memory arrays for 4 reasons: (1) dense array, not random logic → suits an ALGORITHM, not per-gate ATPG; (2) own fault classes (coupling, retention, address-decoder, timing — 8.2) → NOT logic stuck-at; (3) no per-cell scan access (cells behind addr/data/ctrl + sense amps); (4) X-SOURCE in scan → corrupts the compactor (7.5). Solution = MBIST: an on-chip CONTROLLER that algorithmically WRITES+READS every cell with a March test (8.3) AT-SPEED, compares to expected → pass/fail (+ failing addr for repair, 8.5). Benefits fit memory: at-speed (timing/retention), SCALABLE (patterns generated not stored → tiny test data), on-chip (in-field/power-on), repair-enabling (yield). Logic → scan; memory → MBIST + bypass in scan (fixes 7.5). Next: 8.2 — memory fault models.