DFT

Memory BIST (MBIST)

By CourseTron Team ·  7 min read ·  Updated Oct 2026 💬 𝕏 in f
Table of Contents
    🖨  Download / Print this guide (PDF)

    In short: mbist is on-chip logic that tests embedded SRAMs and ROMs at speed using march algorithms generated by a BIST controller, because those memories are too deeply buried to reach from chip pins. It detects stuck-at, transition, and coupling faults, and when paired with redundancy and BIRA/BISR it can even repair failing cells to raise yield.

    What Is mbist?

    mbist (Memory Built-In Self-Test) is a Design-for-Test technique in which dedicated hardware inside the chip generates test patterns, applies them to embedded memories, and compares the readback against expected data — all without an external memory tester driving the memory ports. Modern SoCs contain hundreds to thousands of embedded SRAM, register-file, and ROM instances that occupy more than half the die area. These arrays have no direct connection to the package pins, so classic scan or functional testing cannot exercise them efficiently. mbist solves this by placing a small controller next to each memory (or shared across a group) that walks a deterministic algorithm across every address and bit.

    Because the test engine lives on-die, it runs at the memory's native clock frequency, which is essential for catching timing-dependent and dynamic defects that slow external testers would miss.

    Why mbist Matters: Memory Fault Models

    Memory defects do not behave like random logic faults, so mbist targets a specific set of fault models that reflect how bit cells, sense amplifiers, and decoders actually fail:

    • Stuck-at faults (SAF): a cell is permanently 0 or 1 regardless of what is written.
    • Transition faults (TF): a cell cannot make a 0→1 or 1→0 transition, even though it holds a static value.
    • Coupling faults (CF): a write to one cell wrongly flips or disturbs a neighbor — inversion, idempotent, and state coupling are common sub-types.
    • Address decoder faults (AF): an address selects the wrong cell, no cell, or multiple cells.
    • Neighborhood pattern-sensitive faults (NPSF): a cell's value is corrupted only for a specific pattern in physically adjacent cells.
    • Data retention faults: a cell slowly loses its value, exposed by inserting a delay between write and read phases.

    A test is only as good as the fault models it provably covers, which is why algorithm choice is the heart of mbist.

    How It Works: March Algorithms and the BIST Controller

    The dominant test strategy is the march algorithm. A march test is an ordered sequence of march elements; each element sweeps every address in a defined order (ascending ⇑ or descending ⇓) and performs a fixed set of read/write operations at each address before moving on. The notation is compact — for example March C- is written as:

    {⇕(w0); ⇑(r0,w1); ⇑(r1,w0); ⇓(r0,w1); ⇓(r1,w0); ⇕(r0)}

    March C- uses 10N operations (N = number of addresses) and covers stuck-at, transition, address-decoder, and many coupling faults. Other widely used algorithms include MATS+ (5N, quick SAF/AF screen), March B, March LR, and PMOVI-style tests tuned for word-oriented memories; longer algorithms trade test time for higher coverage of complex coupling and pattern-sensitive faults.

    March C- element by elementany order⇕(w0)1Nascending⇑(r0,w1)2Nascending⇑(r1,w0)2Ndescending⇓(r0,w1)2Ndescending⇓(r1,w0)2Nany order⇕(r0)1N1N + 2N + 2N + 2N + 2N + 1N = 10N operationsN = number of addressesCourseTron · coursetron.com
    March C- as six march elements; each sweeps every address, giving 10N operations in total.

    The BIST controller is the finite-state machine that makes this happen. It contains an address generator (an up/down counter), a data/background generator (producing solid, checkerboard, or column-stripe patterns), a read/write control sequencer encoding the march element, and a comparator that checks each readback against the expected value. A go/no-go flag is raised on the first mismatch, and in diagnostic modes the failing address, bit, and march element are captured for failure analysis.

    Ascending element: the address counter sweeps every celladdr 0addr 1addr 2addr 3addr 4addr 5addr 6addr 7At each address the controller reads 0, then writes 1: ⇑(r0,w1)The up/down counter then moves to the next addressCourseTron · coursetron.com
    Animated march element: an address pointer steps up through the memory, performing r0 then w1 at every address.
    Key fact: A standard March C- test visits every address with 10 operations each, so its run time scales as 10N with memory depth N — not with the square of N. This linear complexity is why march algorithms, rather than exhaustive testing, are the practical choice for megabit-class embedded arrays.

    Repair: Redundancy, BIRA and BISR

    Finding a defective bit is only half the value of mbist on large memories — modern arrays are built with spare rows and columns so a handful of failing cells need not scrap the whole die. Two cooperating blocks turn test results into working silicon:

    • BIRA (Built-In Redundancy Analysis): on-chip logic analyzes the fail bitmap from mbist and computes an allocation of spare rows/columns that covers the failures, if a solution exists.
    • BISR (Built-In Self-Repair): applies that allocation by reprogramming the memory's address remapping, either volatilely at every power-up or permanently by blowing on-chip fuses (eFuse / laser fuse).

    This flow directly lifts manufacturing yield: a 4 Mb cache with a single stuck column becomes a fully functional part instead of a reject. The repair signature can be stored and re-applied on every boot, giving self-healing memory in the field.

    MBIST datapath and repairBIST ControllerAddress genData / march FSMR/W sequencerComparatorEmbedded MemorySRAM / ROM array+ spare rows/colsBIRA / BISRrepair logicaddr/data/weread datafail mapCourseTron · coursetron.com
    MBIST datapath: the BIST controller drives address, data and write-enable into the embedded memory, compares read data, and passes the fail map to BIRA/BISR repair logic.

    How Industry Tools Handle mbist

    Engineers rarely hand-write mbist RTL. Commercial DFT flows insert and verify it automatically:

    • Siemens EDA Tessent MemoryBIST inserts controllers, stitches them into shared IJTAG (IEEE 1687) networks, and generates BIRA/BISR with fuse management.
    • Synopsys SMS / DesignWare STAR Memory System provides configurable test, repair, and diagnosis wrappers around compiled memories.
    • Cadence offers memory test insertion integrated with its Modus DFT and synthesis flows.

    The tool reads a memory library description, chooses algorithms per instance, inserts collars and the controller, and produces patterns plus coverage reports. Access is typically orchestrated through IEEE 1149.1 (JTAG) and IEEE 1687 (IJTAG) so that production testers can trigger self-test and read results through a handful of pins. The result is high memory fault coverage with negligible tester time — exactly what high-volume manufacturing demands.

    Learn this hands-on

    Real projects and industry tool flows, with certification.

    Explore CourseTron Courses →

    mbist — Interview FAQ

    Why can't embedded memories just be tested with scan chains?

    Scan tests the logic surrounding a memory, but the array itself is a dense analog-like structure whose coupling, retention, and decoder faults are not modeled by logic stuck-at tests. Memories also have no pin access, so an at-speed march engine placed beside them is the only practical way to reach every cell with memory-specific patterns.

    What fault does the second read in a march element catch that a single read would miss?

    Reading immediately after a write (as in r1 following w1) verifies the write took effect, but following a value held across an address sweep with a later read catches transition and retention faults and, crucially, coupling faults where a write to a different address disturbs this cell. The ordering of elements is what gives march its coupling-fault coverage.

    What is the difference between BIRA and BISR?

    BIRA (redundancy analysis) decides how to use spare rows and columns to cover the failures mbist found. BISR (self-repair) actually applies that solution by reprogramming the address remapping, either at every power-up or permanently via fuses. BIRA computes the repair; BISR enforces it.

    How is mbist triggered and monitored in production?

    Controllers are connected to a JTAG/IJTAG (IEEE 1149.1 / 1687) network. The tester shifts in a start command, the controller runs the march algorithm at functional speed, and a pass/fail status plus optional diagnostic data is shifted back out — testing megabits of memory while occupying only a few pins and little tester time.

    Related: the DFT flow in VLSI · the VLSI Glossary · all courses.

    Advertisement