What is a DRC violation in timing signoff, and how is it different from a setup or hold violation?
From PDVerse STA Mentor Guide ยท pdVerse Mentor Guide
Short Answer
A DRC (design rule constraint) violation happens when a signal's own physical limit is broken โ its transition time is too slow, or its driven capacitance too high โ regardless of any clock relationship. A setup or hold violation is always about a signal arriving too late or too early against a specific clock edge. A path can pass every setup and hold check and still fail a DRC limit, and vice versa.
Technical Explanation
The two failure types are checked by the same tool but come from completely different physical concerns.
set_max_transition(SDC) and a similar max capacitance limit define the DRC checks: a signal's rise/fall time or driven load must stay under a set ceiling.- These limits exist because a cell's library timing model (
LIB) is only accurate within a certain slew and load range โ outside it the model itself becomes unreliable, not just slow. - Setup and hold checks instead compare one signal's arrival time against another signal's required time at the same flip-flop, driven entirely by the clock period and any exceptions on that path.
- A wire can have a perfectly fine setup slack and still violate max_transition, if it is driving far more load than its driver was sized for.
report_constraint(PT) reports both families in the same summary, but they need different fixes: a DRC violation calls for a bigger driver or a split load, not a changed clock relationship.- Signoff needs both families clean at once โ zero setup/hold violations with many DRC violations left is not considered timing-clean.
Common Mistake
The Trap: treating a max_transition violation like a setup violation and trying to fix it by changing the exception structure or path grouping.
- That approach does nothing, because DRC limits are per-signal, not per-path-relative-to-clock โ no exception command changes a slew or a load.
- The actual fix is almost always upsizing the driving cell or adding a buffer to split a heavy net, the same toolkit ECO uses for setup and hold.
Follow-up Question & Model Response
Can a DRC violation on one net actually cause a setup or hold violation somewhere else in the design?
Candidate Model Response: Yes โ this is the usual way the two failure types connect. A net with excessive load produces a slower transition, and that slow transition adds extra delay to every downstream gate it drives, which can push a previously passing setup path into a violation. Fixing the DRC violation first, by upsizing the driver or splitting the load, often improves the downstream setup slack as a side effect. This is one reason signoff flows typically clear DRC violations before spending ECO effort on the remaining setup and hold numbers.
Practical Example
A clock-gating cell drives 40 flops directly, past its library's recommended fanout. report_constraint (PT) shows it clean on setup and hold but VIOLATED on max_transition at 0.62ns against a 0.4ns limit. Splitting the load with two buffers fixes the DRC violation and recovers 35ps of setup slack on the slowest downstream path.
Complete STA Handbook
Master Signoff-Ready Static Timing Analysis
Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Continue practising