set_multicycle_assignment (::quartus::project)

The following table displays information for the set_multicycle_assignment Tcl command:

Tcl Package and Version

Belongs to ::quartus::project 4.0

Syntax set_multicycle_assignment [-h | -help] [-long_help] [-comment <comment> ] [-disable] [-end] [-from <from_list> ] [-hold] [-remove] [-setup] [-start] [-to <to_list> ]
 
<path_multiplier>
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-comment <comment> Comment
-disable Option to disable multicycle assignment
-end Option to indicate that destination clock cycles should be considered for path multiplier
-from <from_list> List of clock names, node names, and/or timegroup names that represent start or source points of multicycle path, for example, {node1 node2 ...}
-hold Option to indicate that path multiplier is meant for hold
-remove Option to remove multicycle assignment
-setup Option to indicate that path multiplier is meant for setup
-start Option to indicate that source clock cycles must be considered for path multiplier
-to <to_list> List of clock names, node names, and/or timegroup names that represent end or destination points of multicycle path, for example, {node1 node2 ...}
<path_multiplier> Multicycle path multiplier
Description
Specifies that the given timing paths have multicycle setup 
or hold delays with the number of cycles specified by the 
"-path_multiplier" option. 

If neither the "-setup" nor "-hold" options are used, the 
"-setup" option is the default option. If neither the "-start" 
nor "-end" options are used, the "-end" option is the default 
option.

You must use either the "-from <from_list>" or "-to <to_list>" 
option.

Note that Quartus Prime timing analysis is optimized to use
timegroups for timing constraints instead of a list of nodes.
Of the following two methods to make multicycle assignments, 
method (1) is the optimal method.

(1) timegroup "src_group" -add_member "s1"
    timegroup "src_group" -add_member "s2"
    timegroup "src_group" -add_member "s3"
    timegroup "dst_group" -add_member "d1"
    timegroup "dst_group" -add_member "d2"
    set_multicycle_assignment -from "src_group" -to "dst_group"

(2) set_multicycle_assignment -from {s1 s2 s3} -to {d1 d2}

For more information about timegroups, type "timegroup -h".

The meaning of multicycle hold differs between the Quartus Prime 
software timing analysis and the Synopsys PrimeTime software 
timing analysis. Refer to the online Help of each software for 
more information.

Assignments created or modified by using this Tcl command are 
not saved to the Quartus Prime Settings File (.qsf) unless you
explicitly call one of the following two Tcl commands:

1) export_assignments
2) project_close (unless "-dont_export_assignments" is specified)

These two Tcl commands reside in the ::quartus::project Tcl 
package. You must save assignment changes before you run 
Quartus Prime command-line executables. Note, however, that 
the Tcl commands "execute_flow" and "execute_module" (part 
of the ::quartus::flow Tcl package) automatically call 
"export_assignments" before they run command-line executables.
Example Usage
## Multicycle "setup" from reg1 and reg2 to any destination points
timegroup "src_group" -add_member reg1
timegroup "src_group" -add_member reg2
set_multicycle_assignment 2 -setup -from "src_group"

## or
timegroup "src_group" -add_member reg1
timegroup "src_group" -add_member reg2
timegroup "dst_group" -add_member *
set_multicycle_assignment 2 -setup -from "src_group" -to "dst_group"

## Source multicycle "setup" to reg1 and reg2 from any source points 
timegroup "dst_group" -add_member reg1
timegroup "dst_group" -add_member reg2
set_multicycle_assignment 2 -setup -start -to "dst_group"

## or
timegroup "dst_group" -add_member reg1
timegroup "dst_group" -add_member reg2
timegroup "src_group" -add_member *
set_multicycle_assignment 2 -setup -start -from "src_group" -to "dst_group"

## Source multicycle "hold" from src1 to dst1 and dst2 and
## from src2 to dst1 and dst2
timegroup "src_group" -add_member src1
timegroup "src_group" -add_member src2
timegroup "dst_group" -add_member dst1
timegroup "dst_group" -add_member dst2
set_multicycle_assignment 2 -hold -from "src_group" -to "dst_group"

## Source multicycle "hold" from registers clocked by clk1
## to registers clocked by clk2
## Timegroups are useful for making assignments to
## more than one node. Timegroups are not necessary 
## for making an assignment from only one clock node  
## to another clock 
set_multicycle_assignment 2 -hold -start -from clk1 -to clk2
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is an open, active revision name.
TCL_ERROR 1 ERROR: Entity does not exist or uses illegal name characters: <string>. Specify a legal entity name.
TCL_ERROR 1 ERROR: Can't set revision: <string>. Make sure there is an open, active revision name.
TCL_ERROR 1 ERROR: Invalid path multiplier value: <string>. Specify a positive integer value.
TCL_ERROR 1 ERROR: You must open a project before you can use this command.
TCL_ERROR 1 ERROR: Found two options: -<string> and -<string>. Choose one of the options.
TCL_ERROR 1 ERROR: Revision does not exist: <string>. Specify a legal revision name using the -<string> option.