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.12. get_all_instance_assignments (::quartus::project)

The following table displays information for the get_all_instance_assignments Tcl command:

Tcl Package and Version

Belongs to ::quartus::project

Syntax get_all_instance_assignments [-h | -help] [-long_help] [-entity <entity_name> ] [-fall] [-from <source> ] -name <name> [-rise] [-section_id <section id> ] [-tag <data> ] [-to <destination> ]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-entity <entity_name> Entity to which assignment belongs
-fall Option applies to falling edge
-from <source> Source of assignment (string pattern is matched using Tcl string matching)
-name <name> Assignment name (string pattern is matched using Tcl string matching)
-rise Option applies to rising edge
-section_id <section id> Section id
-tag <data> Option to tag data to this assignment
-to <destination> Destination of assignment (string pattern is matched using Tcl string matching)
Description
Returns a filtered output collection of all matching instance
assignment values. To access each element of this output 
collection, use the Tcl command "foreach_in_collection". To 
see example usage, type "foreach_in_collection -long_help".

In version 5.0 of the ::quartus::project package, two new
Tcl commands "get_all_assignments" and "get_assignment_info"
have been introduced to replace the "get_all_instance_assignments"
command. These two new commands simplify the interface to retrieve
information about Quartus Prime Settings File (.qsf) assignments.
The "get_all_instance_assignments" command is still supported 
for backward compatibility. 

The "-name" option is not case sensitive.
The "-to" and "-from" options are case sensitive.

These options can take string patterns containing special 
characters from the set "*?\[]" as values. The values are 
matched using Tcl string matching. Note that bus names are
automatically detected and do not need to be escaped. Bus
names have the following format:

<bus name>[<bus index>] or <bus name>[*]

The <bus name> portion is a string of alphanumeric characters.
The <bus index> portion is an integer greater than or equal to
zero or it can be the character "*" used for string matching.
Notice that the <bus index> is enclosed by the square
brackets "[" and "]". For example, "a[0]" and "a[*]" are
supported bus names and can be used as follows:

# To match index 0 of bus "a", type:
get_all_instance_assignments -name LOCATION -to a[0]

# To match all indices of bus "a", type:
get_all_instance_assignments -name LOCATION -to a[*]

All other uses of square brackets must be escaped if you do
not intend to use them as string patterns. For example,
to match indices 0, 1, and 2 of the bus "a", type:

get_all_instance_assignments -name LOCATION -to "a[escape_brackets \[]\[0-2\][escape_brackets \]]"

For more information about escaping square brackets, type
"escape_brackets -h".

This Tcl command reads in the instance assignments found in
the Quartus Prime Settings File (.qsf). The command filters
the assignments data found in the .qsf and outputs the 
data based on the values specified by the "-name", "-from", 
and "-to" options.

Each element of the collection is a list with the following 
format:
{ {<Section Id>} {<Source>} {<Destination>} {<Assignment name>} {<Assignment value>} {<Entity name>} {<Tag data>} }

Certain sections in the .qsf can appear more than once. 
For example, because there may be more than one clock 
used in a project, there may be more than one CLOCK section 
each containing its own set of clock assignments. To uniquely 
identify sections of this type, a <Section Id> is used. 
<Section Id> can be one of three types. It can be the same as 
the revision name, or it can be some unique name. The 
following is a list of sections requiring a <Section Id> and 
the associated <Section Id> description:

Section Id                    Description
---------------------------   ------------------------------
CHIP                          Same as revision name
LOGICLOCK_REGION              A unique name
EDA_TOOL_SETTINGS             A unique name
CLIQUE                        A unique name
BREAKPOINT                    A unique name
CLOCK                         A unique name
AUTO_INSERT_SLD_NODE_ENTITY   A unique name

If you tagged data by making assignments with the -tag option,
then the information will be displayed in the <Tag data> field.

For entity-specific assignments, use the "-entity" option to 
retrieve the assignment(s) from the specified entity. If the
"-entity" option is not specified, the value for the 
FOCUS_ENTITY_NAME assignment is used. If the FOCUS_ENTITY_NAME
value is not found, the revision name is used.
Example Usage
## Print out all the timing requirements
## using the foreach_in_collection method.
## Use wildcards to catch TSU_REQUIREMENT, TCO_REQUIREMENT,
## and others.
set asgn_col [get_all_instance_assignments -name *_REQUIREMENT]

foreach_in_collection asgn $asgn_col {

    ## Each element in the collection has the following
    ## format: { {} {<Source>} {<Destination>} {<Assignment name>} {<Assignment value>} {<Entity name>} {<Tag data>} }
    set from   [lindex $asgn 1]
    set to     [lindex $asgn 2]
    set name   [lindex $asgn 3]
    set value  [lindex $asgn 4]
    set entity [lindex $asgn 5]
    set tag    [lindex $asgn 6]

    puts "$entity: $name ($from -> $to) = $value"
}

## Get all the location assignments with
## the destination bus name "timeo".
set bus_name "timeo"
set location_asgns [get_all_instance_assignments -name LOCATION -to $bus_name[*]]
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Assignment is not an instance assignment: <string> -- it is a global assignment. Specify an instance assignment name or use the global assignment commands.
TCL_ERROR 1 ERROR: Can't find file(s) associated with assignment. Specify a different assignment name.
TCL_ERROR 1 ERROR: Can't find section information for assignment. Specify a different assignment name.
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 run Tcl command while a process is in progress: <string>. To run the command, stop the compilation or simulation; or wait for the compilation or simulation to complete.
TCL_ERROR 1 ERROR: Value <string> for the -<string> option is illegal. Specify a legal value.
TCL_ERROR 1 ERROR: Options cannot be specified together: -<string>, -<string> and -<string>. Specify only one or two of the three options.
TCL_ERROR 1 ERROR: Missing destination for assignment. Specify the destination for the assignment.
TCL_ERROR 1 ERROR: You must open a project before you can use this command.
TCL_ERROR 1 ERROR: Ignored assignment: <string>. The assignment is no longer supported.
TCL_ERROR 1 ERROR: Found two options: -<string> and -<string>. Choose one of the options.
TCL_ERROR 1 ERROR: Illegal assignment name: <string>. Specify a legal assignment name. To view the list of legal assignment names, run get_all_assignment_names.
TCL_ERROR 1 ERROR: An unknown error has occured.