What can fix_eco_drc fix, and why does delta-delay fixing need a threshold?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
fix_eco_drc (PT) fixes what report_constraint (PT) reports for max capacitance, max transition and max fanout, noise violations from report_noise (PT), crosstalk delta delay found by report_si_bottleneck (PT), and cell electromigration from report_cell_em_violation (PT). It sizes cells and inserts buffers or inverter pairs while keeping area low, and by default it ignores timing. Delta delay needs a threshold because no constraint limits it, so there is no delta delay slack to fix against.
Technical Explanation
- Pick the violation with
-type: max_transition, max_capacitance, max_fanout, noise, delta_delay or cell_em. Pick the methods with-methods {size_cell insert_buffer}and the buffers with-buffer_list. - Timing is not considered by default, and DRC fixing has the highest priority, so it may alter setup and hold slack. Options let you make it honour timing, with margins set through
set_eco_options -drc_setup_margin(PT) and-drc_hold_margin. - For delta delay, you give a positive threshold greater than zero, and it applies to slowdown and speedup alike. The tool targets victim nets whose delta delay cost exceeds it and that sit on a path with negative slack;
-slack_lesser_thanchanges that slack filter. This feature requires a PrimeTime-ADV-PLUS license. - Net selection comes from SI bottleneck analysis, so preview it with
report_si_bottleneck -cost_type delta_delay(PT). The cost is the absolute delta delay, max and min are considered together, and DMSA merges it across scenarios. - The threshold sets the trade-off. Too low and the tool buffers nets whose delta barely matters, adding area and new coupling; too high and it skips victims that cause the failures.
- Cell EM fixing needs PrimePower data from
update_power(PT) with EM analysis enabled, runs one iteration per call, and needs a PrimePower license plus PrimeTime-ADV-PLUS. - Clock-network DRC uses
-cell_type clock_networkfor max transition, capacitance or fanout, and only works in the physically aware flow. - Watch the names:
report_constraint(PT) is singular,report_constraints(ICC2) is plural. ICC2 also does not honour max fanout as a DRC, so a fanout violation PT fixes may never have shown in ICC2.
What To Check
- Which report each violation came from, so
-typematches it. - Remaining and unfixable counts after each run, with
-verbosereasons. - Setup and hold slack before and after DRC fixing.
- The spread of delta delay costs before choosing a threshold.
Command Checks & Actions
report_constraint -all_violatorsLists every max transition, capacitance and fanout violator.
report_si_bottleneck -cost_type delta_delay -slack_lesser_than 0.0Previews victim nets on violating paths, highest delta delay first.
fix_eco_drc -type max_transition -methods {size_cell}Fixes transition violations by sizing only.
fix_eco_drc -type delta_delay -delta_delay_threshold 0.05 -methods {size_cell insert_buffer} -buffer_list {BUFX1 BUFX2 BUFX3}Fixes victims whose delta delay exceeds 0.05 time units on failing paths.
report_constraints -all_violators -max_transitionConfirms transition violations in ICC2 after the ECO; note the plural name.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Zero max transition and capacitance violators after the run, with setup WNS unchanged.
- Suspicious (illustrative): DRC is clean but setup WNS dropped 10 ps, or delta delay fixing touched 2,000 nets at a threshold of 0.01.
- Hard stop: Remaining violators on dont_touch nets or in clock networks that nobody has assigned, since signoff needs DRC clean.
Common Mistake
The Trap: Setting -delta_delay_threshold to 0.001 to catch everything. The tool targets hundreds of victims with tiny deltas, upsizes drivers and adds buffers across the block, and the extra cells create congestion and fresh coupling for the next route.
What The Interviewer Is Testing
- Do you know which reports feed
fix_eco_drc(PT), and the singular versus plural trap? - Explaining why delta delay has no slack and so needs a threshold.
- License awareness for delta delay and cell EM fixing.
Follow-up Question & Model Response
"Should DRC fixing honour timing?"
Candidate Model Response: By default fix_eco_drc (PT) ignores timing, and it runs before timing fixing because DRC has the highest priority. You can ask it to honour setup and hold with margins so it does not push a +5 ps path to -10 ps. The cost is that some DRC violations then become unfixable and need a manual decision. Signoff needs DRC clean either way, so a timing-aware pass that leaves violators is not finished.
Practical Example
Tapeout Scenario: PT reports 120 max transition and 14 max capacitance violators (illustrative). fix_eco_drc -type max_transition (PT) with sizing and buffering clears 118 of the transition violators, and a max_capacitance pass clears 13 of the 14; the other 3 sit on dont_touch nets and go to the owner. report_si_bottleneck (PT) shows 40 victims on violating paths with delta delay from 0.02 to 0.31 ns. A threshold of 0.05 targets 17 of them, and setup TNS on those paths improves from -1.2 ns to -0.3 ns.
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