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.
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.
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:
A test is only as good as the fault models it provably covers, which is why algorithm choice is the heart of mbist.
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.
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.
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:
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.
Engineers rarely hand-write mbist RTL. Commercial DFT flows insert and verify it automatically:
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.
Real projects and industry tool flows, with certification.
Explore CourseTron Courses →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.
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.
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.
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.