What causes a hold violation, and why can't slowing the clock fix it?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
A hold violation means new data reaches the capture flop too soon after the clock edge, before the flop has safely stored the old value. It is caused by short data paths, a capture clock that arrives later than the launch clock, and fast process corners. Slowing the clock does not help because the hold check compares launch and capture on the same clock edge, so the period is not part of the equation.
Technical Explanation
- A flop needs its input stable for a short hold time after the capture edge. The hold check asks whether new data, launched by the same edge at the previous flop, could arrive inside that window and overwrite the value being captured.
- Hold slack is arrival time minus required time, where required time is the capture clock latency plus the library hold time plus uncertainty. The launch and capture edges are the same edge, so the period cancels out.
- This is why frequency does not matter. If a hold check fails at 1 GHz, it fails at 100 MHz as well. A hold failure on silicon cannot be screened out by running slower, which makes it more serious than a setup failure.
- Short data paths are the main cause: flop to flop with little or no logic between them, which is common in scan chains, shift registers and pipeline stages.
- Positive skew hurts hold. If the capture clock arrives later than the launch clock, the hold window moves later and fast data has a better chance of landing inside it. Skew that helps setup on one path is exactly what hurts hold on a short path to the same flop.
- Fast corners make hold worse. At the fast process, high voltage corner, cell and wire delays are smallest, so the data path is at its shortest. Hold is signed off at those corners, while setup is signed off at the slow ones.
- Derates work in reverse for hold: the data path and launch clock are derated early (fast) and the capture clock late. Crosstalk can also speed up a victim net when the aggressor switches the same way, reducing arrival time further.
- Hold is usually fixed after setup, by adding delay on the data path close to the capture flop. PrimeTime hold fixing with
fix_eco_timing -type hold(PT) uses both sizing and buffer insertion by default and tries not to create setup or DRC violations.
Common Mistake
The Trap: Leaving hold until the last week because "hold is easy, just add buffers". At signoff, 2,000 hold violations appear at the fast corner, many on paths with little setup margin at the slow corner. Each delay cell has to fit into a nearly full layout, and some paths cannot be fixed without also breaking setup, costing a week of ECO loops.
Follow-up Question & Model Response
"Why is hold usually fixed after setup, and not before?"
Candidate Model Response: Setup fixing makes paths faster, which can create new hold violations, and the PrimeTime UG notes that setup fixing is allowed to introduce hold violations because setup is harder to fix. Hold fixing adds delay, and PrimeTime hold fixing preserves setup slack. If you fix hold first, the setup work that follows can undo it. Fixing setup first and hold second means each step leaves the earlier one in place. DRC fixing comes before both because it has the highest priority.
Practical Example
Tapeout Scenario: Two flops in a shift chain are connected directly, with a clock-to-Q of 45 ps and a net delay of 6 ps at the fast corner (illustrative). The capture flop gets its clock 70 ps after the launch flop, library hold time is 18 ps and uncertainty is 15 ps. Required time is 70 + 18 + 15 = 103 ps and arrival is 51 ps, so hold slack is -52 ps. Changing the period from 1.0 ns to 2.0 ns leaves these numbers unchanged. Two delay cells of 30 ps near the capture flop bring slack to +8 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