HomePhysical DesignDay 11 — ECO

Engineering Change Orders (ECO)

Late-stage design changes after layout or mask making. Functional ECO, metal-only ECO, spare cell methodology, post-mask ECO, ECO timing closure, and real production strategies.

By EcrioniX Engineering Team · Published June 14, 2026 · ~4,600 words · 14 min read

1. What is an ECO and Why It Happens

An Engineering Change Order (ECO) is a controlled design modification applied after the main implementation is complete — sometimes after masks are already taped out. ECOs are a fact of life in production chip design. Almost no chip reaches silicon without at least one ECO, because:

Industry Reality

A modern 5nm SoC with 10B+ transistors will typically go through 3–8 ECO rounds between first tape-out and production release. Each ECO costs time (1–4 weeks) and potentially money ($500K+ for a full mask respin). Metal-only ECOs cost ~$50K and take 1 week — far cheaper than re-spinning all layers.

2. ECO Types — Comparison

Metal-Only ECO
  • ✅ Only upper metal layers changed
  • ✅ No new cells inserted (uses spare cells)
  • ✅ Cost: ~$50K (metal masks only)
  • ✅ Turn-around: 1–2 weeks
  • ⚠️ Limited logic changes possible
  • ⚠️ Requires pre-placed spare cells
Functional ECO (Full)
  • ✅ New cells placed anywhere
  • ✅ Any logic change possible
  • ⚠️ All mask layers re-spun
  • ⚠️ Cost: $500K–$2M (full mask set)
  • ⚠️ Turn-around: 4–8 weeks
  • ❌ Major schedule impact
ECO TypeLayers ChangedCostTimeLogic Change Capacity
Metal-Only ECOM4–M10 (metal only)$30–100K1–2 weeksLimited (spare cells only)
Partial Functional ECOM1–M10 + Via layers$200–500K2–4 weeksModerate
Full Functional ECOAll layers (incl. diffusion)$500K–$2M4–8 weeksUnlimited
Post-Silicon ECOBoard/package level$1–50KDaysVery limited (I/O only)

3. Spare Cell Methodology

Spare cells are the key enabler of metal-only ECOs. They are placed during initial implementation — powered on, physically present in silicon — but not connected to any functional net. When a bug is found, the spare cells are wired up with new metal routing to implement the fix.

Spare Cell Placement Strategy
CPU Core GPU Block Memory Subsystem ECO wire Spare cells (unused, powered on) ECO-activated spare cells Spare cells distributed at ~2–5% of total area, every 50–100µm
Spare Cell Budget Planning: Spare cell area = 2–5% of core area (typical rule of thumb) Conservative (low-risk design): 2% Aggressive (complex SoC, many unknowns): 5% For a 100mm² core at 75% utilization: Core cell area = 75mm² Spare cell area = 75mm² × 3% = 2.25mm² Spare cell types (typical mix): INV_X1: 40% (invertors — most used in ECO) NAND2_X1: 20% (2-input NAND) NOR2_X1: 15% (2-input NOR) DFF_X1: 15% (flip-flops for ECO state logic) BUF_X2: 10% (buffers for fan-out) Placement rule: one spare cell cluster (10–20 cells) every 50µm × 50µm grid square across core area

4. ECO Flow — Step by Step

Metal-Only ECO Flow
1
Bug identified: Simulation fails, coverage hole found, or timing violation at sign-off corner
2
ECO patch netlist: RTL engineer provides patch — formal tools (Conformal ECO) generate gate-level changes
3
Spare cell mapping: EDA tool maps new logic onto nearest available spare cells
4
Metal ECO routing: Route new connections on M4–M9 only — no diffusion changes. Old incorrect connections cut with metal fills
5
ECO verification: Re-run DRC, LVS, and formal equivalence check on changed region only (incremental)
6
ECO STA: Re-run timing analysis on affected paths only. Confirm ECO doesn't create new violations
7
Release new GDSII: Metal layers updated in GDSII, new mask set for metal layers only → foundry fab

5. ECO Timing Closure

ECO changes can introduce new timing violations. The new metal routes add wire delay, and spare cells may be farther from the intended location than the original cells — increasing interconnect delay.

ECO Timing Impact Analysis: Original path (pre-ECO): FF_A → NAND1 → OR1 → FF_B delay = 280ps slack = +20ps Post-ECO path (spare cell used 80µm away): FF_A → NAND1_orig → (cut wire) → NAND_spare (80µm away) → OR_spare → FF_B Wire delay added: 80µm × 0.04ps/µm = 3.2ps (M7 wire) Spare cell intrinsic delay: +5ps (slightly larger cell than original) Total ECO delay = 280 + 3.2 + 5 = 288.2ps New slack = 20 - 8.2 = +11.8ps ✓ Still passes Worst case scenario — spare cell 200µm away: Wire delay: 200µm × 0.04ps/µm = 8ps Delay = 288ps slack = +12ps ✓ Critical timing rule for ECO: Max spare cell distance from original = slack / wire_delay_per_µm If slack = 20ps and wire = 0.04ps/µm → max distance = 500µm Spare cell budget: place spare cells every ≤ 50µm for any-ECO capability

6. Formal ECO Tools

ToolVendorFunctionKey Feature
Conformal ECOCadenceFormal netlist differencingAuto-generates ECO patch netlist from RTL diff
Formality ECOSynopsysFormal verification + ECOProves functional equivalence after ECO
Innovus ECOCadencePhysical ECO implementationSpare cell mapping + metal routing
ICC2 ECOSynopsysPhysical ECO in ICC2 flowIntegrated with StarRC for timing
Calibre PERCSiemensPost-ECO reliability checkEM/IR re-check on changed metal

7. Real-World ECO Examples

ARM Cortex-A78 Security Patch ECO

GPU Memory Controller Bus Width Fix

ECO Production Checklist

Next — Day 12: Design for Manufacturing (DFM) — yield optimization, CMP fill, redundant vias, lithography-friendly design, and OPC.

← Previous
Day 10: Hierarchical & Chiplets
Next →
Day 12: Design for Manufacturing