packages/chip/docs/pd/dft-strategy.md
The e1 manufacturing-test surface spans three concerns: scan insertion for
the random logic, MBIST for the SRAM macros, and JTAG boundary scan for the
pads. This document records the strategy across all three and is the
human-readable companion to docs/evidence/pd/dft-evidence.yaml.
dfflibmap+dff2dffe-based scan-flop
retargeting. Upstream Yosys does NOT ship a scanchain macro pass; the
earlier draft of pd/dft/scan_insertion.tcl that referenced a
scanchain command is therefore BLOCKED and the gate fails closed.
The real open-source path is:
yosys -p "synth_sky130 -top <mod>" to map to scan-capable FFs in the
Sky130 high-density library (sky130_fd_sc_hd__sdfxxx).fault.py dft -top <mod> (https://github.com/AUCOHL/Fault) to thread the
scan chain, expose scan_in/scan_en/scan_out ports, and emit the
STIL/VCD harness.IEEE 1149.1 USERCODE-style instruction.A single chain is intentional at this stage: balanced multi-chain insertion needs a commercial DFT compiler. A single long chain is enough for Fault to ingest.
pd/macros/manifest.yaml has a corresponding MBIST controller entry in
pd/dft/mbist.yaml. Controllers are BLOCKED on the OpenRAM macros
themselves landing.mbist.yaml.e1_jtag_tap. IR width 5 bits.docs/pd/pad-cell-selection-criteria.md).Fault is the academic ATPG tool that consumes scan-inserted Verilog plus the
standard-cell Liberty and produces stuck-at and transition-delay patterns in
STIL format. Today Fault is not vendored under external/; the
pd/dft/fault_atpg.config.yaml records the contract so the gate fails
closed.
A 2028 tapeout without a vetted scan/MBIST/JTAG plan is a yield disaster. The most common reason an academic open chip tapes out without manufacturing test is that DFT was deferred to the commercial-tool phase, which then ran out of schedule. Doing scan insertion and MBIST planning on the Sky130 release flow now means the manufacturing test program at the foundry is a port, not a fresh design.
pd/macros/sky130/.mbist.yaml entries flip to
complete_local_evidence.scan_insertion.tcl runs cleanly through Yosys in the OpenLane synthesis
stage and produces build/dft/e1_chip_top.scan.v.coverage.json >= 95 % stuck-at.