set_multicycle_path Syntax - 2022.1 English

Vivado Design Suite User Guide: Using Constraints (UG903)

Document ID
UG903
Release Date
2022-06-01
Version
2022.1 English

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.

Table 1. Active Launch and Capture Edges
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.