DFT

DFT insertion flow

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

    In short: DFT insertion is the automated, synthesis-stage step where the tool converts functional flops into scan cells, stitches them into shift chains, inserts on-chip compression (EDT/codec) to shrink tester pattern volume, and optionally wraps memories and logic in BIST — all so the fabricated die can be tested cheaply and thoroughly on an ATE.

    Design-for-Test (DFT) insertion is the part of the RTL-to-GDSII journey that most new engineers underestimate and most interviewers probe hardest. A chip that simulates perfectly can still ship with latent manufacturing defects — a bridged metal line, a stuck via, a weak transistor — that only a structural test can catch. DFT insertion is how we build the on-chip hardware that makes those defects observable on a tester. This article walks the real insertion flow as run in Synopsys DFT Compiler / TestMAX, Cadence Genus/Modus, and Siemens Tessent, with the numbers and gotchas that matter in practice.

    Why DFT insertion happens during synthesis

    Scan structures are built from the same sequential cells that synthesis is already mapping, so it is cheapest to insert them there rather than bolt them on later. The classic flow runs synthesis in two passes: first a normal functional compile, then a test-ready recompile where every eligible D flip-flop is swapped for its scan-equivalent (a mux-D or LSSD variant). A mux-D scan flop simply adds a 2:1 mux on the data input, selected by a global scan_enable (SE) signal: when SE=0 the flop behaves functionally; when SE=1 it takes data from the previous cell's scan_out, forming a giant shift register.

    Area cost: a mux-D scan flop is typically 10–30% larger than its non-scan counterpart, and the resulting routing can add a few percent to total die area. On a 5-million-flop SoC that is a deliberate, well-understood tax paid for testability.

    Scan cell and stitched scan chainScan cell (mux-D)Stitched chain: SE=1 shifts data alongDSISEFFQSC0SC1SC2SCnSOEach cell's output feeds the next cell's SISE=0: functional D path. SE=1: scan path SI. CourseTron · coursetron.com
    A mux-D scan cell and how identical cells are stitched tail-to-head into a shift chain.

    Scan stitching: ordering the chains

    Once cells are scan-replaced, the tool connects each cell's scan_out to the next cell's scan_in. This is scan stitching. The number of chains is a direct trade: more chains mean shorter chains and faster shift (fewer clocks per pattern), but they consume more top-level scan I/O pins. A design with 500,000 scan flops split into 250 chains gives chains of ~2,000 cells each; at a 50 MHz shift clock that is 40 µs per shift operation per pattern — multiply by thousands of patterns and tester time becomes real money.

    Modern tools do physically-aware stitching: ordering is deferred or re-optimized after placement so that cells adjacent on the die end up adjacent in the chain, minimizing scan wirelength. Clock-domain balancing is also critical — mixing domains in one chain forces lock-up latches (a level-sensitive latch between domains) to prevent hold violations on the shift path at domain crossings.

    Compression insertion (EDT / codec)

    Pure scan works but the pattern volume explodes with transistor count, and ATE memory is finite and expensive. On-chip test compression breaks the link between internal chain count and external pin count. A decompressor (an XOR/LFSR network, Siemens calls it EDT, Synopsys calls it the codec) fans a handful of external scan-in pins out to hundreds of short internal chains; a compactor (a MISR or spatial XOR tree) folds the many internal outputs back to a few scan-out pins.

    Real leverage: compression routinely delivers 50–200× reduction in test-data volume and tester time. Converting 20 external pins into 400 internal chains cuts the max chain length — and thus shift cycles — by roughly 20×.

    Compression: few pins, many short chains, few pinsSI ×4DECOMPchain 1chain 2chain 3chain 4COMPACTSO ×4many short internal chains CourseTron · coursetron.com
    Animated: compressed test data streams in on few pins, fans out across short chains, and is compacted back out — the core idea behind EDT/codec.

    BIST: the chip tests itself

    Where ATE access is limited or at-speed testing is required, Built-In Self-Test moves pattern generation and checking on-chip. MBIST wraps every SRAM/ROM with a controller that runs March algorithms (March C-, March SS) to catch stuck-at, transition, and coupling faults in the array. LBIST uses a pseudo-random pattern generator (PRPG, an LFSR) to drive scan chains and a MISR to compress responses into a single signature compared against a golden value — ideal for in-field/automotive self-test under ISO 26262.

    TechniqueInserted byPrimary targetTypical benefit
    Scan + stitchDFT Compiler / GenusRandom logicControllability + observability
    Compression (EDT/codec)TestMAX / TessentLogic, pin/data reduction50–200× less tester data
    MBISTTessent / TestMAX LBISTEmbedded memoriesNo external array patterns
    LBISTTessent / TestMAXIn-field logic testSelf-contained, at-speed
    LBIST: PRPG drives scan chains, MISR collects the signaturePRPG(LFSR)scan chain 1scan chain 2scan chain 3MISRsignatureComparevs goldenrandom patternscompacted responsePass if the final signature equals the golden value CourseTron · coursetron.com
    LBIST: a PRPG feeds the scan chains and a MISR compacts the responses into a signature checked against a golden value.

    Verifying the inserted logic

    Insertion is only trustworthy once checked. A DRC / scan rules check (Synopsys dft_drc, Tessent analysis) confirms every flop is reachable, clocks are controllable in shift mode, and no asynchronous set/reset is uncontrolled. Then ATPG generates the actual test patterns and reports test coverage — a well-structured block routinely exceeds 99% stuck-at coverage, with transition-fault (at-speed) coverage in the mid-90s. Coverage gaps almost always trace back to black boxes, uncontrolled clock gating, or tie cells, so insertion and ATPG are an iterative loop, not a one-shot.

    For teams building this muscle hands-on, structured lab exposure matters more than theory. The DFT track at ChipXpert's VLSI training programs pairs this flow with real Tessent/TestMAX runs, and production teams at Avecas design services apply the same methodology on tapeout-grade SoCs.

    Where it fits in the bigger picture

    DFT insertion is one stage of a larger methodology — it assumes clean synthesis before it and feeds pattern generation after it. If you are new to the overall sequence, start with our walkthrough of the end-to-end DFT flow in VLSI, then dig into ATPG fault models to understand what the inserted structures are actually hunting for. The full hands-on syllabus lives on our courses page.

    Ready to run real scan insertion, compression, and ATPG on industry tools? Join the CourseTron DFT & Physical Design course and build a tapeout-ready test flow from scratch.

    Frequently asked questions

    When exactly is scan inserted — before or after synthesis?

    During synthesis. The standard practice is a test-ready recompile that maps sequential cells directly to their scan equivalents, so no post-synthesis re-mapping is needed. Final chain ordering is often re-optimized after placement for shorter scan routing.

    Does test compression reduce fault coverage?

    No — compression changes how patterns are delivered, not what they test. With adequate compactor design and enough internal chains, compressed ATPG reaches essentially the same stuck-at and transition coverage as uncompressed scan, while cutting tester time by one to two orders of magnitude.

    What is the difference between LBIST and MBIST?

    MBIST targets embedded memories using March algorithms to find array-specific faults. LBIST targets random logic using an LFSR-driven PRPG and a MISR signature. Many SoCs use both plus external compressed scan for maximum coverage.

    Why are lock-up latches added during stitching?

    When a scan chain crosses between clock domains or skew-prone clocks, a level-sensitive lock-up latch is inserted between the two cells to add half a cycle of margin, preventing hold-time failures on the shift path.

    Advertisement