Define multicycle path
Syntax
set_multicycle_path [‑setup] [‑hold] [‑rise] [‑fall] [‑start] [‑end]
[‑reset_path] [‑from <args>] [‑rise_from <args>] [‑fall_from <args>]
[‑to <args>] [‑rise_to <args>] [‑fall_to <args>] [‑through <args>]
[‑rise_through <args>] [‑fall_through <args>] [‑quiet] [‑verbose]
<path_multiplier>
Usage
Name | Description |
---|---|
[-setup]
|
Only setup multiplier is set |
[-hold]
|
Only hold multiplier is set |
[-rise]
|
Multiplier valid for rising delays on path endpoint |
[-fall]
|
Multiplier valid for falling delays on path endpoint |
[-start]
|
Multiplier measured against path startpoint |
[-end]
|
Multiplier measured against path endpoint |
[-reset_path]
|
Reset this path before setting multicycle |
[-from]
|
List of path startpoints or clocks |
[-rise_from]
|
Apply to paths rising from the list of startpoints or clocks |
[-fall_from]
|
Apply to paths falling from the list of startpoints or clocks |
[-to]
|
List of path endpoints or clocks |
[-rise_to]
|
Apply to paths with rise transition at the list of endpoints or clocks |
[-fall_to]
|
Apply to paths with fall transition at the list of endpoints or clocks |
[-through]
|
List of through pins, cells or nets |
[-rise_through]
|
Apply to paths rising through pins, cells or nets |
[-fall_through]
|
Apply to paths falling through pins, cells or nets |
[-quiet]
|
Ignore command errors |
[-verbose]
|
Suspend message limits during command execution |
<path_multiplier>
|
Number of cycles |
Description
By default, the Vivado™ timing engine performs a single-cycle analysis, in which the setup check is performed at the destination on the capture edge, one clock cycle after the edge of the source clock. However, this may not be appropriate for certain timing paths. The most common example is a logic path that requires more than one clock cycle for the data to stabilize at the endpoint.
The set_multicycle_path
command lets you choose a path multiplier, N, to establish a timing path that takes N clock cycles from the start clock edge to the capture clock edge. The path multiplier defines the total number of clock cycles required for propagation of a signal from its origin to destination when that propagation is longer than a single clock cycle. For more information on the use of this command, refer to the Vivado Design Suite User Guide: Using Constraints (UG903).
The set_multicycle_path
command is used to specify path multipliers for setup and hold analysis, for rising and/or falling edges, with respect to the source clock or the destination clock. This command includes three elements:
- The specification of the setup and hold analysis affected by the multicycle path.
- The definition of the timing paths to which the multicycle path applies.
- The path multiplier defining the number of clock cycles to apply to the timing analysis.
By default the path multiplier applies to both the setup and hold analysis. The hold analysis is derived from the setup analysis, so it is moved along with the setup analysis. If the path multiplier moves the setup check N clock cycles, it moves the hold check N-1 clock cycles. However, this often results in hold timing failures.
You can use a second set_multicycle_path
command with the -hold
option to restore the hold analysis to its original location. When the -hold
option is specified the <path_multiplier> acts on the hold relationship to restore the hold check to its original position. For instance, the following command sequence extends the setup check for 3 clock cycles, and consequently extends the hold check by two clock cycles (N-1). The second command restores the hold check to its original position:
set_multicycle_path 3 -from {usbEngine1/u4/csr_reg[26]/C} \
-to {usbEngine1/u1/u2/sizd_c_reg[12]/D}
set_multicycle_path 2 -from {usbEngine1/u4/csr_reg[26]/C} \
-to {usbEngine1/u1/u2/sizd_c_reg[12]/D} -hold
By default, the setup path multiplier is applied with respect to the destination clock, and the hold path multiplier is applied with respect to the source clock. Use the -start
or -end
options to change the default setup or hold analysis with respect to the source or destination clocks.
This command operates silently when successful, or returns an error if the command fails.
Arguments
-setup
- (Optional) Apply the path multiplier to the setup check, which also affects the hold check. This is also the default behavior of the set_multicycle_path
command when neither -setup
nor -hold
are specified.
-hold
- (Optional) Apply the path multiplier only to the hold check, to change the hold relationship by the specified number of clock cycles.
-setup
nor -hold
is used, or when only -setup
is specified, the <path_multiplier> applies to both setup and hold checks.
-rise
- (Optional) Apply the multiplier specifically to rising edge delays on the path endpoint.
-fall
- (Optional) Apply the multiplier specifically to falling edge delays on the path endpoint.
-rise
or -fall
is specified, the multiplier is applied to both the rising and falling edge delays.
-start
- (Optional) By default, the setup path multiplier is defined with respect to the destination clock (-end
). To modify the setup requirement with respect to the source clock, the -start
option must be used.
-end
- (Optional) By default, the hold path multiplier is defined with respect to the source clock. To modify the hold requirement with respect to the destination clock, the -end
option must be used.
-start/-end
options have no effect when applying a multicycle path constraint on paths clocked by the same clock, or clocked by two clocks having the same waveform, or with no phase shift.
-reset_path
- (Optional) Reset the specified path before applying the multicycle path multiplier.
-from
<args> - (Optional) A list of start points on the path that will be affected by the path multiplier.
-rise_from
<args> - (Optional) A list of the start points on the rising-edge path that will be affected by the multicycle path multiplier.
-fall_from
<args> - (Optional) A list of the start points on the falling-edge path that will be affected by the multicycle path multiplier.
-to
<args> - (Optional) A list of the end points on the path that will be affected by the multicycle path multiplier.
-rise_to
<args> - (Optional) A list of the end points on the rising-edge path that will be affected by the multicycle path multiplier.
-fall_to
<args> - (Optional) A list of the end points on the falling-edge path that will be affected by the multicycle path multiplier.
-through
<args> - (Optional) A list of pins, cell, or nets through which the path affected by the multicycle path multiplier travels.
-rise_through
<args> - (Optional) A list of pins, cell, or nets through which the rising-edge path affected by the multicycle path multiplier travels.
-fall_through
<args> - (Optional) Specifies the list of pins, cell, or nets through which the falling-edge path affected by the multicycle path multiplier travels.
-to
, -through
, and -from
(in their various forms) are all optional arguments, at least one -from
, -to
, or -through
argument must be specified to define a timing path for the set_multicycle_path
constraint, or an error will be returned.-quiet
- (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
-verbose
- (Optional) Temporarily override any message limits and return all messages from this command.
set_msg_config
command.<path_multiplier> - (Required) The number of clock cycles to move the setup and hold analysis analysis.
-hold
is specified, the <path_multiplier> acts on the hold relationship to restore the hold check to its original position.Examples
The following example establishes a path multiplier of 3 clock cycles for the setup check of the timing path defined by the -from/-to
options. A path multiplier of N-1, or 2 in this example, is used to decrement the hold check on the same timing path:
set_multicycle_path 3 -setup -from [get_pins data0_reg/C] \
-to [get_pins data1_reg/D]
set_multicycle_path 2 -hold -from [get_pins data0_reg/C] \
-to [get_pins data1_reg/D]