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
-start
option. - 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
-end
option.
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
Important: The
-start
and
-end
options 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
by the -start
and -end
options.
Source Clock (-start) Moves the launch edge | Destination Clock (-end) Moves the capture edge | |
---|---|---|
Setup | <---- (backward) | ----> (forward) (default) |
Hold | ----> (forward) (default) | <---- (backward) |
Important: The
-setup
option of the
set_multicycle_path
command 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_path
specification would be needed
with -hold
.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
-start
and -end
options on the timing path
requirement.