DFT

BIST controller design

By CourseTron Team ·  7 min read ·  Updated Oct 2026 💬 𝕏 in f
Table of Contents
    ? Print / Save as PDF

    In short: A BIST controller is a small finite-state machine that sequences the pattern generator (LFSR), captures responses in a signature analyzer (MISR) or runs March algorithms for memories, compresses everything to a single go/no-go bit, and optionally exposes diagnostic modes so you can locate which cell or chain actually failed.

    Built-in self-test (BIST) moves the test apparatus onto the die itself. Instead of a multi-million-dollar ATE applying external vectors, a compact on-chip controller generates stimulus, observes the circuit, and declares pass or fail. The generator and analyzer get most of the textbook attention, but in a real tape-out the controller is where designs succeed or fail. It owns the sequencing, the timing, the clamping of unknowns, and the diagnostic hooks the failure-analysis lab will beg you for six months later.

    What the controller actually has to do

    Strip away the vendor branding (Synopsys SMS/STAR Memory System, Siemens Tessent MemoryBIST, Cadence Modus) and every BIST controller performs the same five jobs:

    • Initialize — seed the LFSR to a known non-zero value, clear the MISR, set address counters to the start cell.
    • Sequence — advance the generator one step per cycle, drive the circuit-under-test, and tell the analyzer when a response is valid to capture.
    • Bound — count cycles (for logic BIST, typically 1k–64k pseudo-random patterns per session) or march elements (for MBIST, every address up and down).
    • Evaluate — at the end, compare the accumulated signature against a pre-computed golden value and emit one done and one go/no-go bit.
    • Diagnose — on demand, re-run in a mode that streams out partial signatures or stops at the first mismatch so the defect can be localised.

    Logic BIST and memory BIST share a controller skeleton but differ in the "engine." LBIST clocks an LFSR→scan-chains→MISR loop; MBIST clocks an address/data generator through a March sequence into a comparator. The FSM that wraps them looks almost identical.

    BIST controller FSM: the five jobsINITSEQUENCEBOUNDEVALUATEDIAGNOSEcount not reacheddone + go/no-goon diag_enCourseTron · coursetron.com
    The five controller jobs as a state sequence: initialize, sequence, bound (looping until the count is reached), evaluate to done and go/no-go, with an optional diagnostic mode.

    Sequencing the LFSR and MISR (logic BIST)

    In the classic STUMPS (Self-Test Using MISR and Parallel Shift-register sequence generator) architecture, a PRPG (pseudo-random pattern generator, an LFSR) fans out to many scan chains, and a MISR on the chain outputs compacts the captured responses. The controller interleaves two clock domains: shift cycles that load the next pattern and unload the previous response, and one capture cycle that lets the combinational logic respond.

    For a design with the longest scan chain of length L, each pattern costs L+1 cycles (L shift + 1 capture). Run 10,000 patterns on L=500 and you are looking at roughly 5 million test cycles — which is exactly why the controller must also gate the system clock and manage a phase-shifter so adjacent chains do not see correlated bits.

    STUMPS logic-BIST datapathPRPG(LFSR)scan chain 0scan chain 1scan chain nMISRcompactorcompare vsgolden sigBIST controller FSMdashed = controlCourseTron · coursetron.com
    STUMPS logic-BIST datapath: the controller (dashed control lines) seeds the PRPG, times shift/capture, and freezes the MISR for the final compare.

    Marching through memories (MBIST)

    Memory BIST does not use random patterns. It uses deterministic March algorithms built from read/write operations applied in a defined address order. The workhorse is March C-: {⇕(w0); ⇑(r0,w1); ⇑(r1,w0); ⇓(r0,w1); ⇓(r1,w0); ⇕(r0)}. Six elements, 10N operations for an N-bit array, and it covers stuck-at, transition, address-decoder and most coupling faults.

    Here the controller owns an address generator (up-counter and down-counter, often Gray-coded to limit power), a data/background generator (solid, checkerboard, column/row stripes), and a comparator. The FSM walks the March element list, and for each element sweeps every address applying that element's operation sequence.

    March element ⇑ (r0, w1): address sweeping upA0A1A2A3A4A5A6A7read 0, then write 1 at the active (orange) address, then step upCourseTron · coursetron.com
    The MBIST address generator sweeps up through the array; at each cell the controller issues the element's read-then-write pair before advancing.

    Collapsing everything to go/no-go

    The point of BIST is that a tester, or on-chip firmware, should learn pass/fail from one or two pins. For MBIST the comparator raises a sticky fail flip-flop the instant expected and read data diverge; for LBIST the final MISR contents are compared against the golden signature computed in simulation. The controller then drives:

    • bist_done — the run finished.
    • bist_fail / go_nogo — the single verdict bit, latched so it survives clock stops.
    SignalDriven byMeaning
    bist_enTAP / firmwareStart the session (often JTAG-controlled)
    bist_doneController FSMSequence complete
    go_nogoMISR / comparator1 = all patterns matched golden
    diag_enTAPEnter diagnostic / stop-on-error mode

    Aliasing is the hidden risk of compaction: a faulty response can collide with the golden signature. A k-bit MISR has an aliasing probability of roughly 2−k, so a 32-bit MISR hides a failure once in ~4.3 billion — small enough to ignore for production screening but something you state explicitly in the DFT sign-off.

    Diagnostic modes — where the controller earns its area

    A single go/no-go bit tells you the part is bad, not why. Good controllers add modes the failure-analysis team can drive over JTAG:

    • Stop-on-nth-error — halt at the first (or Nth) mismatch and freeze the address/data registers so the failing cell is readable.
    • Signature streaming — unload intermediate MISR values at checkpoints so a mismatch is bracketed to a window of patterns (log-based diagnosis in Tessent, Modus fault reports).
    • Bitmap / fail-log capture — MBIST engines shift out a compressed list of failing address/bit pairs that feeds a redundancy-allocation (repair) algorithm for memories with spare rows/columns.
    • Retention / data-hold — pause mid-March with power or clock idle to expose weak-bit retention defects.

    These hooks are not free: stop-on-error registers, checkpoint logic and the TAP interface add 3–8% area to the BIST wrapper, but they are what turn a scrapped wafer lot into an actionable yield-learning signal. For a deeper treatment of the random-pattern side, see our companion piece on logic BIST architecture, and for the memory-repair flow see memory BIST and redundancy repair.

    If you are building production test programs or need a DFT team to architect this for a real SoC, the design-services group at Avecas VLSI design services handles BIST insertion and sign-off end to end.

    Want to design and debug a real BIST controller RTL-to-signoff? Join the DFT track on CourseTron courses.

    Frequently asked questions

    Why use an LFSR instead of a ROM of test patterns?

    An n-bit LFSR generates 2n−1 pseudo-random patterns from a handful of flip-flops and one XOR feedback tap set. Storing the same patterns in ROM would cost orders of magnitude more area, and the LFSR also doubles as the seed-reproducible reference the simulator uses to compute the golden signature.

    What is signature aliasing and how do I bound it?

    Aliasing is when a faulty response stream compacts to the same signature as the good one, masking the defect. For a k-bit MISR the probability approaches 2−k. You bound it by widening the MISR, choosing a primitive feedback polynomial, and for critical blocks adding multiple capture points or checkpoint signatures.

    How does the controller handle X (unknown) values?

    Unknowns from uninitialised flops, bus contention or non-scan cells corrupt a MISR permanently. The controller (with X-bounding logic inserted by tools like Tessent or Modus) masks those bits before the compactor, or the DFT flow fixes the source so no X reaches the MISR during capture.

    Is one March algorithm enough for a memory?

    March C- catches the common fault models, but modern SRAMs/DRAMs need additional elements — March SS, PMOVI or custom algorithms — for recovery, retention and dynamic coupling faults. Programmable MBIST controllers let you load the algorithm at test time rather than hard-coding one sequence.

    Advertisement