Why is hold checked at several corners, and how do you fix it across all of them at once?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Each corner scales cell and wire delays differently, so hold slack, which depends on the difference between data delay and clock skew, can be worst in more than one corner. A delay cell that fixes hold in the fast corner adds even more delay in the slow corner and can break setup there. Run the fix in DMSA with every signoff scenario in focus, current_scenario -all (PT) then fix_eco_timing -type hold (PT), so each change is checked against all of them.
Technical Explanation
- Hold is usually worst in the fast corner, where data paths are shortest. It is not only there: paths with large clock skew or long wires can be worst elsewhere, which is why hold is signed off in several corners.
- Hold fixing adds delay to the data path. The same cell adds more delay in the slow corner, so every hold fix eats into slow-corner setup margin.
- In a single scenario the fixer sees only that scenario, so it can pick a cell that is right there and wrong in another corner.
- In DMSA the manager runs
fix_eco_timing(PT) against every scenario in command focus. Hold fixing avoids new setup and DRC violations, and with all scenarios in focus that holds in every one of them. Before committing a netlist change, PrimeTime checks it can succeed in all scenarios in focus. - Set up scenarios with
create_scenario(PT), hosts withset_host_options(PT) andstart_hosts(PT), thencurrent_scenario -all(PT) restores focus to all scenarios before fixing. - For violations of about 5 ps or less,
-load_cell_listadds load cells, which fix small hold violations without the larger delay of a buffer. - When scenarios outnumber hosts,
eco_enable_more_scenarios_than_hosts(PT) lets the ECO swap scenarios through hosts, at a runtime cost.
What To Check
- Hold slack for each violating path in every hold scenario, not only the worst.
- Setup slack in the slow scenarios on the same paths.
- All signoff scenarios in command focus before fixing.
- Unfixable reasons for any path left failing.
Command Checks & Actions
create_scenario -name ff_m40 -specific_data ff_m40.tclDefines one scenario for the manager.
set_host_options -num_processes 8Sets up worker processes.
start_hostsStarts the worker processes.
current_scenario -allPuts every scenario in command focus.
report_timing -delay_type min -max_paths 50Merged hold report across all scenarios in focus.
fix_eco_timing -type hold -buffer_list {DLY1X2 DLY2X2} -load_cell_list {LOAD1 LOAD2}Fixes hold once, checked against every scenario.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Hold clean in every scenario, and slow-corner setup on the fixed paths still +20 ps or better.
- Suspicious (illustrative): Paths fixed in one corner that now fail by a few ps in another hold scenario.
- Hard stop: Hold fixes that push slow-corner setup negative, or paths the tool marks unfixable in all scenarios.
Common Mistake
The Trap: Fixing hold in the fast scenario on its own, then checking setup later. The tool picks the delay cell that best fixes the fast corner, and in the slow corner it adds enough delay to break setup on 30 paths. The next round has to undo half the hold fixes to recover setup.
What The Interviewer Is Testing
- Knows why a single-corner hold fix is unsafe.
- Knows how DMSA puts every scenario in front of the fixer.
- Chooses fixes that are small in the slow corner, such as load cells.
Follow-up Question & Model Response
"What do you do when a path cannot be fixed in all corners at once?"
Candidate Model Response: First confirm it: the tool's unfixable reasons say whether any cell satisfied hold in one corner without breaking setup in another. Then look for a different fix point, such as a pin on the hold path shared with paths that have more setup margin, or a load cell that adds less delay. If none exists, the problem is in the clock, where skew differs between corners, so a clock-side change or a structural change is needed. Treat it as a design issue, not something to force with more buffers.
Practical Example
Tapeout Scenario: One path fails hold by -25 ps in the fast corner and -5 ps in typical, with slow-corner setup at +80 ps (illustrative). A fast-corner-only run picks a cell adding 45 ps fast and 90 ps slow, leaving slow setup at -10 ps. The DMSA run sees the slow scenario and picks a cell adding 30 ps fast, about 40 ps typical and 55 ps slow. Fast hold ends at +5 ps, typical hold at +35 ps, and slow setup at +25 ps.
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