Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 6/20/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.1.33.30. set_multicycle_path (::quartus::sdc)

The following table displays information for the set_multicycle_path Tcl command:

Tcl Package and Version

Belongs to ::quartus::sdc

Syntax set_multicycle_path [-h | -help] [-long_help] [-end] [-fall_from <names> ] [-fall_to <names> ] [-from <names> ] [-hold] [-rise_from <names> ] [-rise_to <names> ] [-setup] [-start] [-through <names> ] [-to <names> ] <value>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-end Specifies that the multicycle is relative to the destination clock waveform (default)
-fall_from <names> Valid source clocks (string patterns are matched using Tcl string matching)
-fall_to <names> Valid destination clocks (string patterns are matched using Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string matching)
-hold Specifies that the multicycle value applies to clock hold or removal checks
-rise_from <names> Valid source clocks (string patterns are matched using Tcl string matching)
-rise_to <names> Valid destination clocks (string patterns are matched using Tcl string matching)
-setup Specifies that the multicycle value applies to clock setup or recovery checks (default)
-start Specifies that the multicycle is relative to the source clock waveform
-through <names> Valid through nodes (string patterns are matched using Tcl string matching)
-to <names> Valid destinations (string patterns are matched using Tcl string matching)
<value> Number of clock cycles
Description
Specifies a multicycle exception for a given set of paths.

Multicycles can be specified relative to the source clock (-start) or
destination clock (-end). This is useful when the source clock and
destination clock are operating at different frequencies.  For
example, if the source clock is twice as fast (half period) as the
destination clock, a -start multicycle of 2 is usually required.

Hold multicycles (-hold) are computed relative to setup multicycles
(-setup).  The value of the hold multicycle represents the number
clock edges away from the default hold multicycle. The default hold
multicycle value is 0.

The -from and -to values are collections of clocks, registers, ports,
pins, or cells in the design. If the -from or -to values are not
specified, the collection is converted automatically into [get_keepers
*].  It is worth noting that if the counterpart of the unspecified
collection is a clock collection, it is more efficient to explicitly
specify this collection as a clock collection but only if the clock
collection also generates the desired assignment.

Applying exceptions between clocks applies the exception from all
register or ports driven by the -from clock to all registers or ports
driven by the -to clock.  Also, applying exceptions between a pair of
clocks is more efficient than for specific node to node or node to
clock paths.

If pin names or collections are used, the -from value must be a clock
pin and the -to value must be any non-clock input pin to a register.
Assignments from clock pins or to and from cells applies to all
registers in the cell or driven by the clock pin.

The -through values are collections of pins or nets in the design. 
An exception applied through a node in the design applies only to 
paths through the specified node.
The Timing Analyzer allows you to specify the -through argument multiple times to
describe paths that go through multiple points. 
For instance, users can select all paths that go through node X, and then go through node Y. 
This helps you narrow down and select the specific paths that you are interested in. 

The -rise_from and -fall_from options can be used in place of the
"-from" destination nodes. The rise or fall value of the option
indicates that the "from" nodes are driven by the rising or falling
edge of the clock that feeds this node taking into consideration any
logical inversions along the clock path.  The "-from" option is the
combination of both rising and falling "from" nodes.  If the "from"
collection is a clock collection, the assignment applies to those
nodes that are driven by the respective rising or falling clock edge.

The -rise_to and -fall_to options behave similarly to the "from"
options described previously.  These assignments restrict the given
assignment to only those nodes or clocks that correspond to the
specified rise or fall value taking into consideration any logical
inversions that are along the clock path.

The values of the -from, -to, -through, and similar options are either
collections or a Tcl list of wildcards used to create collections of
appropriate types. The values used must follow standard Tcl or
Timing Analyzer-extension substitution rules. See help for the
use_timing_analyzer_style_escaping command for details.
Example Usage
create_clock -period 10.000 -name CLK [get_ports clk]
create_generated_clock -divide_by 2 -source [get_ports clk] -name CLKDIV2 [get_registers clkdiv]

# Apply a source multicycle of 2 with a hold multicycle of 1 for all
# paths from the CLK domain to the CLKDIV2 domain.
set_multicycle_path -start -setup -from [get_clocks CLK] -to [get_clocks CLKDIV2] 2
set_multicycle_path -start -hold -from [get_clocks CLK] -to [get_clocks CLKDIV2] 1

# Apply a multicycle constraint of 3 (with a default hold multicycle of 0) for a
# specific path in the design.
set_multicycle_path -end -setup -from [get_pins rega|clk] -to [get_pins regb|*] 3

# Apply a multicycle constraint of 2 to a given cell, except for the reset pin.
set_multicycle_path -end -setup -to [get_cells regb] 2
set_multicycle_path -end -setup -to [get_pins regb|aclr] 1

#Apply a multicycle constraint of 3 rising from a clock and falling to a node
set_multicycle_path -end -setup -rise_from [get_clocks CLK] -fall_to [get_pins regb|datab] 3
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Option <string> has illegal value: <string>. Specify a legal option value.
TCL_ERROR 1 ERROR: The <string> value is outside of the legal range.