What is an ECO in physical design?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
An ECO, or engineering change order, is a small, controlled change to a design that is already placed and routed, made instead of running the flow again. You edit the netlist, place only the changed cells, reroute only the affected nets and re-check. Timing ECOs fix timing or design rule violations, while functional ECOs change the logic itself.
Technical Explanation
- The block keeps its placement, clock tree and routing. Only the edited cells and the nets that touch them change, which protects the timing, IR and routing work already done in the rest of the block.
- In ICC2 the generic flow for timing or functional changes is to update the netlist with
eco_netlist(ICC2) or with netlist editing commands, place the changed cells withplace_eco_cells(ICC2), fill the gaps with filler cells, then reconnect the routing withroute_eco(ICC2). - Many timing ECOs start in PrimeTime.
fix_eco_drc(PT),fix_eco_timing(PT) andfix_eco_power(PT) edit the design inside PT, andwrite_changes(PT) writes those edits as a script that ICC2 runs. - There are two families. A timing ECO sizes cells, swaps threshold voltage or adds buffers and must not change function. A functional ECO changes logic, for example an RTL bug fix, and must match the new RTL.
- Before tapeout you can add cells and move existing ones; ICC2 calls this the unconstrained, or generic, ECO flow. After the base layers are fixed, the freeze silicon flow allows only metal and via changes, so every new gate must map onto a spare cell already on the die.
- Every ECO ends with the same checks: extraction, PrimeTime timing, logic equivalence and physical verification of the changed area. An ECO that fixes one thing and breaks another is common, so the re-check is part of the change.
- ECOs stop paying off when the change list grows very large. Moving many cells and rerouting large parts of the block then costs more, and is harder to verify, than re-running optimization from an earlier stage.
- ICC2 keeps track of what changed. Each edited cell carries an ECO change status such as create_cell, size_cell or add_buffer, and
place_eco_cells -eco_changed_cells(ICC2) uses it to place only those cells, leaving every other cell where it was.
Common Mistake
The Trap: Treating the ECO as finished once ICC2 has sourced the change file. After a small sizing ECO, a junior engineer skipped route_eco (ICC2) because the new cells had the same footprint. Three swapped cells had different pin shapes, the old routes no longer landed on the pins, and the block failed LVS a day before handoff. The fix took ten minutes; finding it took most of a day, because nobody suspected a sizing-only ECO. Every ECO, however small, gets the full place, route, extract and re-check sequence.
Follow-up Question & Model Response
"Why not re-run postroute optimization instead of doing an ECO?"
Candidate Model Response: Re-running optimization touches much more of the block than the problem needs, so clean paths can move and new violations can appear. It also takes far longer and restarts the correlation work with PrimeTime. An ECO keeps the proven parts frozen and changes a few dozen cells, which is easy to review, easy to check for equivalence and quick to re-time. Late in a schedule that predictability matters more than the extra slack a full re-run might find. A full re-run is still the right call when the violations are spread across the whole block, because then an ECO would touch nearly everything anyway.
Practical Example
Tapeout Scenario: After route, PrimeTime shows 37 setup and 64 hold violations in the slow and fast scenarios (illustrative). fix_eco_timing (PT) resizes 22 cells and inserts 41 hold buffers, and write_changes (PT) writes a 63-cell change list. In ICC2 the script is sourced, place_eco_cells -eco_changed_cells (ICC2) places the 41 new buffers and legalizes the 22 resized cells with an average displacement of 0.6 µm, fillers go back in, and route_eco (ICC2) reconnects 118 nets. After StarRC extraction and a new PrimeTime run, 2 setup paths remain at −4 ps and go into a second, smaller ECO of 2 resized cells. Formality against the pre-ECO netlist passes after each pass, and the physical checks on the changed area come back clean, so the block moves to signoff about a day after the first PT report.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising