# Example: Setup=3 (-start) / Hold=2 - 2023.1 English

## Vivado Design Suite User Guide: Using Constraints (UG903)

Document ID
UG903
Release Date
2023-05-16
Version
2023.1 English

This example assumes the following:

• A setup multiplier of three (3) is defined against the launch clock (`-start`).
• A hold multiplier of one (2) is defined.

Example:

``````set_multicycle_path 3 -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path 2 -hold -from [get_clocks CLK1] -to [get_clocks CLK2]``````

The consequence of defining the setup multiplier against the launch clock (`-start`) is to move the edge of the launch clock used for setup check backward by two (2) cycles (that is, 3-1 cycles). However, because a hold multiplier is defined against the launch clock (default `-start` option with `-hold`), the edge of the launch clock that is used for the hold relationship is moved forward by two (2) cycles.

For both setup and hold checks, the capture clock edge does not change. See the following figure.

Figure 1. Setup=3 (-start), Hold=2

Important: For a FAST-to-SLOW clock domain crossing, define a setup multiplier of N against the launch clock (-start) with a hold multiplier of N-1 (most common case). See the following example:
``````set_multicycle_path N -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -from [get_clocks CLK1] -to [get_clocks CLK2]``````

The following table summarizes the previous results.

Table 1. To define a multicycle path with a Setup of N
Scenario Multicycle Constraints
Same clock domain or between synchronous clock domains with same period and no phase-shift
``````set_multicycle_path N -setup -from CLK1 -to CLK2
set_multicycle_path N-1 -hold -from CLK1 -to CLK2``````
Between SLOW-to FAST synchronous clock domains
``````set_multicycle_path N -setup -from CLK1 -to CLK2
set_multicycle_path N-1 -hold -end -from CLK1 -to CLK2``````
Between FAST-to SLOW synchronous clock domains
``````set_multicycle_path N -setup -start -from CLK1 -to CLK2
set_multicycle_path N-1 -hold -from CLK1 -to CLK2``````
Note: The `get_clocks` command has been omitted in the previous table to simplify the expressions.