Scan Chain ECO After P&R: Inserting 100+ Registers Without Full Rerun
Late-stage functional ECO added 130 registers to a timing-closed 28nm design. Scan chains were already stitched, routing was done, and ATPG patterns were signed off. Rerunning the full DFT flow was not an option. This is how we handled it.
01Project Context
A 28nm digital SoC, roughly 2M instances, mixed-clock architecture with 6 clock domains. The design had passed timing signoff, DRC/LVS were clean, and scan ATPG patterns were validated. We were three days from GDSII handoff.
Then the front-end team delivered a functional ECO. A protocol state machine needed rework. The patch added 130 new flip-flops across four hierarchical blocks and two clock domains.
The registers had to be testable. They had to be in the scan chains. But re-running DFT insertion from scratch meant re-doing CTS, re-closing timing, and re-generating all ATPG patterns. The schedule could not absorb a full rerun.
We needed a way to stitch 130 flip-flops into existing scan chains without disturbing the rest of the design.
02Project Environment
Exact tool versions and design parameters for this engagement.
- •Process Node
28nm HPC (High-Performance Compact), foundry standard cell library with 12-track cells.
- •Design Scale
~2M instances, 6 clock domains, 48 scan chains (post-DFT), mixed-signal IP integration.
- •Implementation Tools
Innovus 21.1, Conformal 22.1, Modus 22.1 (ATPG), PrimeTime 2022.03 (STA signoff).
- •ECO Stage
Post-route, post-CTS, post-timing-signoff. DRC/LVS clean. 3 days before GDSII handoff.
- •ECO Scope
130 new flip-flops (94 sys_clk, 36 bus_clk), 4 hierarchical blocks, protocol state machine rework.
03Why This Is Harder Than It Sounds
Inserting registers into a finalized scan chain is not a simple netlist edit. Several constraints collide simultaneously.
- •Scan Order Is Physical
After P&R, scan chain order reflects physical placement. The SI-to-Q connections follow routing topology. Inserting a register in the wrong position creates long-distance scan routing that causes hold violations and congestion.
- •Chain Lengths Are Balanced
DFT tools balance chain lengths to minimize shift cycles. Adding 130 registers to a few chains creates imbalance—some chains become 20-30% longer than others. ATPG shift count increases, test time goes up, and some ATE patterns may exceed memory depth.
- •Clock Domain Mixing Is Forbidden
Registers from different clock domains cannot share a scan chain segment. Mixing domains introduces capture conflicts during at-speed test. A single violation can invalidate the entire ATPG pattern set.
- •OCC Chains Must Be Excluded
On-chip clock controller (OCC) scan chains are structurally fixed by the DFT architecture. These chains control test clock generation. Any modification risks breaking the test infrastructure entirely.
- •Timing Budget Is Zero
The design is timing-closed. Every new scan connection is a new timing path. Long SI-to-Q routes add setup/hold risk on paths that were never part of the original timing analysis.
04Why Naive Approaches Fail
We have seen teams attempt quick fixes for scan chain ECO. These are the three most common mistakes and what actually happens.
- •Random Chain Insertion
The simplest approach: append all new registers to the tail of arbitrary chains. This creates physical routes spanning the entire die—500um+ scan connections that violate hold timing, congest routing channels, and may not even be routable without ECO track expansion.
- •Single Chain Extension
Some teams extend a single chain to absorb all new registers. The chain becomes 130 cells longer than its peers. Shift-cycle count increases for the entire test. On ATE with pattern memory limits, this can push the pattern set beyond capacity, requiring pattern re-compression or dropping coverage.
- •Ignoring Physical Distance
Stitching registers purely by netlist proximity (same hierarchy, same module) without considering physical placement. Two registers in the same RTL module can be placed 400um apart after P&R. The scan connection between them becomes a timing and routing problem.
05Before vs After: Scan Chain Structure
Summary of scan chain state before and after ECO. The goal: absorb 130 new registers while keeping chain lengths balanced, routing local, and timing intact.
| Metric | Before ECO | After ECO |
|---|---|---|
| Total scan registers | ~47,000 | ~47,130 (+130) |
| Number of scan chains | 48 | 48 (unchanged) |
| Max chain length variance | <3% | <5% |
| OCC chains modified | — | 0 (excluded) |
| Clock domains affected | — | 2 (sys_clk, bus_clk) |
| New scan wire max length | — | <40um (physical-aware) |
| Routing impact | — | <0.3% of total route |
| ATPG stuck-at coverage | 99.3% | 99.2% |
| ATPG pattern count change | baseline | +2.1% |
- •Key takeaway: 48 chains remained at 48 chains. No new scan I/O pins. No CTS re-run. The ECO was invisible to everything outside the scan SI/Q connections.
06Step 1: Logical Grouping by Domain and Edge
Before touching the netlist, we classified every new register along three axes.
- 01Clock Domain AssignmentEach register was tagged to its clock domain. In this design, the 130 registers fell into two domains: sys_clk (94 registers) and bus_clk (36 registers). No cross-domain stitching is allowed—this is the first hard constraint.
- 02Clock Edge SeparationWithin each domain, registers were separated by active edge—posedge vs negedge. Mixing edges in a scan segment creates hold violations during shift because the capture windows are offset by half a cycle.
- 03Hierarchical Block MappingEach register was mapped to its physical hierarchical block. This determines which scan chains are candidates for insertion—only chains that already pass through that block's region.
- 04OCC Chain ExclusionWe identified all OCC-related scan chains and marked them as untouchable. These chains feed the on-chip clock controller and are structurally fixed. Any modification to an OCC chain would require re-validating the entire test clock architecture.
07Step 2: Physical-Aware Chain Insertion
With grouping done, we needed to decide exactly where in each chain to splice each register. The principle: minimize new routing.
- 01Nearest Q-to-SI Point MatchingFor each new register, we identified the closest existing scan connection (Q-to-SI wire) in a compatible chain. "Closest" means physical distance in the placed design—not netlist hierarchy. We cut the existing Q-SI connection and inserted the new register between them.
- 02Internal Sub-Chain StitchingWhen multiple new registers belonged to the same physical region and same domain, we first chained them together internally using S-shape routing to minimize wire length, then spliced the sub-chain as a single unit into the nearest existing scan segment.
- 03S-Shape Routing OptimizationInternal sub-chains were ordered using S-shape (serpentine) topology—alternating direction row by row—to keep all new scan wires short and local. This is the same principle DFT tools use during initial chain stitching, applied manually at ECO scale.
- 04Congestion-Aware Track SelectionBefore committing each insertion point, we checked local routing congestion in Innovus. In two cases, the nearest Q-SI point was in a congested region, so we used the second-nearest point instead. An extra 15um of scan wire is better than a DRC violation.
08Step 3: Room-Based Scan Chain Redistribution
After insertion, chain lengths were unbalanced. Some chains gained 30+ registers while others gained none. We used a room-based redistribution strategy to rebalance.
- 01Room ConceptWe defined physical 'rooms' corresponding to major placement regions in the floorplan. Each room contains a known set of scan chains passing through it. Redistribution only moves registers between chains within the same room—no cross-room scan connections.
- 02Chain Length Target CalculationTarget chain length = (total registers in room) / (number of chains in room). We calculated the delta for each chain and identified donors (chains longer than target) and receivers (chains shorter than target).
- 03Tail-Transfer RedistributionFrom each donor chain, we detached registers from the tail end (physically furthest from scan-out) and appended them to a receiver chain that passes through the same physical region. This keeps scan wire lengths minimal while balancing chain counts.
- 04Final Length Variance CheckAfter redistribution, maximum chain length variance was under 5%. All chains stayed within the ATPG shift count budget. No chain exceeded ATE pattern memory limits.
09Step 4: Toolchain Execution and Validation
Manual planning, automated execution. Every step was scripted and validated through the standard tool flow.
- 01Conformal ECO: Netlist Patch GenerationConformal ECO compared the pre-ECO and post-ECO netlists and generated the minimum-change patch. This included the 130 new registers plus all scan chain reconnections. The patch was reviewed line-by-line before application.
- 02Innovus: Physical ImplementationThe ECO cells were placed using ecoPlace with manual coordinate guidance for the 14 registers that fell in congested areas. Scan connections were routed with ecoRoute. Total ECO routing impact: less than 0.3% of total route length.
- 03Timing Closure VerificationIncremental STA on all new and modified paths. Setup and hold were clean across all corners. Three paths required buffer insertion to fix hold—standard ECO-level adjustment. No path required re-optimization of existing logic.
- 04ATPG Pattern Re-generationFull ATPG was re-run with the updated scan chain definitions. Stuck-at coverage: 99.2%. Transition coverage: 96.8%. Pattern count increased by only 2.1% compared to the pre-ECO baseline. No pattern exceeded ATE memory constraints.
10Results
The entire scan chain ECO—from receiving the functional patch to ATPG sign-off—was completed in 4 working days.
- •130 Registers Inserted
All 130 new flip-flops fully integrated into scan chains across 2 clock domains and 4 hierarchical blocks.
- •Timing Preserved
Zero setup violations. Three hold fixes (buffer insertion only). No existing timing path was disturbed.
- •No Full DFT Rerun
Scan chain modifications were surgical. CTS was untouched. Clock tree latencies unchanged. Only scan SI/Q connections were modified.
- •Coverage Maintained
Stuck-at: 99.2%. Transition: 96.8%. Pattern count increase: 2.1%. All within pre-ECO targets.
- •GDSII On Schedule
Tape-out deadline met. The functional ECO did not push the schedule. Design was delivered to the foundry on the original date.
11What Most Teams Get Wrong
We have handled scan chain ECOs across multiple nodes. The pattern of failure is consistent.
- •Treating Scan as a Netlist Problem
After P&R, scan chain stitching is a physical problem. Netlist-only reasoning—matching clock domains, appending to chain tails—ignores the routing consequences. Every scan connection is a physical wire with timing implications.
- •Underestimating Chain Imbalance
Adding 50 registers to one chain and zero to adjacent chains seems harmless until ATE shift cycles increase and pattern memory overflows. Redistribution is not optional—it is a requirement for production-grade test.
- •Skipping Physical Validation
Teams that insert scan registers without checking local routing congestion discover DRC violations during final signoff—the worst possible time. Congestion check before insertion takes minutes. Fixing DRC violations after routing takes days.
- •Not Automating the Flow
Manual scan stitching for 10 registers is feasible. For 100+, it is error-prone. Scripting the grouping, insertion point selection, and chain reconnection is not overhead—it is the only way to ensure consistency across dozens of insertion points.
Facing a Late-Stage ECO with No Timing Margin?
If you have registers that need to be in scan chains but cannot afford a full DFT rerun, we can fix it. VLSIShuttle has executed post-route scan chain ECOs at 180nm, 130nm, 55nm, 40nm, and 28nm — physical-aware insertion, chain redistribution, and ATPG re-validation included. Send us your design spec and ECO scope. We will tell you if it is fixable without a full rerun, and how long it will take.
References
- [1]Cadence Conformal ECO DesignerCadence Design Systems
- [2]Cadence Innovus Implementation SystemCadence Design Systems
- [3]IEEE 1149.1 Standard for Test Access PortIEEE Standards Association
