HomeSTA CourseDay 14
DAY 14 · TIMING CLOSURE & SIGN-OFF

ECO Flow — Engineering Change Orders

By EcrioniX · Updated June 2026

A chip that has passed through place-and-route represents months of optimisation work. When a timing violation, functional bug, or DRC issue is discovered after P&R — especially close to tape-out — re-running the full flow is often too costly in time. Engineering Change Orders (ECOs) are the surgical approach: make the minimum targeted change to the physical implementation to fix the problem, without disturbing everything else.

1. What is an ECO?

An ECO is a post-layout change to the gate-level netlist that is implemented in the physical layout by modifying cell placements and metal routing rather than re-running the full P&R synthesis flow. ECOs are used when:

The ECO process uses the existing placed-and-routed database as its starting point, makes targeted changes, and re-routes only the affected nets. The goal is to preserve as much of the original routing as possible to avoid re-running LVS, DRC, and STA from scratch on the entire design.

2. ECO types

ECO typeWhat changesScopeMask layers affected
Timing ECOCell size changes, buffer insertions, Vt swaps — no logic changeFixing WNS/TNS violations post-sign-offMetal only (if spare cells used) or full if new cells placed
Functional ECOLogic gates added/removed/replaced; RTL and netlist both updatedFixing a functional bug found post-P&RFull (poly + metal) unless metal-only is possible via spare cells
Metal-only ECOMetal routing reconnections only; transistors unchangedAny fix that can be implemented using pre-placed spare cellsMetal layers only (M1–upper)
DRC ECOLayout geometry changes to fix design rule violationsPost-tapeout preparation or foundry rule updatesDepends on DRC violation location

3. Metal-only ECO — the preferred approach

Manufacturing a chip requires separate masks for each layer. The base layers (poly, active diffusion, N-well) are the most expensive and have the longest fabrication turnaround time — often 4–6 weeks. Metal layers are cheaper and faster to update — 1–2 weeks.

A metal-only ECO makes changes only to metal connections (M1 and above), leaving the base layers unchanged. This is only possible if the needed logic can be implemented using pre-placed spare cells that already exist on the die at the poly layer. The metal-only ECO re-routes connections to those spare cells to implement the new function.

Gate ECO vs Metal-Only ECO Gate ECO New cell placed in layout Base layers (poly/active) changed ALL mask layers re-fabricated 4-6 weeks fab time Higher cost Metal-Only ECO Spare cell re-activated Metal connections only changed Base layers identical to first tape 1-2 weeks fab time Much lower cost Prefer when possible

4. Spare cells

Spare cells are standard cells (inverters, buffers, AND, OR, NAND, NOR gates) that are placed during initial P&R in a regular grid pattern across the die, even though they have no logic function initially. Their power and ground pins are connected to the power rails, but their inputs are tied to VDD or VSS, making them electrically dormant. Their outputs are left floating.

When a metal-only ECO is needed, the ECO tool selects the nearest available spare cell of the correct type, reconnects its input nets via new metal routing, and connects its output to the required net. The spare cell’s transistors were already in place — only metal mask changes are needed.

Spare cell placement in floor plan (SDC/constraints)
## In RTL (spare cell instantiation in top-level) // Verilog: scatter spare cells across the design // Typically 0.5-2% of total cell count in spare cells module spare_cells_grid (input VDD, VSS); // Group of spare inverters, NAND2, NOR2, AND2, OR2 INVX1 spare_inv_0 (.A(1'b0), .ZN()); INVX2 spare_inv_1 (.A(1'b0), .ZN()); NAND2X1 spare_nand2_0 (.A1(1'b0), .A2(1'b0), .ZN()); NOR2X1 spare_nor2_0 (.A1(1'b0), .A2(1'b0), .ZN()); AND2X2 spare_and2_0 (.A1(1'b0), .A2(1'b0), .Z()); OR2X2 spare_or2_0 (.A1(1'b0), .A2(1'b0), .Z()); // Add 50-100 such groups spread across the die endmodule ## In placement constraints (ICC2): ensure spare cells are spread uniformly create_placement_blockage -type hard -name spare_zone_0 ... # ECO tool will search these zones for spare cells during ECO

5. ECO flow in PrimeTime (pt_eco)

PrimeTime ECO mode — complete flow
## ── Step 1: Set up ECO mode ── set_eco_mode -verbose ## Don't modify clock cells (protected) set_eco_opt_clock false ## ── Step 2: Load post-route netlist and parasitics ── read_verilog post_route_netlist.v link_design TOP read_lib sc9_ss_0p9v_125c.lib read_parasitics design_post_route.spef ## ── Step 3: Apply SDC constraints ── source signoff.sdc set_propagated_clock [all_clocks] ## ── Step 4: Run timing to identify violations ── update_timing -full report_timing -nworst 10 -delay_type max ## ── Step 5: Run ECO optimisation ── ## Fix setup violations eco_opt -setup -slack_threshold 0.0 ## Fix hold violations (separate pass) eco_opt -hold -slack_threshold 0.0 ## ── Step 6: Write ECO changes ── ## Generate ICC2-compatible ECO script write_changes -format icctcl -output eco_changes.tcl ## Generate incremental Verilog netlist write_verilog -output post_eco_netlist.v ## ── Step 7: Apply ECO in ICC2 / Innovus ── # In ICC2: # source eco_changes.tcl # place_eco_cells -eco_changed_cells [get_cells -filter {eco_status==moved}] # route_eco -fix_drc true ## ── Step 8: Re-extract and re-verify ── # Run RC extraction on ECO'd regions # Re-run STA with new SPEF # Run DRC/LVS on changed regions

6. Incremental P&R for ECO

After the ECO changes are determined (by PrimeTime or the designer manually), the layout tool performs incremental P&R on only the affected cells and nets:

  1. ECO placement: place new cells near their logical connections; prefer using spare cells already close to the target location
  2. ECO routing: route only the changed nets; use existing routes elsewhere
  3. DRC fixing: fix any new DRC violations introduced by the ECO routing
  4. RC extraction: extract parasitic capacitance and resistance for only the ECO’d nets
  5. STA verification: run timing on the complete netlist with updated SPEF to verify ECO fixed the violation without introducing regressions

7. Metal ECO vs Gate ECO trade-offs

AspectMetal-Only ECOGate ECO (full layer)
Mask costLow (only metal masks)High (all layers)
Fab turnaround1–2 weeks4–6 weeks
Logic flexibilityLimited by spare cell types and locationsFull flexibility; any logic change
Timing impactMay be worse (spare cells may be farther from target)Can optimize placement for minimum delay
When to useSmall functional bugs; timing ECOs near tape-out deadlineLarge functional changes; when spare cells are insufficient
RiskMay not have enough spare cells if many bugs foundRe-running DRC/LVS/STA on entire affected area

ECO sign-off requires full sign-off on ECO’d regions

An ECO is not complete until: (1) timing is re-signed-off with the post-ECO SPEF at all corners; (2) DRC is clean in the ECO’d area (and ideally globally); (3) LVS passes with the post-ECO netlist vs post-ECO layout; (4) functional simulation passes on the post-ECO netlist; (5) the ECO change is documented in the design database with revision control. Partial sign-off is never acceptable.

Day 14 Key Takeaways

Frequently Asked Questions

What is an ECO in ASIC design?

An ECO (Engineering Change Order) is a post-layout modification to fix timing violations, functional bugs, or DRC issues on a placed-and-routed design, without re-running the full synthesis and P&R flow. ECOs are surgical changes that preserve as much of the existing layout as possible to save time and avoid disrupting already-clean sign-off results.

What is the difference between a functional ECO and a timing ECO?

A timing ECO changes only cell strengths or inserts buffers to fix timing — the logic function stays the same. A functional ECO changes the logic itself (add/remove/replace gates) to fix a functional bug and requires RTL modification, re-synthesis, and full re-verification. Functional ECOs are larger in scope and risk; timing ECOs are more contained.

What is a metal-only ECO?

A metal-only ECO makes changes only to the metal routing layers (M1 and above), without modifying the base layers (poly, diffusion) where transistors are defined. By leaving base layers unchanged, only metal masks need to be re-fabricated — 1–2 weeks turnaround instead of 4–6 weeks. This requires pre-placed spare cells to implement the changed logic.

What are spare cells in ECO design?

Spare cells are standard logic cells (inverters, NAND, NOR, AND, OR gates) placed during initial P&R with their inputs tied to VDD/GND (making them dormant) and outputs unconnected. During a metal-only ECO, the ECO tool selects the nearest available spare cell of the correct type and reconnects it via new metal routing, activating it to implement the new logic function without touching base layers.

What is the pt_eco flow in PrimeTime?

PrimeTime ECO mode reads the post-layout netlist and SPEF parasitics, runs STA to find violations, then runs eco_opt to compute the minimum cell changes needed to fix timing. It generates a change script (write_changes) that can be applied in Innovus or ICC2 for incremental placement and routing, followed by re-extraction and STA verification to confirm the ECO fixed the issue.

← Previous
Day 13: Fixing Hold Violations