set_multicycle_path - 2023.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

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

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

Categories

SDC, XDC

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.

Note: When neither -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.

Note: If neither -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.

Note: The -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.

Important: Although -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.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<path_multiplier> - (Required) The number of clock cycles to move the setup and hold analysis analysis.

Note: When -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]
Note: For more information on the relationship between the setup and hold analysis refer to the Vivado Design Suite User Guide: Using Constraints (UG903).