The syntax of the set_multicycle_path command with the basic options is:
set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end] [-from <startpoints>] [-to <endpoints>] [-through <pins|cells|nets>]
You must specify the
<path_multiplier>. The default values used
by the timer are:
- 1 for setup analysis (or recovery)
- 0 for hold analysis (or removal)
The hold relationship is tied to the setup relationship. Use the following formula to retrieve the number of hold cycles for most common cases:
Hold cycles = <setup path multiplier> - 1 - <hold path multiplier>
- By default, the setup path multiplier is defined with respect to the destination
clock. To modify the setup requirement with respect to the source clock, use the
- Similarly, the hold path multiplier is defined with respect to the source clock.
To modify the hold requirement with respect to the destination clock, use the
Note: For a definition of the relevant terms, see this link in the Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906).
Important: There are two hold relationships for each setup relationship. (1) The first hold relationship ensures that the setup launch edge is not captured by the edge arriving before the active capture edge. (2) The second hold relationship ensures that the edge after the active launch edge is not captured by the active capture edge. The timing analysis tool calculates both hold relationships but only the most restrictive is kept during analysis and reporting. See the following figure.
Figure 1. Example of Setup and Hold Relationships for a Path
-endoptions have no apparent effect when applying a Multicycle Path constraint on paths clocked by the same clock or clocked by two identical clocks (that is, when the clocks have the same waveform with or without a phase shift).
The following table summarizes how the active launch and capture edges are affected
|Source Clock (-start) Moves the launch edge||Destination Clock (-end) Moves the capture edge|
|Setup||<---- (backward)||----> (forward) (default)|
|Hold||----> (forward) (default)||<---- (backward)|
-setupoption of the
set_multicycle_pathcommand does not only modify the setup relationship. It also affects the hold relationships which are always tied to the setup relationships. If the hold relationship is to be restored back to its original position, another
set_multicycle_pathspecification would be needed with
Note: A Multicycle constraint can be set on a single path, on multiple paths, or even between two clocks.
The following sections cover the common Multicycle Path constraint scenarios and
illustrate the impact of the setup and hold multipliers and the
-end options on the timing path