Why does a multicycle path need a matching -hold exception, and what happens if you forget it?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Explanation
set_multicycle_path relaxes the setup check to allow data more than one clock cycle to arrive, but it does not automatically move the hold check's reference edge. Without an explicit -hold exception, the hold check still defaults to checking against the very next edge (cycle 1), which is now the wrong edge relative to the relaxed setup capture edge.
Timing-path Walkthrough
In the worked example, set_multicycle_path 2 -setup -to [get_pins slow_reg/D] relaxes the setup capture edge to cycle 2. But leaving the hold check unspecified means it still checks against the default edge (cycle 1) — the notes state this produces a false hold violation. The essential partner is set_multicycle_path 1 -hold -to [get_pins slow_reg/D], which re-anchors the hold check to the correct edge consistent with the relaxed setup timing.
Command
set_multicycle_path 2 -setup -to [get_pins slow_reg/D]
set_multicycle_path 1 -hold -to [get_pins slow_reg/D]Switch-by-switch
-setup N: relaxes the setup check to allow N cycles for data arrival. -hold N: re-anchors
the hold check's reference edge to be consistent with the relaxed setup edge. -to: targets
the exception at a specific endpoint pin.Expected Report Behavior
With single-cycle analysis: required~1000, arrival~1400 gives slack~−460 (FAIL). Applying set_multicycle_path 2 -setup moves required to ~2000 against the same arrival~1400, giving slack~+540 (PASS) — but omitting the paired -hold 1 leaves a false hold violation showing up elsewhere in the report.
Mentor Note — Common Mistake
Specifying -setup 2 alone and forgetting the paired -hold 1, described in the notes as one of the most common and dangerous SDC mistakes.
How To Debug
After adding any multicycle setup exception, check the hold report at the same endpoint for a newly introduced false violation, and confirm a matching -hold exception is present; also verify a huge positive slack isn't itself an erroneous exception rather than a correct one.
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising