What is the PrimeTime ↔ ICC2 ECO loop?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
The ECO loop splits the job between the tool that signs off timing and the tool that owns the layout. PrimeTime finds and fixes violations with signoff parasitics and writes the edits with write_changes (PT); ICC2 sources that script, places the new or resized cells and reroutes the touched nets. After fresh extraction PrimeTime re-times the design, and the loop repeats until nothing is left to fix.
Technical Explanation
- Before fixing, the block should be fully placed and routed with clock trees built, and PrimeTime should have the netlist, the signoff parasitics and the constraints for every scenario that matters.
fix_eco_timing -type setup(PT) uses cell sizing only by default and works on data paths only. Hold fixing with-type holduses sizing and buffer insertion. Setup fixing honors DRC and may change hold, while hold fixing honors setup slack and DRC.- Order matters. The PT user guide recommends power recovery first, then DRC and noise with
fix_eco_drc(PT), then timing, then a final leakage recovery by Vt swap that does not touch the layout. - In physically aware mode PT also reads placement data, places new or resized cells (open_site mode uses free sites only), and records their locations in the change list. This mode needs a PrimeTime-ADV license (PT UG licensing table).
write_changes -format icctcl(PT) writes a Tcl script of netlist edits for IC Compiler II. In ICC2 yousource(ICC2) it, runplace_eco_cells -eco_changed_cells(ICC2) on every cell whose ECO status is set, insert fillers, and then runroute_eco(ICC2).- Extraction then produces new parasitics, and PrimeTime reloads them and re-times. Only now do you know whether the ECO worked, because ICC2 may have moved cells and real routes replaced PT's estimates.
- Each pass should shrink the violation count. If it stalls or oscillates, stop and find out why, such as no free space, conflicting scenarios or a constraint problem, instead of running more passes.
What To Check
- Violation counts per type and scenario before the ECO, from
report_constraint -all_violators(PT) andreport_timing(PT). - The size of the change list and how many cells are new rather than resized.
- The ICC2 placement result: every changed cell placed and legal, and how far cells moved.
- Opens and DRCs after
route_eco(ICC2). - The same PT reports after re-extraction, compared with what PT predicted before writing the changes.
Command Checks & Actions
report_constraint -all_violatorsBaseline count of setup, hold and DRC violators before fixing.
fix_eco_timing -type setupFixes setup violations, by sizing only unless told otherwise.
fix_eco_timing -type holdFixes hold violations with sizing and buffer insertion while protecting setup.
write_changes -format icctcl -output pt_eco.tclWrites all changes made in this session as an ICC2 Tcl script.
source pt_eco.tclApplies the netlist edits in ICC2.
place_eco_cells -eco_changed_cellsPlaces new cells and legalizes resized ones.
route_ecoReconnects the nets touched by the ECO.
check_routesConfirms no opens or routing DRCs remain after ECO routing.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Violations fall every pass, for example 146 → 14 → 0 setup endpoints, with no new hold or DRC violations and every ECO cell placed and legal.
- Suspicious (illustrative): PT predicts WNS +3 ps after fixing but the re-extracted run shows −8 ps, which usually means cells moved further than expected or routes detoured around congestion.
- Hard stop: Violation counts do not fall after two passes, or ICC2 leaves ECO cells unplaced for lack of free sites. Stop and change the approach.
Common Mistake
The Trap: Fixing setup in one PT session and hold in another, then writing two change files. The hold session never saw the setup edits, so three of its buffers landed on paths the setup ECO had just resized, and the next re-time showed setup violations on paths that had been clean. One session, fixed in order, writes one change list that covers both.
What The Interviewer Is Testing
- Knowing which tool does which part, and which file passes between them.
- Can you name the recommended fixing order, and explain why hold fixing comes after setup?
- Strong answers treat extraction plus a PT re-time as the only real proof that an ECO worked.
Follow-up Question & Model Response
"Why doesn't PrimeTime's own post-fix timing count as the answer?"
Candidate Model Response: PT estimates the effect of each change with the parasitics it has, and in logic-only mode it does not know where ICC2 will put a new buffer. ICC2 then places and legalizes cells, possibly moving them, and routes real wires that differ from the estimate. Only fresh extraction of the implemented layout and a new PT run show the real slack. Physically aware mode narrows the gap but does not remove it, so the re-time is still required.
Practical Example
Tapeout Scenario: Pass 1 (illustrative): PrimeTime shows 146 setup endpoints at WNS −37 ps and 310 hold endpoints at worst −21 ps. After fix_eco_timing (PT) for setup and then hold, PT predicts 9 setup and 0 hold violations, and write_changes (PT) writes 64 resized cells and 188 new buffers. ICC2 places all 252 changed cells with at most 2.4 µm displacement, and route_eco (ICC2) reconnects 431 nets with no opens. The re-extracted PT run shows 14 setup endpoints at WNS −6 ps and 2 hold endpoints at −3 ps. Pass 2 resizes 11 cells and adds 2 buffers, and the third PT run is clean.
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