In what order do you try setup fixes, and why that order?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Start with the fix that costs least and disturbs the layout least, and climb only when the cheaper rung runs out. The usual order is Vt swap, cell sizing, buffering or fanout split, logic restructuring or cloning, useful skew, and finally placement or floorplan changes. Each step up moves more cells, touches more nets and puts more already-closed timing at risk, so you stop at the first rung that clears the path.
Technical Explanation
- Vt swap comes first because the footprint and pin positions stay the same, so nothing moves and no route changes. The price is leakage, which ICC2 lets you cap with
set_multi_vth_constraint -low_vt_percentage 10(ICC2), measured by cell count or by area through-cost. - Set that LVT cap early, once the LVT cell group is declared with
set_threshold_voltage_group_type -type low_vt(ICC2). ICC2 limits percentage-LVT optimization duringroute_opt(ICC2) to avoid disturbing QoR, so a block over budget at routing stays over. - Sizing is next, with
size_cell(PT) orsize_cell(ICC2). A stronger cell loads the stage before it and may be wider, so legalization can shift neighbours.fix_eco_timing -type setup(PT) sizes only by default. - Buffering and fanout splitting come third. Shielding a critical load or breaking a long wire fixes a slow transition that sizing cannot, but each new cell needs a free site and routing. PrimeTime inserts with
insert_buffer(PT); ICC2 scripts normally useadd_buffer(ICC2) oradd_buffer_on_route(ICC2), though ICC2 also acceptsinsert_buffer(ICC2). - Restructuring and cloning change the logic, such as moving a late signal nearer the output or duplicating a driver. Equivalence must be rerun, so this usually goes back to ICC2 optimization.
- Useful skew borrows time from the next stage by delaying the capture clock. It is cheap when that stage has slack, but every flop on the moved clock branch shifts. Clock-network fixing in PrimeTime (
-cell_type clock_network) works only in the physically aware flow, which requires a PrimeTime-ADV license. - Placement and floorplan changes sit at the top: best for long-wire paths, but they reopen routing and timing for everything nearby.
- The order bends to the path. A path dominated by wire delay gains almost nothing from a Vt swap, so you go straight to buffering or placement.
What To Check
- Per-stage cell delay, net delay and transition on the failing path, to see what dominates.
- LVT headroom left against the multi-Vt constraint.
- Hold slack on the same endpoints before and after, since setup fixing may create hold violations.
- Free sites near the path before choosing buffering.
- Setup slack of the next stage before relying on useful skew.
Command Checks & Actions
report_timing -delay_type max -max_paths 20Lists the 20 worst setup paths so you can see whether cell or wire delay dominates.
fix_eco_timing -type setupRuns setup fixing with the default method, cell sizing only, on data paths only.
fix_eco_timing -type setup -methods insert_buffer -buffer_list {BUFX2 BUFX4}A second pass that adds load buffering for paths sizing could not fix.
set_multi_vth_constraint -low_vt_percentage 10 -cost cell_countCaps LVT cells at 10% of data path cell count (illustrative limit).
report_multi_vth_constraintReports the LVT constraint so you can compare usage against it.
size_cell U21 -lib_cell AND2X4Upsizes one cell by hand when you want a single controlled change.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Vt swap and sizing clear the path, LVT stays at 8% against a 10% cap, and hold slack on the same endpoints stays positive.
- Suspicious (illustrative): Setup clears but 40 new hold violations appear on the same endpoints, or LVT jumps from 6% to 14% in one pass.
- Hard stop: A path still fails by more than any cell change can recover after sizing and buffering, for example -180 ps at 1 GHz. That needs restructuring or placement, not more swaps.
Common Mistake
The Trap: Jumping to useful skew on a -40 ps path because it looks free. The delayed branch also clocks 300 flops whose next stage had 15 ps of margin, so one clock change creates dozens of new setup failures downstream.
What The Interviewer Is Testing
- Can the candidate rank fixes by cost and disturbance instead of just listing them?
- Knowledge that PT setup fixing sizes only by default and that ICC2 limits LVT optimization in
route_opt(ICC2). - A strong answer changes the order for a wire-dominated path.
Follow-up Question & Model Response
"Why is a Vt swap usually tried before upsizing?"
Candidate Model Response: A Vt swap keeps the same footprint and pin positions, so no cell moves and no route changes. Upsizing can make the cell wider and adds input capacitance on the previous stage, which may slow that stage and push neighbours during legalization. The cost of the swap is leakage, which you control with a percentage cap. Once the LVT budget is spent, sizing becomes the cheapest remaining step.
Practical Example
Tapeout Scenario: A routed block at 1 GHz shows WNS -62 ps over 85 endpoints (illustrative). Vt swap clears 51 endpoints and moves LVT from 6% to 9% against a 10% cap. fix_eco_timing -type setup (PT) clears 27 more by sizing. The other 7 sit on a 900 um net where wire is 70% of the delay, and a pass with -methods insert_buffer clears 5. The last 2 go back to ICC2 as a placement change. A hold recheck finds 3 small new violations, fixed with load cells.
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