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