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.29.55. 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

Syntax set_multicycle_assignment [-h | -help] [-long_help] [-comment <comment> ] [-disable] [-end] [-fall] [-from <from_list> ] [-hold] [-remove] [-rise] [-setup] [-start] [-tag <data> ] [-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
-fall Option applies to falling edge
-from <from_list> List of clock names, node names, and/or assignment group 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
-rise Option applies to rising edge
-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
-tag <data> Option to tag data to this assignment
-to <to_list> List of clock names, node names, and/or assignment group 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
assignment groups 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) assignment_group "src_group" -add_member "s1"
    assignment_group "src_group" -add_member "s2"
    assignment_group "src_group" -add_member "s3"
    assignment_group "dst_group" -add_member "d1"
    assignment_group "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 assignment groups, type "assignment_group -h".

The "assignment_group" command replaces the deprecated
"timegroup" command in ::quartus::project, version 5.0.

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
assignment_group "src_group" -add_member reg1
assignment_group "src_group" -add_member reg2
set_multicycle_assignment 2 -setup -from "src_group"

## or
assignment_group "src_group" -add_member reg1
assignment_group "src_group" -add_member reg2
assignment_group "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 
assignment_group "dst_group" -add_member reg1
assignment_group "dst_group" -add_member reg2
set_multicycle_assignment 2 -setup -start -to "dst_group"

## or
assignment_group "dst_group" -add_member reg1
assignment_group "dst_group" -add_member reg2
assignment_group "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
assignment_group "src_group" -add_member src1
assignment_group "src_group" -add_member src2
assignment_group "dst_group" -add_member dst1
assignment_group "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.