Ug QPP Scripting
Ug QPP Scripting
User Guide
Scripting
Contents
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
2
Contents
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
3
Contents
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
4
UG-20144 | 2021.12.13
Send Feedback
The command-line executables are completely interchangeable with the Intel Quartus
Prime GUI, allowing you to use the exact combination of tools that best suits your
needs.
Related Information
• Tcl Design Examples
• TCL Commands and Packages on page 51
You can group Intel Quartus Prime executable files into a script, batch file, or a
makefile to automate design flows. These scripting capabilities facilitate the
integration of Intel Quartus Prime software and other EDA synthesis, simulation, and
verification software. Automatic design flows can perform on multiple computers
simultaneously and easily archive and restore projects.
Command-line executables reduce the amount of memory required during each step
in the design flow. Since each executable targets only one step in the design flow, the
executables themselves are relatively compact, both in file size and the amount of
memory used during processing. This memory usage reduction improves performance,
and is particularly beneficial in design environments where heavy usage of computing
resources results in reduced memory availability.
Related Information
About Command-Line Executables
in Intel Quartus Prime Help
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel
Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any ISO
products and services at any time without notice. Intel assumes no responsibility or liability arising out of the 9001:2015
application or use of any information, product, or service described herein except as expressly agreed to in Registered
writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying
on any published information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
1. Command Line Scripting
UG-20144 | 2021.12.13
To use the Intel Quartus Prime Command-Line and Tcl API Help browser, type the
following command:
quartus_sh --qhelp
This command starts the Intel Quartus Prime Command-Line and Tcl API Help browser,
a viewer for information about the Intel Quartus Prime Command-Line executables
and Tcl API.
Use the -h option with any of the Intel Quartus Prime Command-Line executables to
get a description and list of supported options. Use the --help=<option name>
option for detailed information about each option.
Figure 1. Intel Quartus Prime Command-Line and Tcl API Help Browser
To make assignments to an individual entity you can use the Intel Quartus Prime Tcl
scripting API. On existing projects, you can also open the project in the Intel Quartus
Prime GUI, change the assignment, and close the project. The changed assignment is
updated in the .qsf. Any command-line executables that are run after this update
use the updated assignment.
Related Information
• Compilation with quartus_sh --flow on page 8
• Intel Quartus Prime Settings File (.qsf) Definition
in Intel Quartus Prime Help
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
6
1. Command Line Scripting
UG-20144 | 2021.12.13
The .qsf file contains all the project-wide and entity-level assignments and settings
for the current revision for the project. The compiler database contains the result of
the last compilation in the /db directory, and reflects the assignments at the moment
when the project was compiled. Updated assignments first appear in the compiler
database and later in the .qsf file.
Command-line options override any conflicting assignments in the .qsf file or the
compiler database files. To specify whether the .qsf or compiler database files take
precedence for any assignments not specified in the command-line, use the option --
read_settings_files.
Any assignment not specified as a command-line option or found in the .qsf file or
compiler database file is set to its default value.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
7
1. Command Line Scripting
UG-20144 | 2021.12.13
Quartus Shell
quartus_sh
Power Analyzer
EDA Netlist Writer quartus_pow
quartus_eda Assembler
quartus_asm
Use the quartus_sh executable with the --flow option to perform a complete
compilation flow with a single command. The --flow option supports the smart
recompile feature and efficiently sets command-line arguments for each executable in
the flow.
You can resume an interrupted compilation with the -resume argument of the
--flow option.
The following example runs analysis & synthesis, fitter, timing analysis, and
programming file generation with a single command:
quartus_sh --flow compile filtref
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
8
1. Command Line Scripting
UG-20144 | 2021.12.13
Related Information
Resuming a Compilation with quartus_sh --flow on page 9
You can also use the -start and -stop options of quartus_sh --flow command
to start and stop a compilation flow at specific compilation tasks.
Resuming a compilation flow also updates the Compilation Dashboard to show how the
flow is progressing.
For command syntax and example of how to use the flow resume feature, run
quartus_sh --help=flow at a command prompt.
Related Information
Using the Compilation Dashboard
Report file names contain the revision name and the short-form name of the
executable that generated the report file, in the format
<revision>.<executable>.rpt. For example, using the quartus_fit executable
to place and route a project with the revision name design_top generates a report
file named design_top.fit.rpt. Similarly, using the quartus_sta executable to
perform timing analysis on a project with the revision name fir_filter generates a
report file named fir_filter.sta.rpt.
Related Information
• Text-Format Report File (.rpt) Definition
in Intel Quartus Prime Help
• ::quartus::report
in Intel Quartus Prime Help
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
9
1. Command Line Scripting
UG-20144 | 2021.12.13
To set up a new project and apply individual constraints, such as pin location
assignments and timing requirements, you must use a Tcl script or the Intel Quartus
Prime GUI.
Command-line executables are very useful for working with existing projects, for
making common global settings, and for performing common operations. For more
flexibility in a flow, use a Tcl script. Additionally, Tcl scripts simplify passing data
between different stages of the design flow.
For example, you can create a UNIX shell script to run a third-party synthesis
software, place-and-route the design in the Intel Quartus Prime software, and
generate output netlists for other simulation software.
The example creates a project with a Tcl script and applies project constraints using
the tutorial design files in the <Intel Quartus Prime installation directory>/
qdesigns/fir_filter/ directory.
project_new filtref -overwrite
# Assign family, device, and top-level file
set_global_assignment -name FAMILY "Arria 10"
set_global_assignment -name DEVICE <Device>
set_global_assignment -name VERILOG_FILE filtref.v
# Assign pins
set_location_assignment -to clk Pin_28
set_location_assignment -to clkx2 Pin_29
set_location_assignment -to d[0] Pin_139
set_location_assignment -to d[1] Pin_140
#
project_close
Save the script in a file called setup_proj.tcl and type the commands illustrated in
the example at a command prompt to create the design, apply constraints, compile
the design, and perform fast-corner and slow-corner timing analysis. Timing analysis
results are saved in two files, filtref_sta_1.rpt and filtref_sta_2.rpt.
quartus_sh -t setup_proj.tcl
quartus_syn filtref
quartus_fit filtref
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
10
1. Command Line Scripting
UG-20144 | 2021.12.13
quartus_asm filtref
quartus_sta filtref --model=fast --export_settings=off
mv filtref_sta.rpt filtref_sta_1.rpt
quartus_sta filtref --export_settings=off
mv filtref_sta.rpt filtref_sta_2.rpt
Type the following commands to create the design, apply constraints, and compile the
design, without performing timing analysis:
quartus_sh -t setup_proj.tcl
quartus_sh --flow compile filtref
When options are not specified, the executable uses the project database values. If
not specified in the project database, the executable uses the Intel Quartus Prime
software default values.
To run this script, save this script to a file such as check_syntax.tcl and then run
the following command from a command prompt: quartus_syn -t
check_syntax.tcl.
set dir [pwd]; # set dir to current working directory
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
11
1. Command Line Scripting
UG-20144 | 2021.12.13
The --part option causes quartus_syn to target a device. To create the project and
synthesize it using the netlist optimizations described above, type the command
shown in this example at a command prompt.
quartus_syn top --source=top.edf --enable_register_retiming=on
--enable_wysiwyg_resynthesis=on --part=<part>
Use the --archive or --restore options for quartus_sh as appropriate. Type the
command shown in the example at a command prompt to archive your project.
quartus_sh --archive <project name>
The archive file is automatically named <project name>.qar. If you want to use a
different name, type the command with the -output option as shown in example the
example.
quartus_sh --archive <project name> -output <filename>
To restore a project archive, type the command shown in the example at a command
prompt.
quartus_sh --restore <archive name>
The command restores the project archive to the current directory and overwrites
existing files.
Related Information
Managing Intel Quartus Prime Projects
The example shows the commands for a DOS batch file for this example. With a DOS
batch file, you can specify the project name and the revision name once for both
commands. To create the DOS batch file, paste the following lines into a file called
update_memory.bat.
quartus_cdb --update_mif %1 --rev=%2
quartus_asm %1 --rev=%2
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
12
1. Command Line Scripting
UG-20144 | 2021.12.13
To run the batch file, type the following command at a command prompt:
update_memory.bat <project name> <revision name>
Note: For complete Intel Quartus Prime command line executable syntax and examples,
refer to Command-Line Scripting Help on page 6.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
13
1. Command Line Scripting
UG-20144 | 2021.12.13
Because the top-level entity in the project does not have the same name as the
project, you must specify the revision name for the top-level entity with the --rev
option. The --seed option specifies the seeds to use for fitting.
A seed is a parameter that affects the random initial placement of the Intel Quartus
Prime Fitter. Varying the seed can result in better performance for some designs.
After each fitting attempt, the script creates new directories for the results of each
fitting attempt and copies the complete project to the new directory so that the results
are available for viewing and debugging after the script has completed.
#!/bin/sh
ERROR_SEEDS=""
quartus_syn fir_filter --rev=filtref
# Iterate over a number of seeds
for seed in 1 2 3 4 5
do
echo "Starting fit with seed=$seed"
# Perform a fitting attempt with the specified seed
quartus_fit fir_filter --seed=$seed --rev=filtref
# If the exit-code is non-zero, the fitting attempt was
# successful, so copy the project to a new directory
if [ $? -eq 0 ]
then
mkdir ../fir_filter-seed_$seed
mkdir ../fir_filter-seed_$seed/db
cp * ../fir_filter-seed_$seed
cp db/* ../fir_filter-seed_$seed/db
else
ERROR_SEEDS="$ERROR_SEEDS $seed"
fi
done
if [ -z "$ERROR_SEEDS" ]
then
echo "Seed sweeping was successful"
exit 0
else
echo "There were errors with the following seed(s)"
echo $ERROR_SEEDS
exit 1
fi
Tip: Use Design Space Explorer II (DSE) included with the Intel Quartus Prime software
script (by typing quartus_dse at a command prompt) to improve design
performance by performing automated seed sweeping.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
14
1. Command Line Scripting
UG-20144 | 2021.12.13
Tip: The QFlow script is located in the <Intel Quartus Prime directory>/
common/tcl/apps/qflow/ directory.
--exclude_sub_partitions
For no partition argument, the software writes the entire design out to a single file.
The partition argument takes a name of a partition in the design. The sub-option is a
flag only and takes no arguments.
When you specify the --exclude_sub_partitions flag, the software only writes
out the contents of the selected partition. Sub-partitions are instantiated as separate
modules. Each call of quartus_eda writes one netlist. If you write out the design one
partition at a time, excluding sub partitions, they need to call quartus_eda for each
partition in the design including the root.
root_partition
You can specify the root_partition flag to get the full design. You can provide the
partition option to write to a netlist file (.vo or .vho file). The file contains all the
logic and atoms corresponding the contents of the specified partition along with its
sub-partition.
--rename
Additionally, you have the option to rename a module name in the generated netlist
file using the --rename option. By default, the software uses the partition name as
the module name in the netlist file. This option is only valid when you use the partition
option. You can elect to rename any module using --module_name=abc=xyz --
module_name=def=prq. The generated file names format is: <revision>.<module
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
15
1. Command Line Scripting
UG-20144 | 2021.12.13
or partition name>.<vo or vho> By default, the software writes the netlist file
to the simulation/<3rd party simulation tool> directory (eg simulation/
modelsim), unless you specify an output_directory (using a command line option
or .qsf assignment).
2020.12.14 20.4 • Updated "Create Device Configuration Files" to include references to the
cvp command option and the quartus_pfg command.
2015.05.04 15.0.0 Remove descriptions of makefile support that was removed from software
in 14.0.
July 2010 10.0.0 Updated script examples to use quartus_sta instead of quartus_tan, and
other minor updates throughout document.
November 2009 9.1.0 Updated Table 2–1 to add quartus_jli and quartus_jbcc executables and
descriptions, and other minor updates throughout document.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
16
1. Command Line Scripting
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
17
UG-20144 | 2021.12.13
Send Feedback
2. Tcl Scripting
You can use Tcl scripts, as an alternative to the GUI, to control the function and
operation of Intel Quartus Prime software.
For example, you can use Tcl scripts to perform the following tasks:
• Manage Intel Quartus Prime projects
• Specify assignments and constraints
• Compile your design
• Perform timing analysis
• Generate and view reports about your project
You can also use Tcl scripts to migrate a project or project settings. For example, when
working with different projects targeting the same prototype or development board,
you can define a Tcl script to automate pin assignments for each project, rather than
entering the assignments individually in the GUI. You can automatically generate a Tcl
script based on current project assignments, which simplifies transferring the
assignments to another project.
The Intel Quartus Prime software Tcl commands follow familiar EDA industry Tcl
application programming interface (API) standards for command-line options. If you
encounter an error with a command argument, the Tcl interpreter includes help
information showing correct usage.
This chapter includes sample Tcl scripts for automating tasks in the Intel Quartus
Prime software, along with a complete reference of all supported Tcl commands and
arguments. You can modify the example scripts for use with your own designs. Refer
to Design Examples section of the Support area on the Intel website.
Related Information
• Tcl Design Examples
• TCL Commands and Packages on page 51
With Tcl, you can work seamlessly across most development platforms. Synopsys*,
Mentor Graphics*, and Intel software products support the Tcl language.
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel
Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any ISO
products and services at any time without notice. Intel assumes no responsibility or liability arising out of the 9001:2015
application or use of any information, product, or service described herein except as expressly agreed to in Registered
writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying
on any published information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
2. Tcl Scripting
UG-20144 | 2021.12.13
By combining Tcl commands and Intel Quartus Prime API functions, you can create
your own procedures and automate your design flow. Run Intel Quartus Prime
software in batch mode, or execute individual Tcl commands interactively in the Intel
Quartus Prime Tcl shell.
Intel Quartus Prime software supports Tcl/Tk version 8.5, supplied by the Tcl
DeveloperXchange.
Note: Some shell commands such as cd, ls, and others can be run in the Tcl Console
window, with the Tcl exec command. However, for best results, run shell commands
and Intel Quartus Prime executables from a system command prompt outside of the
Intel Quartus Prime software GUI.
Tcl messages appear in the System tab (Messages window). Errors and messages
written to stdout and stderr also are shown in the Intel Quartus Prime Tcl Console
window.
Note: Refer to TCL Commands and Packages on page 51 for a comprehensive reference of
all Intel Quartus Prime Tcl packages and commands.
chip_planner Identify and modify resource usage and routing with the Chip Planner.
design Manipulate project databases, including the assignments database, to enable the
creation of instance assignments without modifying the .qsf file.
device Get device and family information from the device database.
dni_sdc Set false path, input delay, or output delay SDC constraints.
fif Contains the set of Tcl functions for using the Fault Injection File (FIF) Driver
flow Compile a project, run command-line executables, and other compilation flows.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
19
2. Tcl Scripting
UG-20144 | 2021.12.13
insystem_source_probe Interact with the In-System Sources and Probes tool in an Intel device.
logic_analyzer_interface Query and modify the Logic Analyzer Interface output pin state.
misc Perform miscellaneous tasks such as enabling natural bus naming, package loading,
and message posting.
project Create and manage projects and revisions, make any project assignments including
timing assignments.
sta Contains the set of Tcl functions for obtaining advanced information from the Timing
Analyzer.
Run your scripts with executables that include the packages you use in the scripts. For
example, to use commands in the sdc_ext package, you must use the quartus_sta
executable because quartus_sta is the only executable with support for the
sdc_ext package.
The following command prints lists of the packages loaded or available to load for an
executable, to the console:
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
20
2. Tcl Scripting
UG-20144 | 2021.12.13
For example, type the following command to list the packages loaded or available to
load by the quartus_fit executable:
quartus_fit --tcl_eval help
Related Information
• Tcl Design Examples
• TCL Commands and Packages on page 51
• This command opens the Intel Quartus Prime Command-Line and Tcl API help
browser, which documents all commands and options in the Intel Quartus Prime
Tcl API. At a system command prompt, access the Intel Quartus Prime Tcl API Help
by typing:
quartus_sh --qhelp
• The Tcl API Help can be accessed from the Tcl console as well. At a Tcl prompt,
type
help
to access the help information. The output is:
The Tcl console provides help options that display specific information:
Table 7. Help Options Available in the Intel Quartus Prime Tcl Environment
Help Command Description
help -tcl Explains how to load Tcl packages and access command-line
help.
help -pkg <package_name -[-version <version number>] Displays help commands of the Intel Quartus Prime package
that you specify, including the list of available Tcl
commands.
• If you do not specify -version, the Intel Quartus Prime
software loads the latest version of the package.
• If the package is not loaded, the Intel Quartus Prime
software displays the help for the latest version of the
package.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
21
2. Tcl Scripting
UG-20144 | 2021.12.13
Examples:
package require ::quartus::<package name>[<version>] Loads a specific version of an Intel Quartus Prime Tcl
package. If you do not specify -version, the Intel Quartus
Prime software loads the latest version of the package.
Example:
load_package <package name> [-version <version Allows you to alternate between different versions of the
number>] same package.
Example:
help -cmd <command_name> Displays the complete help text for an Intel Quartus Prime
-[-version <version>] Tcl command. If you do not specify -version, the Intel
Quartus Prime software loads the latest version of the
or package.
<command_name> -long_help Examples:
project_open -long_help
help -quartus To view help on the predefined global Tcl array that contains
project information and information about the Intel Quartus
Prime executable that is currently running.
quartus_sh --qhelp Launches the Tk viewer for Intel Quartus Prime command-
line help and display help for the command-line executables
and Tcl API packages.
"TimeQuestInfo"
Tcl array that contains delay model information and speed
grade information of a Timing Analyzer design that is
currently running.
The Tcl API help is also available in Intel Quartus Prime online help. Search for the
command or package name to find details about that command or package.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
22
2. Tcl Scripting
UG-20144 | 2021.12.13
--script=<script file> [<script args>] Run the specified Tcl script with optional arguments.
-t <script file> [<script args>] Run the specified Tcl script with optional arguments. The -t option is the
short form of the --script option.
-s Open the executable in the interactive Tcl shell mode. The -s option is the
short form of the --shell option.
--tcl_eval <tcl command> Evaluate the remaining command-line arguments as Tcl commands. For
example, the following command displays help for the project package:
quartus_sh --tcl_eval help -pkg project
Running an executable with the -t option runs the specified Tcl script. You can also
specify arguments to the script. Access the arguments through the argv variable, or
use a package such as cmdline, which supports arguments of the following form:
For example, to run a script called myscript.tcl with one argument, Stratix, type
the following command at a system command prompt:
quartus_sh -t myscript.tcl Stratix
Running an executable with the -s option starts an interactive Tcl shell. For example,
to open the Intel Quartus Prime Timing Analyzer executable in interactive shell mode,
type:
quartus_sta -s
Commands you type in the Tcl shell are interpreted when you press Enter. To run a Tcl
script in the interactive shell type:
source <script name>
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
23
2. Tcl Scripting
UG-20144 | 2021.12.13
For example, the following command runs the Tcl command that prints out the
commands available in the project package.
quartus_sh --tcl_eval help -pkg project
Typically, EDA tools include their own script interpreters that extend core language
functionality with tool-specific commands. For example, the Intel Quartus Prime Tcl
interpreter supports all core Tcl commands, and adds numerous commands specific to
the Intel Quartus Prime software. You can include commands in one Tcl script to run
another script, which allows you to combine or chain together scripts to control
different tools. Because scripts for different tools must be executed with different Tcl
interpreters, it is difficult to pass information between the scripts unless one script
writes information into a file and another script reads it.
Within the Intel Quartus Prime software, you can perform many different operations in
a design flow (such as synthesis, fitting, and timing analysis) from a single script,
making it easy to maintain global state information and pass data between the
operations. However, there are some limitations on the operations you can perform in
a single script due to the various packages supported by each executable.
There are no limitations on running flows from any executable. Flows include
operations found in
Processing ➤ Start in the Intel Quartus Prime GUI, and are also documented as
options for the execute_flow Tcl command. If you can make settings in the Intel
Quartus Prime software and run a flow to get your desired result, you can make the
same settings and run the same flow in a Tcl script.
Click Project ➤ Generate Tcl File for Project to automatically generate a .tcl file
containing your assignments. You can source this file to recreate your project, and you
can add other commands to this file, such as commands for compiling the design. This
file is a good starting point to learn about project management and assignment
commands.
To commit the assignments you create or modify to the .qsf file, you use the
export_assignments or project_close commands. However, when you run the
execute_flow command, Intel Quartus Prime software automatically commits the
assignment changes to the .qsf file. To prevent this behavior, specify the -
dont_export_assignments logic option.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
24
2. Tcl Scripting
UG-20144 | 2021.12.13
Related Information
• Intel Quartus Prime Pro Edition Settings File Reference Manual
• Interactive Shell Mode on page 23
• Constraining Designs
Use the flow package instead of system calls to run Intel Quartus Prime executables
from scripts or from the Intel Quartus Prime Tcl Console.
2.4.3. Reporting
You can extract information from the Compilation Report to evaluate results. The Intel
Quartus Prime Tcl API provides easy access to report data so you do not have to write
scripts to parse the text report files.
If you know the exact report cell or cells you want to access, use the
get_report_panel_data command and specify the row and column names (or x
and y coordinates) and the name of the appropriate report panel. You can often
search for data in a report panel. To do this, use a loop that reads the report one row
at a time with the get_report_panel_row command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
25
2. Tcl Scripting
UG-20144 | 2021.12.13
Column headings in report panels are in row 0. If you use a loop that reads the report
one row at a time, start with row 1 to skip column headings. The
get_number_of_rows command returns the number of rows in the report panel,
including the column heading row. Since the number of rows includes the column
heading row, continue your loop if the loop index is less than the number of rows.
Report panels are hierarchically arranged and each level of hierarchy is denoted by the
string “||“ in the panel name. For example, the name of the Fitter Settings report
panel is Fitter||Fitter Settings because it is in the Fitter folder. Panels at
the highest hierarchy level do not use the “||” string. For example, the Flow Settings
report panel is named Flow Settings.
The following Tcl code prints a list of all report panel names in your project. You can
run this code with any executable that includes support for the report package.
You can create a Comma Separated Value (.csv) file from any Intel Quartus Prime
report to open with a spreadsheet editor.
The following Tcl code shows a simple way to create a .csv file with data from the
Fitter panel in a report.
You can modify the script to use command-line arguments to pass in the name of the
project, report panel, and output file to use. You can run this script example with any
executable that supports the report package.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
26
2. Tcl Scripting
UG-20144 | 2021.12.13
The Intel Quartus Prime software includes comprehensive Tcl APIs and SDC extensions
for the Timing Analyzer in the sta, and sdc_ext packages. The Intel Quartus Prime
software also includes a tdc package that obtains information from the Timing
Analyzer.
Related Information
Intel Quartus Prime Pro Edition Settings File Reference Manual
The following three global assignments control when a script is run automatically:
• PRE_FLOW_SCRIPT_FILE —before a flow starts
• POST_MODULE_SCRIPT_FILE —after a module finishes
• POST_FLOW_SCRIPT_FILE —after a flow finishes
A module is another term for an Intel Quartus Prime executable that performs one
step in a flow. For example, two modules are Analysis and Synthesis (quartus_syn),
and timing analysis (quartus_sta).
A flow is a series of modules that the Intel Quartus Prime software runs with
predefined options. For example, compiling a design is a flow that typically consists of
the following steps (performed by the indicated module):
1. Analysis and Synthesis (quartus_syn)
2. Fitter (quartus_fit)
3. Assembler (quartus_asm)
4. Timing Analyzer (quartus_sta)
Other flows are described in the help for the execute_flow Tcl command. In
addition, many commands in the Processing menu of the Intel Quartus Prime GUI
correspond to this design flow.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
27
2. Tcl Scripting
UG-20144 | 2021.12.13
The first argument passed in the argv variable (or quartus(args) variable) is the
name of the flow or module being executed, depending on the assignment you use.
The second argument is the name of the project and the third argument is the name
of the revision.
The last process, current project, and current revision are passed to the script by the
Intel Quartus Prime software and can be accessed by the following commands:
set process [lindex $quartus(args) 0]
set project [lindex $quartus(args) 1]
set revision [lindex $quartus(args) 2]
When you compile your project, the PRE_FLOW_SCRIPT_FILE assignment causes the
following command to be run before compilation begins:
Next, the Intel Quartus Prime software starts compilation with analysis and synthesis,
performed by the quartus_syn executable. After the Analysis and Synthesis finishes,
the POST_MODULE_SCRIPT_FILE assignment causes the following command to run:
Then, the Intel Quartus Prime software continues compilation with the Fitter,
performed by the quartus_fit executable. After the Fitter finishes, the
POST_MODULE_SCRIPT_FILE assignment runs the following command:
Corresponding commands are run after the other stages of the compilation. When the
compilation is over, the POST_FLOW_SCRIPT_FILE assignment runs the following
command:
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
28
2. Tcl Scripting
UG-20144 | 2021.12.13
For example, if you want a script to run only after timing analysis, use a conditional
test like the following example. It checks the flow or module name passed as the first
argument to the script and executes code when the module is quartus_sta.
Related Information
• The post_message Command on page 40
• Automating Script Execution on page 27
The Intel Quartus Prime software defaults to natural bus naming. You can turn off
natural bus naming with the disable_natural_bus_naming command. For more
information about natural bus naming, type the following at an Intel Quartus Prime Tcl
prompt:
enable_natural_bus_naming -h
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
29
2. Tcl Scripting
UG-20144 | 2021.12.13
You can use any of the following abbreviations of the -revision option:
• -r
• -re
• -rev
• -revi
• -revis
• -revisio
You can use an extremely short option such as -r because in the case of the
project_open command no other option starts with the letter r. However, the
report_timing command includes the options -recovery and -removal. You
cannot use -r or -re to shorten either of those options, because the abbreviation is
not unique.
There are two Intel Quartus Prime Tcl commands for working with collections,
foreach_in_collection and get_collection_size. Use the set command to
assign a collection ID to a variable.
foreach_in_collection Example
set all_instance_assignments [get_all_instance_assignments -name *]
foreach_in_collection asgn $all_instance_assignments {
# Information about each assignment is
# returned in a list. For information
# about the list elements, refer to Help
# for the get-all-instance-assignments command.
set to [lindex $asgn 2]
set name [lindex $asgn 3]
set value [lindex $asgn 4]
puts "Assignment to $to: $name = $value"
}
Related Information
foreach_in_collection (::quartus::misc)
In Intel Quartus Prime Help
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
30
2. Tcl Scripting
UG-20144 | 2021.12.13
get_collection_size Example
set all_global_assignments [get_all_global_assignments -name *]
set num_global_assignments [get_collection_size $all_global_assignments]
puts "There are $num_global_assignments global assignments in your project"
A complete set of Node Finder Tcl commands that support the equivalent Node Finder
filtering options is available for use in the scripted design flow environment.
The filtering options include the following default filters that appear in the filter combo
box in the Node Finder:
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
31
2. Tcl Scripting
UG-20144 | 2021.12.13
The following Tcl command demonstrates the use of the Design Entry (all
names) filtering option:
set name_ids_col [get_names -filter * -node_type all \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: assigned filtering
option:
set name_ids_col [get_names -filter * -node_type assigned \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: unassigned filtering
option:
set name_ids_col [get_names -filter * -node_type unassigned \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
32
2. Tcl Scripting
UG-20144 | 2021.12.13
The following Tcl command demonstrates the use of the Pins: input filtering
option:
set name_ids_col [get_names -filter * -node_type input \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: output filtering
option:
set name_ids_col [get_names -filter * -node_type output \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: bidirectional
filtering option:
set name_ids_col [get_names -filter * -node_type bidir \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
33
2. Tcl Scripting
UG-20144 | 2021.12.13
The following Tcl command demonstrates the use of the Pins: virtual filtering
option:
set name_ids_col [get_names -filter * -node_type virtual \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: all filtering option:
set name_ids_col [get_names -filter * -node_type \
pin -observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Pins: all & Registers:
post-fitting filtering option:
set name_ids_col [get_names -filter * -node_type \
all_reg -observable_type post_fitter]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type post_fitter \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
34
2. Tcl Scripting
UG-20144 | 2021.12.13
Note: When you run this filter before running the Fitter, a "No nodes available. Run Fitter."
message displays.
The following Tcl command demonstrates the use of the Ports: partition filtering
option:
set name_ids_col [get_names -filter * -node_type partition \
-observable_type post_fitter]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type post_fitter \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Entity instance: pre-
synthesis filtering option:
set name_ids_col [get_names -filter * -node_type hierarchy \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Registers: pre-
synthesis filtering option:
set name_ids_col [get_names -filter * -node_type reg \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type pre_synthesis \
$name_id]
append name ","
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
35
2. Tcl Scripting
UG-20144 | 2021.12.13
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Registers: post-fitting
filtering option:
set name_ids_col [get_names -filter * -node_type reg \
-observable_type post_fitter]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type post_fitter \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Post-Synthesis filtering
option:
set name_ids_col [get_names -filter * -node_type all \
-observable_type post_synthesis]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type post_synthesis \
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Post-Compilation filtering
option:
set name_ids_col [get_names -filter * -node_type all \
-observable_type post_fitter]
foreach_in_collection name_id $name_ids_col {
set name [get_name_info -info full_path -observable_type post_fitter \
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
36
2. Tcl Scripting
UG-20144 | 2021.12.13
$name_id]
append name ","
append name [get_name_info -info node_type $name_id]
puts $name
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Signal Tap: pre-
synthesis filtering option:
set name_ids_col [get_names -filter * -node_type all \
-observable_type pre_synthesis]
foreach_in_collection name_id $name_ids_col {
set is_signaltap [get_name_info -info signaltapii -observable_type \
pre_synthesis $name_id]
if {$is_signaltap == 1} {
set name [get_name_info -use_cached_database -info full_path \
-observable_type pre_synthesis $name_id]
append name ","
append name [get_name_info -info node_type -observable_type \
pre_synthesis $name_id]
puts $name
}
}
For more information about the get_names command, refer to The get_names
Command on page 38.
The following Tcl command demonstrates the use of the Signal Tap: post-
fitting filtering option:
set name_ids_col [get_names -filter * -node_type all \
-observable_type post_fitter]
foreach_in_collection name_id $name_ids_col {
set is_signaltap [get_name_info -info signaltapii -observable_type \
post_fitter $name_id]
if {$is_signaltap == 1} {
set name [get_name_info -use_cached_database -info full_path \
-observable_type post_fitter $name_id]
append name ","
append name [get_name_info -info node_type -observable_type \
pre_synthesis $name_id]
puts $name
}
}
For more information about the get_names command, refer to The get_names
Command on page 38.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
37
2. Tcl Scripting
UG-20144 | 2021.12.13
To access each element of the output collection, use the Tcl command
foreach_in_collection. For get_names or foreach_in_collection command
example, type get_names -long_help or foreach_in_collection -
long_help.
• If the -node_type option is not specified, the default value is all.
• If the -observable_type option is not specified, the default value is all.
• The node type pin includes input, output, bidir, assigned, unassigned,
virtual, and pin.
• The node type qsf include names from the .qsf settings file.
• The node type all includes all node types.
• The node type all_reg includes all node types and registers post-fitting.
Arguments
-long help Displays a long help with examples and possible return
values.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
38
2. Tcl Scripting
UG-20144 | 2021.12.13
Argument Description
-filter<wildcard> Specifies the node's full path name and wildcard characters.
Return Values
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is an open, active revision
name.
TCL_ERROR 1 ERROR: Get names cannot return <string> because the name was found in a partition
that's not the root partition. Refine your get_names search pattern to exclude child
partitions.
TCL_ERROR 1 ERROR: Compiler database does not exist for revision name: <string>. At the
minimum, run Analysis & Synthesis with the specified revision name before using this
Tcl command.
TCL_ERROR 1 ERROR: Illegal node type: <string>. Specify "all", "comb", "reg", "pin", "hierarchy", or
"bus".
TCL_ERROR 1 ERROR: You must open a project before you can use this command.
Example Use
# Search for a single post-Fitter pin with the name accel and make assignments
set accel_name_id [get_names -filter accel -node_type pin -observable_type
post_fitter]
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
39
2. Tcl Scripting
UG-20144 | 2021.12.13
If you do not specify a type, Intel Quartus Prime software defaults to info.
With the Intel Quartus Prime software in Windows, you can color code messages
displayed at the system command prompt with the post_message command. Add
the following line to your quartus2.ini file:
DISPLAY_COMMAND_LINE_MESSAGES_IN_COLOR = on
The following Tcl example prints all the arguments in the quartus(args) variable:
set i 0
foreach arg $quartus(args) {
puts "The value at index $i is $arg"
incr i
}
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
40
2. Tcl Scripting
UG-20144 | 2021.12.13
If you copy the script in the previous example to a file named print_args.tcl, it
displays the following output when you type the following at a command prompt.
quartus_sh -t print_args.tcl my_project 100MHz
The value at index 0 is my_project
The value at index 1 is 100MHz
cmdline Package
package require cmdline
variable ::argv0 $::quartus(args)
set options {
{ "project.arg" "" "Project name" }
{ "frequency.arg" "" "Frequency" }
}
set usage "You need to specify options and values"
array set optshash [::cmdline::getoptions ::argv $options $usage]
puts "The project name is $optshash(project)"
puts "The frequency is $optshash(frequency)"
If you save those commands in a Tcl script called print_cmd_args.tcl you see the
following output when you type the following command at a command prompt.
Virtually all Intel Quartus Prime Tcl scripts must open a project. You can open a
project, and you can optionally specify a revision name with code like the following
example. The example checks whether the specified project exists. If it does, the
example opens the current revision, or the revision you specify.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
41
2. Tcl Scripting
UG-20144 | 2021.12.13
} else {
puts "Project $optshash(project) does not exist"
exit 1
}
# The rest of your script goes here
If you do not require this flexibility or error checking, you can use just the
project_open command.
help -quartus
2.7. The Intel Quartus Prime Tcl Shell in Interactive Mode Example
This section presents how to make project assignments and then compile the finite
impulse response (FIR) filter tutorial project with the quartus_sh interactive shell.
This example assumes you already have the fir_filter tutorial design files in a
project directory.
1. To run the interactive Tcl shell, type the following at the system command prompt:
quartus_sh -s
Note: • If the project file and project name are the same, the Intel Quartus
Prime software gives the revision the same name as the project.
• If a .qpf file for this project already exists, the Intel Quartus Prime
software will display an error stating that the project already exists.
Because the revision named filtref matches the top-level file, all design files
are automatically picked up from the hierarchy tree.
3. Set a global assignment for the device:
To learn more about assignment names that you can use with the -name option,
refer to Intel Quartus Prime Help.
Note: For assignment values that contain spaces, enclose the value in quotation
marks.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
42
2. Tcl Scripting
UG-20144 | 2021.12.13
load_package flow
It returns:
1.1
5. To perform a full compilation of the FIR filter design, use the execute_flow
command with the -compile option:
execute_flow -compile
This command compiles the FIR filter tutorial project, exporting the project
assignments and running quartus_syn, quartus_fit, quartus_asm, and
quartus_sta. This sequence of events is the same as selecting Processing ➤
Start Compilation in the Intel Quartus Prime GUI.
6. When you are finished with a project, close it with the project_close
command.
7. To exit the interactive Tcl shell, type exit at a Tcl prompt.
To include other directories in the path searched by the tclsh shell, set the
QUARTUS_INIT_PATH environment variable before running the tclsh shell. Directories
in the QUARTUS_INIT_PATH environment variable are searched by the tclsh shell
when you execute a system command.
Tcl commands are executed immediately as they are typed in an interactive Tcl shell.
You can also create scripts (including the examples in this chapter) in files and run
them with the Intel Quartus Prime executables or with the tclsh shell.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
43
2. Tcl Scripting
UG-20144 | 2021.12.13
Use double quotation marks to group the words hello and world as one argument.
Double quotation marks allow substitutions to occur in the group. Substitutions can be
simple variable substitutions, or the result of running a nested command. Use curly
braces {} for grouping when you want to prevent substitutions.
2.9.2. Variables
Assign a value to a variable with the set command. You do not have to declare a
variable before using it. Tcl variable names are case-sensitive.
set a 1
To access the contents of a variable, use a dollar sign (“$”) before the variable name.
The following example prints "Hello world" in a different way.
set a Hello
set b world
puts "$a $b"
2.9.3. Substitutions
Tcl performs three types of substitution:
puts "This is a\
$ special character and line continuation"
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
44
2. Tcl Scripting
UG-20144 | 2021.12.13
2.9.4. Arithmetic
Use the expr command to perform arithmetic calculations. Use curly braces (“{ }”)
to group the arguments of this command for greater efficiency and numeric precision.
set a 5
set b [expr { $a + sqrt(2) }]
The Intel Quartus Prime software supports all standard Tcl boolean and arithmetic
operators, such as && (AND), || (OR), ! (NOT), and comparison operators such as <
(less than), > (greater than), and == (equal to).
2.9.5. Lists
A Tcl list is a series of values. Supported list operations include creating lists,
appending lists, extracting list elements, computing the length of a list, sorting a list,
and more.
set a { 1 2 3 }
You can use the lindex command to extract information at a specific index in a list.
Indexes are zero-based. You can use the index end to specify the last element in the
list, or the index end-<n> to count from the end of the list. For example, to print the
second element (at index 1) in the list stored in a use the following code.
puts [lindex $a 1]
The lappend command appends elements to a list. If a list does not already exist, the
list you specify is created. The list variable name is not specified with a dollar sign
(“$”).
lappend a 4 5 6
2.9.6. Arrays
Arrays are similar to lists except that they use a string-based index. Tcl arrays are
implemented as hash tables. You can create arrays by setting each element
individually or with the array set command.
To set an element with an index of Mon to a value of Monday in an array called days,
use the following command:
set days(Mon) Monday
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
45
2. Tcl Scripting
UG-20144 | 2021.12.13
The array set command requires a list of index/value pairs. This example sets the
array called days:
array set days { Sun Sunday Mon Monday Tue Tuesday\
Wed Wednesday Thu Thursday Fri Friday Sat Saturday }
Use the array names command to get a list of all the indexes in a particular array.
The index values are not returned in any specified order. The following example is one
way to iterate over all the values in an array.
foreach day [array names days] {
puts "The abbreviation $day corresponds to the day name $days($day)"
}
Arrays are a very flexible way of storing information in a Tcl script and are a good way
to build complex data structures.
If-Then-Else Structure
The following example uses a for loop to print each element in a list.
For Loop
set a { 1 2 3 }
for { set i 0 } { $i < [llength $a] } { incr i } {
puts "The list element at index $i is [lindex $a $i]"
}
The following example uses a foreach loop to print each element in a list.
foreach Loop
set a { 1 2 3 }
foreach element $a {
puts "The list element is $element"
}
The following example uses a while loop to print each element in a list.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
46
2. Tcl Scripting
UG-20144 | 2021.12.13
while Loop
set a { 1 2 3 }
set i 0
while { $i < [llength $a] } { puts "The list element at index $i is [lindex $a
$i]"
incr i
}
You do not have to use the expr command in boolean expressions in control structure
commands because they invoke the expr command automatically.
2.9.8. Procedures
Use the proc command to define a Tcl procedure (known as a subroutine or function
in other scripting and programming languages). The scope of variables in a procedure
is local to the procedure. If the procedure returns a value, use the return command
to return the value from the procedure. The following example defines a procedure
that multiplies two numbers and returns the result.
Simple Procedure
proc multiply { x y } {
set product [expr { $x * $y }]
return $product
}
The following example shows how to use the multiply procedure in your code. You
must define a procedure before your script calls it.
Using a Procedure
proc multiply { x y } {
set product [expr { $x * $y }]
return $product
}
set a 1
set b 2
puts [multiply $a $b]
Define procedures near the beginning of a script. If you want to access global
variables in a procedure, use the global command in each procedure that uses a
global variable.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
47
2. Tcl Scripting
UG-20144 | 2021.12.13
To open a file, use the open command; to close a file, use the close command.
When you open a file, specify its name and the mode in which to open it. If you do not
specify a mode, Tcl defaults to read mode. To write to a file, specify w for write mode.
Tcl supports other modes, including appending to existing files and reading from and
writing to the same file.
The open command returns a file handle to use for read or write access. You can use
the puts command to write to a file by specifying a file handle.
Write to a File
set output [open myfile.txt w]
puts $output "This text is written to the file."
close $output
You can read a file one line at a time with the gets command. The following example
uses the gets command to read each line of the file and then prints it out with its line
number.
Tcl uses the hash or pound character (#) to begin comments. The # character must
begin a comment. If you prefer to include comments on the same line as a command,
be sure to terminate the command with a semicolon before the # character. The
following example is a valid line of code that includes a set command and a
comment.
set a 1;# Initializes a
Without the semicolon, the command is invalid because the set command does not
terminate until the new line after the comment.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
48
2. Tcl Scripting
UG-20144 | 2021.12.13
The Tcl interpreter counts curly braces inside comments, which can lead to errors that
are difficult to track down. The following example causes an error because of
unbalanced curly braces.
# if { $x > 0 } {
if { $y > 0 } {
# code here
}
• Brent B. Welch and Ken Jones, and Jeffery Hobbs, Practical Programming in Tcl
and Tk (Upper Saddle River: Prentice Hall, 2003)
• John Ousterhout and Ken Jones, Tcl and the Tk Toolkit (Boston: Addison-Wesley
Professional, 2009)
• Mark Harrison and Michael McLennan, Effective Tcl/Tk Programming: Writing
Better Programs in Tcl and Tk (Boston: Addison-Wesley Professional, 1997)
Related Information
www.tcl.tk
Tcl Developer Xchange
2020.12.14 20.4 • Revised "Tcl Scripting" topic to include link to new "Tcl Commands and
Packages" reference.
• Revised "Tcl Packages" topic for latest supported packages.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
49
2. Tcl Scripting
UG-20144 | 2021.12.13
November 2008 8.1.0 Changed to 8½” × 11” page size. No change to content.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
50
UG-20144 | 2021.12.13
Send Feedback
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel
Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any ISO
products and services at any time without notice. Intel assumes no responsibility or liability arising out of the 9001:2015
application or use of any information, product, or service described herein except as expressly agreed to in Registered
writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying
on any published information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
52
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
53
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
54
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
55
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
56
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
57
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
58
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
59
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
60
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
61
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
62
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
63
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
64
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
65
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.1. ::quartus::backannotate
The following table displays information for the ::quartus::backannotate Tcl
package:
Tcl Package and Version ::quartus::backannotate 1.1
Description This package contains the set of Tcl functions for back-annotating assignments for a
project.
qpro
quartus
quartus_cdb
Description Returns an output collection of back-annotation assignments. Each element of the collection is a list
with the following format: { {<Source>} {<Destination>} {<Assignment name>} {<Assignment
value>} {<Entity name>} }
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
66
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <source name> Name (or wildcard expression) of the source node to be
back-annotated
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
67
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-no_dont_touch Option not to set the don't_touch flag for each back-
annotated node
-path_exclude <path_exclude Option to exclude the specified node from the path filter
name>
-to <destination name> Name (or wildcard expression) of the destination node to be
back-annotated
Description Back-annotates a LogicLock region and its contents. When you use the "-routing" option, you must
use the "-lock" and "-no_demote_lab" options, without the "-no_contents" option, or use the"-
remove_assignments" option. The "-remove_assignments" option removes all matching region
contents. When you use the "-remove_assignments" option, the demotion options, "-no_contents"
and "-lock", are not applicable. The "-resource_filter" option allows you to back-annotate only specific
resource types on the device. For example: logiclock_back_annotate -resource_filter
"COMBINATORIAL" This command back-annotates all combinatorial nodes in the design. The complete
set of options is: COMBINATORIAL combinatorial nodes REGISTER registered nodes MEGA M-RAMs
MEDIUM M4K memory blocks SMALL M512 memory blocks IO I/O elements MAC DSP blocks Intel
recommends that you use a Verilog Quartus(R) Mapping File (.vqm) as the source. When any of the
advanced netlist optimizations are enabled, it is possible for the Fitter to create and rename nodes in
the design during a place and route operation. Back annotation requires that on subsequent
compilations the node names in the netlist match those in the constraint file. Write out a VQM netlist
and create a new project using that netlist as its source. Copy all of the existing constraint files into
the new project directory and remove all the design files except the new .vqm by using the Add/
Remove Files in a Project command (Project menu) in the Quartus Prime GUI. The Quartus Prime
software will create a root region if you back-annotate nodes that are not members of a LogicLock
region. The root region is device-size and locked. You can make assignments to the root region but
you cannot delete it or modify its size or location.
Example Usage
# Open the project "example_project"
project_open example_project
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
68
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.2. ::quartus::bpps
The following table displays information for the ::quartus::bpps Tcl package:
Tcl Package and Version ::quartus::bpps 1.0
Description This package provides non-backend support for pin-planner mode in Interface Planner.
qacv
qppl
qpro
quartus
quartus_bpps
quartus_da
quartus_drc
quartus_pdp
quartus_pow
quartus_sta
quartus_staw
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
69
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, applies all changes to constraints and reloads them into Interface Planner. After the
platform has been updated with the constraints, placement operations can be performed. In pin
planner mode, loads the QSF constraints related to pin assignments.
blueprint::initialize
bpps::update_plan
blueprint::shutdown
project_close
The following table displays information for the bpps::check_plan Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, checks the legality of the current plan In pin planner mode, this will be a stub.
Assignments are checked real time, no backend engine to check legality of anything.
blueprint::initialize
bpps::update_plan
bpps::check_plan
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
70
3. TCL Commands and Packages
UG-20144 | 2021.12.13
blueprint::initialize
bpps::update_plan
bpps::validate_placement
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
71
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Gets information about the specified cell (referenced by cell ID). You can obtain cell using the
periph::get_cells Tcl command.
blueprint::initialize
periph::update_plan
blueprint::shutdown
project_close
The following table displays information for the bpps::get_device Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description Internal function to get the device tree in json, this gets the complete device model.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
72
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, load the floorplan from a Interface Planner floorplan file In pin planner mode, this is
a stub.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::save_floorplan -filename onewire_blueprint_floorplan.plan
project_close
Description In classic mode, load the floorplan from a Interface Planner floorplan file In pin planner mode, this is
a stub.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::save_floorplan -filename onewire_blueprint_floorplan.plan
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
73
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<location_id> location id
Description Gets information about the specified location (referenced by location ID). You can obtain location
using the periph::get_locations Tcl command or using the bpps::get_location_info -properties
<loc_id> Tcl command
blueprint::initialize
periph::update_plan
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
74
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, return information about a given placement In pin planner mode, looking up
placement objects is not supported, no such thing.
Description In classic mode, returns a vector of placements for the supplied cell In pin planner mode, returns a
vector of compatible locations for the supplied pin
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
75
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Given a list of design cell IDs, returns a vector of possible placement IDs for all the cells.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::check_plan
project_close
The following table displays information for the bpps::harden_cell Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
76
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In modes that support soft / hard placements (ie. Tile Planner mode), hardens the existing placement
of the specificed cell. If the cell is subsequently unplaced and placed again, the placement soft / hard
attribute will be based on the new placement action. For modes that do not support soft / hard
placements, nothing is performed.
The following table displays information for the bpps::harden_cells Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In modes that support soft / hard placements (ie. Tile Planner mode), hardens the existing placement
of the specificed cell. If the cell is subsequently unplaced and placed again, the placement soft / hard
attribute will be based on the new placement action. For modes that do not support soft / hard
placements, nothing is performed.
The following table displays information for the bpps::initialize Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description Replaces blueprint::initialize command. It will create the design and device models without a backend
separate-exe engine.
bpps::initialize
bpps::update_plan
bpps::shutdown
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
77
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, load the floorplan from a Interface Planner floorplan file In pin planner mode, this is
a stub.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::save_floorplan -filename onewire_blueprint_floorplan.plan
project_close
The following table displays information for the bpps::place_cells Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, performs a placement on the supplied cells In pin planner mode, auto assigns all the
pins in the design if possible. Only -cell_ids <cell_id_list> and -cell_location <(cell_id, loc_id)> are
actually used. If, exclusively, one of these are not specified, the command does NOTHING.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
78
3. TCL Commands and Packages
UG-20144 | 2021.12.13
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::check_plan
project_close
Description In TilePlanner mode, read placement from a JSON file. Nothing happens (should not be available in
GUI) in other modes.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::check_plan
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
79
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, remove all invalid report In pin planner mode, this is a stub call.
The following table displays information for the bpps::report_all Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, create all default summary reports. In pin planner mode, this is a stub call.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
80
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, creates a report of the connectivity for a cell. In pin planner mode, this is a stub call.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description In classic mode, creates a report of all the locations a particular cell can be placed and the reasons it
cannot be placed there In pin planner mode, this is a stub call.
The following table displays information for the bpps::report_cells Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
-name <name> Filter the list of placed cells specifying a name. Wildcards
are supported.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-type <type> Filter the list of placed cells specifying a list of types
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
81
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, returns a list of periphery cells based on the specified criteria. In pin planner mode,
this is a stub call.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description In classic mode, show the signals that are using low-skew routing networks (clock networks) in the
device. If applicable, also show any signals that were considered for automatic clock network
promotion, but were not promoted. In pin planner mode, this is a stub call.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description In classic mode, creates a report of the legal periphery cell locations of a cell In pin planner mode,
this is a stub call.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
82
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description In classic mode, creates a report of the location types in the periphery In pin planner mode, this is a
stub call.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description In classic mode, Creates a report of the locations for the requested type in the periphery In pin
planner mode, this is a stub call.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
83
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
The following table displays information for the bpps::reset_plan Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, reverts the current design to be unplaced and without assignments applied In pin
planner mode, removes all the user created pin assignments. Keeps the original assignments.
(currently just a stub still)
blueprint::initialize
bpps::update_plan
bpps::reset_plan
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
84
3. TCL Commands and Packages
UG-20144 | 2021.12.13
blueprint::shutdown
project_close
Description In classic mode, write the Interface Planner floorplan that can be reloaded in Interface Planner In pin
planner mode, write the user pin assignments as constraints to QSF file. It is preferred to use the new
save_pin_assignments call instead in pin planner mode.
blueprint::initialize
bpps::update_plan
project_close
Description Write the Interface Planner floorplan that can be reloaded in Interface Planner
blueprint::initialize
bpps::update_plan
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
85
3. TCL Commands and Packages
UG-20144 | 2021.12.13
bpps::save_pin_assignments
project_close
The following table displays information for the bpps::set_mode Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description Internal use only for PDPW to set the mode of the middleware. Also defines what plugins will be
loaded
The following table displays information for the bpps::shutdown Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
blueprint::initialize
bpps::update_plan
blueprint::shutdown
project_close
The following table displays information for the bpps::soften_cell Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
86
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In modes that support soft / hard placements (ie. Tile Planner mode), softens the existing placement
of the specificed cell. If the cell is subsequently unplaced and placed again, the placement soft / hard
attribute will be based on the new placement action. For modes that do not support soft / hard
placements, nothing is performed.
The following table displays information for the bpps::soften_cells Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In modes that support soft / hard placements (ie. Tile Planner mode), softens the existing placement
of the specificed cell. If the cell is subsequently unplaced and placed again, the placement soft / hard
attribute will be based on the new placement action. For modes that do not support soft / hard
placements, nothing is performed.
Description In classic mode, undo the last placement or unplacement operation. In classic mode, undo the last pin
assignment or assignment removal operation.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
87
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In classic mode, removes the placement from the specified cells. Any constraints for the cells remain,
but the cell no longer has a placement. In pin planner mode, similar to classic mode, unassigns pin
locations made within this session.
blueprint::initialize
bpps::update_plan
bpps::unplace_cells -placed_cells
bpps::check_plan
project_close
The following table displays information for the bpps::update_pdpw Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, this command update everything that needs updating in pdpw. This essentially sends
a single TCL command to pdpw to update everything as needed. Used in the TCL proc source wrapper
only. In pin planner mode, this command is just a stub.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
88
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Removes the exception to ignore the given project assignments. The result is the project assignments
will take affect on the active design.
The following table displays information for the bpps::write_plan Tcl command:
Tcl Package and Belongs to ::quartus::bpps on page 69
Version
Description In classic mode, export the floorplan constraints Tcl script In pin planner mode, does nothing (we're
not exporting to any TCL file, instead we write to QSF directly in save_floorplan, or
save_pin_assignments (recommended), calls.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::check_plan
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
89
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description In TilePlanner mode, write out the placement JSON file. Nothing happens (should not be available in
GUI) in other modes.
blueprint::initialize
bpps::update_plan
bpps::place_cells -unplaced_cells
bpps::check_plan
project_close
3.1.3. ::quartus::chip_planner
The following table displays information for the ::quartus::chip_planner Tcl
package:
Tcl Package and Version ::quartus::chip_planner 2.0
Description This package contains the set of Tcl functions for identifying and modifying resource usage
and routing with the Chip Planner.
qacv
qpro
quartus
quartus_cdb
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
90
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the check_node Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Syntax check_node [-h | -help] [-long_help] [-gen_id <gen id> ] [-node <node id> ]
Description Checks whether the specified node is legal. Returns 1, if the node is legal. Returns 0, otherwise. Even
if a node is legal, you still must run the check_netlist_and_save command to verify the node legality
within the netlist.
TCL_ERROR 1 ERROR: Illegal node generic ID: %u. Specify a legal node
generic ID.
TCL_ERROR 1 ERROR: Illegal node ID: %u. Specify a legal node ID.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
The following table displays information for the close_chip_planner Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
91
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Determines whether Chip Planner operations can be performed on the current design.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
Description Determines whether the current design contains encrypted IP. Returns 1, if the design contains
encrypted IP. You may be able to view or edit individual nodes of the design if they are not part of an
encrypted IP. To check individual nodes, use the command "get_node_info -node <node id> -info
encrypted". Returns 0, otherwise.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
92
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a Tcl list of information parameters. When you use the -file option, the list is redirected to the
specified output file. If the output file already exists, it is overwritten without warning.
The following table displays information for the get_iports Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Syntax get_iports [-h | -help] [-long_help] [-as_gen_id] [-gen_id <gen id> ] [-node
<node id> ] [-src_gen_id <gen id> ]
Description Returns a collection of input ports for the specified node. You can use the collection with the
"foreach_in_collection" command.
TCL_ERROR 1 ERROR: Illegal node generic ID: %u. Specify a legal node
generic ID.
TCL_ERROR 1 ERROR: Illegal node ID: %u. Specify a legal node ID.
TCL_ERROR 1 ERROR: Illegal oport generic ID: %u. Specify a legal oport
generic ID.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
93
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_node_by_name Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Description Returns the node id of the specified node. Returns -1 if the node cannot be found.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
The following table displays information for the get_oports Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Syntax get_oports [-h | -help] [-long_help] [-as_gen_id] [-gen_id <gen id> ] [-node
<node id> ]
Description Returns a collection of output ports for the specified node. You can use the collection with the
foreach_in_collection command.
TCL_ERROR 1 ERROR: Illegal node generic ID: %u. Specify a legal node
generic ID.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
94
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Illegal node ID: %u. Specify a legal node ID.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
The following table displays information for the get_port_by_type Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Description Returns the port index for the specified port type on the specified node. Returns -1 if the port is not in
use or is invalid for the specified node.
TCL_ERROR 1 ERROR: Illegal node generic ID: %u. Specify a legal node
generic ID.
TCL_ERROR 1 ERROR: Illegal node ID: %u. Specify a legal node ID.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
95
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_sp_pin_list Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Description Returns a list of the pins availible for use as signal probe output pins.;
Syntax get_tile_power_setting [-h | -help] [-long_help] [-X <X location> ] [-Y <Y
location> ] [-gen_id <gen id> ]
Description Returns the High-Speed/Low Power setting of the tile at the specified location.
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
The following table displays information for the read_netlist Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
96
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Reads the Chip Planner netlist from the last compilation. You must open a project before using this
command.
The following table displays information for the set_batch_mode Tcl command:
Tcl Package and Belongs to ::quartus::chip_planner on page 90
Version
TCL_ERROR 1 ERROR: Unable to find Chip Planner netlist. Read the netlist
by using the read_netlist command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
97
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.4. ::quartus::design
The following table displays information for the ::quartus::design Tcl package:
Tcl Package and Version ::quartus::design 1.0
Description This package contains the set of Tcl functions for manipulating databases including the
assignments database. Using this package makes it possible to create instance assignments
without modifying the Quartus Prime Settings File (.qsf).
quartus_cdb
qacv
qpro
qpro_sh
quartus
quartus_fit
quartus_map
quartus_pow
quartus_sh
quartus_sta
quartus_syn
Description Commit any changes to the databases to disk. Assignments created or modified on a design loaded as
writeable are not saved to the databases unless you explicitally call this command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
98
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-infile <QDB file name> Input file name of the QDB archive (version-compatible
format).
-outfile <QDB file name> Output file name of the QDB archive (current-version-only
format).
Description Convert a partition's QDB file in version-compatible ASCII format into a QDB file in BINARY format for
current version of Quartus.
project_open onewire_nf
design::export_partition core_ptn -snapshot synthesized -file src_ip.qdb -compatible
project_close
# Make sure you are using the same version of Quartus that will use to compile your design.
project_open onewire_nf
design::convert_partition -infile src_ip.qdb -outfile ip.qdb
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
99
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
100
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Enables one or more assignments from the assignment database that were previously disabled
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
101
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Export the specified metadata and loaded databases for the open project and revision and snapshot to
<file>.qdb in a version-compatable format. This command is available only in the quartus_cdb
executable.
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
102
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Export the metadata and IP of the specified partition and snapshot.
-dir <dir> The extraction directory. This directory must exist prior to
invoking this command.
-file <file> The Partition Database File (.qdb) holding the metadata to
be extracted.
Description Extracts the specified metadata from the given Partition Database File (.qdb) file to the provided
extraction directory.
Example Usage # Create a Partition Database File (.qdb) with Quartus Metadata using the "synthesized"
snapshot.
project_open onewire_nf
design::export_design -file onewire.qdb -snapshot synthesized -quartus_metadata all
project_close
# Extract all the Quartus Metadata from "onewire.qdb" to the extraction directory located at
"extract/dir".
design::extract_metadata -file onewire.qdb -type quartus -dir "extract/dir"
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
103
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<assignment> assignment id
design::load_design -latest_snapshot
foreach asgn_id [design::get_assignments] {
puts "Found assignment [design::get_assignment_info -name $asgn_id]
[design::get_assignment_info -to $asgn_id] = [design::get_assignment_info -value $asgn_id]"
}
design::load_design -latest_snapshot
puts "Valid assignment type names:"
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
104
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Get a list of assignment IDs for the currently loaded design.
design::load_design -latest_snapshot
foreach asgn_id [design::get_assignments] {
puts "Found assignment [design::get_assignment_info -name $asgn_id]
[design::get_assignment_info -to $asgn_id] = [design::get_assignment_info -value $asgn_id]"
}
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
105
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-entity <entity> Return only instance names that have the supplied entity
name
-timing_analysis_mode Import the design for Timing Analysis. User will not be able
to generate programming file after importing design with
this option. See -timing_analysis_mode option description
below.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
106
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Import all the databases from the specified <file>.qdb. If overwrite is specified then databases will be
overwritten in the active qdb directory. The database revision in the <file>.qdb must match the active
revision. This command is available only in the quartus_cdb executable. ------------------- OPTIONS
DESCRIPTION ------------------- -timing_analysis_mode Import the design for Timing Analysis. This
option disables legality checks for certain configuration rules which may have changed from prior
versions of Quartus Prime Pro. Use this option only if you were unable to successfully import your
design without this option. After a design has been imported in timing analysis mode, the imported
database will not be able to be used to generate programming files.
project_open onewire_nf
design::import_design -file onewire.qdb -overwrite
project_close
project_open onewire_nf
design::export_partition root_partition -snapshot synthesized -file ip.qdb
project_close
project_open onewire_nf
design::import_partition root_partition -file ip.qdb
project_close
# Or non-root_partition
project_open onewire_nf
design::import_partition ip_sub -file ip.qdb
project_close
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
107
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-flat_only Indicates that databases should be loaded only from the flat
partition.
Description Load the databases for the currently opened project. The databases are by default loaded in read-only
mode and must be loaded with the -writeable option if manipulation to the databases is desired.
design::load_design -latest_snapshot
foreach asgn_id [design::get_assignments] {
puts "Found assignment [design::get_assignment_info -name $asgn_id]
[design::get_assignment_info -to $asgn_id] = [design::get_assignment_info -value $asgn_id]"
}
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
108
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
109
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<assignment> assignment id
design::load_design -latest_snapshot
set asgn_id [lindex [design::get_assignments -name location] 0]
puts "Setting location of [design::get_assignment_info -to $asgn_id] to PIN_A5"
design::set_assignment_info -value PIN_A5 $asgn_id
puts "New location of [design::get_assignment_info -to $asgn_id] is
[design::get_assignment_info -value $asgn_id]"
3.1.5. ::quartus::device
The following table displays information for the ::quartus::device Tcl package:
Tcl Package and Version ::quartus::device 1.0
Description This package contains the set of Tcl functions for accessing information from the Quartus
Prime device database.
qpro_sh
quartus_cdb
quartus_eda
quartus_fit
quartus_ipgenerate
quartus_sh
quartus_sim
quartus_sta
qpro
quartus
quartus_si
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
110
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_family_list Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
The following table displays information for the get_part_info Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
111
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns part characteristics for the specified part. If you use multiple options, the command returns a
list in the following order: <family> <device> <package> <pin_count> <speed grade>
<temperature_grade> <family_variant> <power_model_status> <hssi_speed_grade>
<power_model> <rohs_grade>
The following table displays information for the get_part_list Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
112
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a list of available parts based on the options that are specified. Examples are as follows:
Return a list of all supported parts get_part_list Return a list of all supported parts for Cyclone
get_part_list -family Cyclone Return a list of all supported parts with the FBGA package and 780 pins
get_part_list -package fbga -pin_count 780
The following table displays information for the report_device_info Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
Description Returns a string value containing the report with information about the specified device, such as the
following: Available parts Some additional information specific to the device
The following table displays information for the report_family_info Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
Description Returns a string value containing the report with information about the specified family, such as the
following: Available devices Available packages Available speed grades Available pin counts Some
additional information specific to the family
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
113
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_part_info Tcl command:
Tcl Package and Belongs to ::quartus::device on page 110
Version
Description Returns a string value containing the report with information about the specified part, such as the
following: Family name Device name Package name Pin count Speed grade Any additional information
3.1.6. ::quartus::drc
The following table displays information for the ::quartus::drc Tcl package:
Tcl Package and Version ::quartus::drc 1.0
quartus_da
qacv
qpro
quartus
quartus_cdb
quartus_fit
quartus_sta
quartus_syn
quartus_tlg
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
114
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::add_check_op Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
115
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::add_object Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
-number <number> The numeric part of the new DRC object's name.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
116
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-parent <parent> The parent object of the new violation_record DRC object.
-number <number> The numeric part of the new DRC object's name.
-parent <parent> The parent object of the new violation_record DRC object.
-properties <properties> The property list of the new violation_record DRC object.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
117
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::add_property Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
-object <object> The DRC object to which the new property belongs.
Example Usage drc::add_property -object <DRC object> -name <property name> -value <property value> -
value_type <value type>
The following table displays information for the drc::add_rule Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
118
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage add_rule -category {TEST} -id {TEST_ID} -check_operation {TEST_CHECK_OP} -severity
{TEST_SEVERITY}
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
119
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::check_design Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
Description Run the specified rule set on a snapshot for the open project.
Example Usage drc::check_design [-rule_set my_ruleset (if missing, the rule set is default)] [-executable
quartus_sta (if missing, the default is the current process name)] [-rpt_file <DA DRC ASCII
report file path>]
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
120
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-all The flag needed explicitly for deleting all the waivers
without other arguments
-query_string <query_string> Query string uses one ore more violation column arguments
to define patterns of violations that should be ignored.
-stages <stages> one or more stage(s) where rules are defined, for which the
waiver can be applied to.
The following table displays information for the drc::get_objects Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
-number <number> The numerical part of the name of the rule/violation DRC
objects to be retrieved.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
121
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::get_option Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
The following table displays information for the drc::get_property Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
122
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stage <stage> The stage name to get exectuable, snapshot, and rule set.
Description The Utility to find stage info in terms of all available stages, and executables and snapshots associate
with snapshots. No error info provided.
The following table displays information for the drc::get_waivers Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
-query_string <query_string> Query string uses one ore more violation column arguments
to define patterns of violations that should be ignored.
-stages <stages> one or more stage(s) where rules are defined, for which the
waiver can be applied to.
Description List all the waiver objects found in the memory filtered based on the input arguments.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
123
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-object <object> The DRC object whose properties are returned as a list of
property names.
Description Get the list of property names from a generic DRC object
-file <file> The file where to store all the waivers found in the memory
-query_string <query_string> Query string uses one ore more violation column arguments
to define patterns of violations that should be ignored.
-stages <stages> one or more stage(s) where rules are defined, for which the
waiver can be applied to.
Description Output the definition of all the waivers in the memory to a file filtered based on the input arguments.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
124
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::set_option Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
The following table displays information for the drc::set_property Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
Example Usage drc::set_property -object <DRC object> -name <property name> -value <property value>
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
125
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
126
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the drc::update_rule Tcl command:
Tcl Package and Belongs to ::quartus::drc on page 114
Version
3.1.7. ::quartus::eco
The following table displays information for the ::quartus::eco Tcl package:
Tcl Package and Version ::quartus::eco 1.0
Description This package contains commands to perform Engineering Change Orders on a Post-Fit
netlist. ECO compilations are supported on Intel Stratix 10 and Intel Agilex device families.
quartus_fit
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
127
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the adjust_pll_refclk Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The adjust_pll_refclk command can change IOPLL frequencies by modifying the input reference clock
frequency. Assumptions and Limitations: - The original refclk/outclk ratios will be maintained - None
of the IOPLLs being reconfigured can generate IP clocks (the frequencies of the LVDS, PhyLite and
EMIF clocks cannot change) - Cascaded IOPLLs must be connected directly (no clock gates in between
them) - IOPLLs cannot be in 'nondedicated' compensation modes - For all IOPLL outclks duty cycle =
50 and phase shift = 0
The following table displays information for the create_wirelut Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
128
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description The create_wirelut command will create and insert a wire LUT node in the specified connection. The
ECO Fitter will place the newly created LUT and route the modified connections automatically, if -
location argument is specified. Otherwise, the new wire LUT should be placed with place_node
command. The name for the new node is hierarchy based, and the ECO Fitter will try to infer the
name hierarchy. For example, if a node a|b|c|d needs to be created, users should make sure that
hierarchy a|b|c exists in the netlist. If the source or destination node lies under a partition, the new
wire LUT will be inserted under that partition.
Example Usage create_wirelut -name my_wirelut -from src_output -to dest_node -port D -location "X136 Y63
X149 Y82"
The following table displays information for the eco_reroute Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The eco_reroute command reroutes the iterm with user specified slacks.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
129
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the eco_unload_design Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The eco_unload_design command unloads the current design. It also discards all changes that were
made but not committed.
-from <names> Valid destinations (string patterns are matched using Tcl
string matching)
-from_clock <names> Valid destinations (string patterns are matched using Tcl
string matching)
-through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
130
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-to_clock <names> Valid destinations (string patterns are matched using Tcl
string matching)
Description Reports the worst-case Clock Setup and Clock Hold slacks and endpoint TNS (total negative slack) per
clock domain. Total negative slack is the sum of all slacks less than zero for either destination
registers or ports in the clock domain.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
131
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_eco_checkpoint Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The get_eco_checkpoint command prints the current checkpoint id in the console. It also returns the
checkpoint id in a tcl object.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
132
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description The get_lutmask_equation command reports the LUT equation of a given LUT.
The following table displays information for the get_node_location Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The get_node_location command will print the location of the node in the console and return the
location in a tcl object. If the node is not placed, then the string "Unplaced" will be printed and
returned.
The following table displays information for the make_connection Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The make_connection command will connect the source signal to the destination block port. If the
port has an existing connection, the command will remove the previous connection and connect it to
the specified signal. make_connection expects 3 arguments: from - output net of the source block of
the new connection, OR tieoff - tieoff value to - name of the destination block port - the input port
name of the destination block Note that the changed path will be routed immediately. If the path
contains a node that is created during ECO compilation, then the paths will be routed after the node is
placed with place_node command.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
133
3. TCL Commands and Packages
UG-20144 | 2021.12.13
This example will connect top|a_out to the D input port of node top|x.
This example will tie the D port of node top|x to VCC, either internally or via lcell.
Description The modify_io_current_strength command will modify the current strength of the targeted pin.
modify_io_current_strength expects 1 positional argument and an option argument: to - the name of
the destination pin
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
134
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description The modify_io_delay_chain command will modify the delay chain setting of the targeted pin with the
specified type. modify_io_delay_chain expects 1 positional argument and 2 option arguments: to -
the name of the destination pin type - the type of the pin
Description The modify_io_slew_rate command will modify the slew rate of the targeted pin. modify_io_slew_rate
expects 1 positional argument and an option argument: to - the name of the destination pin
The following table displays information for the place_node Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The place_node command will place the specified node either automatically, or within the region if -
location is specified. If -sample is specified, then the command will randomly pick locations and place
the node at the first valid location found. If -timing_driven is specified then the command will try to
place the node at a location that meets timing. If none of the locations meet timing, then the node
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
135
3. TCL Commands and Packages
UG-20144 | 2021.12.13
will be placed at the location with the highest slacks. The place_node command can be used on nodes
that have been placed. -location argument takes in an exact location (-location "X20 Y20"), a region
(-location "X20 Y20 X30 Y30"), or an ALM sublocation (-location "FF_X20_Y20_N10"). -force
argument will force overwrite existing location constraints on the node, if any. -force will not overwrite
Partial Reconfiguration regions.
Example Usage place_node -name eco_new_lut -location "X136 Y63 X149 Y82"
place_node -name eco_new_lut -location "X5 Y10"
place_node -name eco_new_lut -location "X5 Y10" -timing_driven
place_node -name eco_new_ff -location "FF_X20_Y20_N10"
place_node -name eco_new_ff -location "FF_X20_Y20_N10" -force
place_node -name eco_new_lut -location "X5 Y10 X100 Y200" -sample 10
place_node -name eco_new_ff -location "X5 Y10 X100 Y200" -sample 100 -timing_driven
The following table displays information for the remove_connection Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The remove_connection command will disconnect the source signal from the destination block port,
and set the input port to a disconnected state. remove_connection expects 3 arguments: from -
output net of the source block of the new connection to - name of the destination block port - the
input port name of the destination block Note: Connection path containing Hyper Registers is not
allowed to be removed.
This example will disconnect top|a_out from the D input port of node top|x,
and set top|x:D to a disconnected state.
The following table displays information for the remove_node Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
136
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description The remove_node command will remove the specified node from final netlist. The node's source and
destination signals will be disconnected.
The following table displays information for the report_connections Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The report_connections command will report connections between one of the following: - (-from)
report all connections from a node - (-from -from_port) report connections form a port of a node - (-
to) report all connections to a node - (-to -to_port) report connection to a port of a node - (-from -to)
report connection between 2 nodes By default, 100 connections will be reported. In command-line
mode, the result will be posted as info messages to the console. If -return_result is specified then the
result will also be returned as a tcl object.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
137
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-report_illegal Report illegal locations and reasons within the search region
Description The report_legal_locations command will search for all legal locations within the region specified by -
location for the specified node to be placed. The command can be used on nodes that have or have
not been placed. Specify -patient to override the restriction on the search region size. Specify -
report_illegal to report illegal location reasons. In command-line mode, the result will be posted as
info messages to the console. If -return_result is specified then the result will also be returned as a tcl
object. If -check_routing is specified then a location will be determined illegal if the legalization step
fails and slacks will be reported for legal locations. Otherwise the legalization step will be skipped.
Note that the -check_routing option is only supported when all nodes but the target have been
placed. The report_legal_locations command does not work in "quartus_fit --eco" mode.
Example Usage report_legal_locations -name node -location "X136 Y63 X145 Y72"
report_legal_locations -name node -location "X5 Y10 X5 Y10"
report_legal_locations -name node -location "X5 Y10 X5 Y10" -report_illegal
report_legal_locations -name node -location "X5 Y10 X5 Y10" -return_result
report_legal_locations -name node -location "X5 Y10 X5 Y10" -check_routing
report_legal_locations -name node -location "X136 Y63 X149 Y82" -patient
report_legal_locations -name node -location "X136 Y63 X149 Y82" -patient -return_result
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
138
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_ports Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The report_unplaced_nodes command will report all input ports of a node. In command-line mode,
the result will be posted as info messages to the console. If -timing is specified then the slacks on
each port will be reported. If -return_result is specified then the result will also be returned as a tcl
object.
The following table displays information for the report_routing Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description The report_connections command will report routing between a connection. In command-line mode,
the result will be posted as info messages to the console. If -return_result is specified then the result
will also be returned as a tcl object.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
139
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description The report_unplaced_nodes command will report all unplaced nodes. In command-line mode, the
result will be posted as info messages to the console. If -return_result is specified then the result will
also be returned as a tcl object.
Description The restore_eco_checkpoint command reverts the design back to the targeted checkpoint.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
140
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the unplace_node Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
The following table displays information for the update_mif_files Tcl command:
Tcl Package and Belongs to ::quartus::eco on page 127
Version
Description Update memory contents from the Memory Initialization File (.mif) or Hexadecimal (Intel-Format) File
(.hex) for all RAM or CAM atoms.
3.1.8. ::quartus::external_memif_toolkit
The following table displays information for the ::quartus::external_memif_toolkit
Tcl package:
Tcl Package and Version ::quartus::external_memif_toolkit 1.0
Description This package contains the set of Tcl functions for interacting with external memory
interfaces and debug components
qpro_sh
quartus_sh
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
141
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the apply_setting Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Syntax apply_setting [-h | -help] [-long_help] -id <name> [-index <index> ] [-rank
<rank> ] -type <type> -value <value>
-rank <rank> Rank (shadow register) of the target setting within the
connection
Description Applies the specified memory interface setting for the specified target connection.
initialize_connections
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
142
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
The following table displays information for the configure_driver Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
143
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Create a report of the specified type for the connection id. The resulting report is then available for
query using the report TCL package.
project_open dut
initialize_connections
unload_report
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
144
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Create a toolkit report of the specified type. These reports are general toolkit reports, not connection
specific reports. The resulting report is then available for query using the report TCL package.
project_open dut
initialize_connections
unload_report
terminate_connections
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
145
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
The following table displays information for the driver_margining Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
-pnf_ids <pnf_ids> TCL list of PNF (pass not fail) connection IDs of In-System
Probes from the driver
Description Performs read and write driver margining on the selected EMIF connection.
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
146
3. TCL Commands and Packages
UG-20144 | 2021.12.13
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
147
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Returns a TCL list of supported commands for the specific target connection.
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
148
3. TCL Commands and Packages
UG-20144 | 2021.12.13
initialize_connections
terminate_connections
project_close
Description Returns the interfaces available for the specified connection id.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
149
3. TCL Commands and Packages
UG-20144 | 2021.12.13
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
initialize_connections
terminate_connections
project_close
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
150
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Returns a TCL list of supported report types for the specific target connection.
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
151
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_connections Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
initialize_connections
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
152
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
The following table displays information for the get_setting_types Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Description Returns a TCL list of supported memory interface setting types for the specific target connection.
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
153
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a TCL list of supported toolkit report types. These reports are general toolkit reports, not
connection specific reports.
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Initializes the internal data structures of the toolkit. This command must be run before any other
toolkit commands are executed.
initialize_connections
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
154
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The current project settings are invalid. Verify that
all project settings are valid.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-jdi_file <name> Specifies the JTAG Debugging Information file to use when
creating the design link.
-sof_file <name> Specifies the SOF file to use when creating the design link.
Description Links the currently opened project to the specified target device on the specified hardware.
initialize_connections
terminate_connections
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
155
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The SOF (.sof) file called <string> could not be
found. Ensure this file exists or run quartus_asm to create
it.
The following table displays information for the read_setting Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Syntax read_setting [-h | -help] [-long_help] -id <name> [-index <index> ] [-rank
<rank> ] -type <type>
-rank <rank> Rank (shadow register) of the target setting within the
connection
Description Reads the specified memory interface setting for the specified target connection.
initialize_connections
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
156
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
initialize_connections
reindex_connections
terminate_connections
project_close
The following table displays information for the reset_tg2 Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
157
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
-payload <name> TCL list of parameter data to use when executing the
command
Description Executes a command of the specified type and for the connection id.
initialize_connections
terminate_connections
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
158
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Selects the active interface to debug for the specified connection id.
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
The following table displays information for the set_stress_pattern Tcl command:
Tcl Package and Belongs to ::quartus::external_memif_toolkit on page 141
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
159
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
initialize_connections
terminate_connections
project_close
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
160
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_close
Description Unlinks the currently opened project from the currently linked target device on the specified
hardware.
initialize_connections
unlink_project_from_device
terminate_connections
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
161
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The currently opened project has not been linked to
a device. Run link_project_to_device to link a project to a
device.
Description Writes the reports for the given connection target to a filename.
initialize_connections
terminate_connections
project_close
3.1.9. ::quartus::fif
The following table displays information for the ::quartus::fif Tcl package:
Tcl Package and Version ::quartus::fif 1.0
Description This package contains the set of Tcl functions for using the Fault Injection File (FIF) Driver.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
162
3. TCL Commands and Packages
UG-20144 | 2021.12.13
quartus_fif
The following table displays information for the check Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
Description Check is the specified location contains sensitive bit. Returns 1, if the specified location contains
sensitive bit. Returns 0, otherwise.
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the dump Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
163
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the dump_cram_frame Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the dump_mem Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
164
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the dump_pr_bitstream Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the generate Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
Description Generates PR RBF file. Specifies the 'error_count' and 'error_index' to generate a PR RBF file with
fault injected. Otherwise, the command will generate a PR RBF file without fault for external
scrubbing.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
165
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the get_frame_count Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the get_frame_size Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
166
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
167
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
The following table displays information for the setup Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
168
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the terminate Tcl command:
Tcl Package and Belongs to ::quartus::fif on page 162
Version
TCL_ERROR 1 ERROR: FIF driver has not been setup. Use setup command
to setup the FIF driver.
3.1.10. ::quartus::flng
The following table displays information for the ::quartus::flng Tcl package:
Tcl Package and Version ::quartus::flng 1.0
qpro
qpro_sh
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
169
3. TCL Commands and Packages
UG-20144 | 2021.12.13
quartus
quartus_cdb
quartus_da
quartus_eda
quartus_fit
quartus_ipgenerate
quartus_map
quartus_sh
quartus_syn
quartus_tlg
qunb
The following table displays information for the flng::add_object Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
-number <number> The numeric part of the new FLNG object's name.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
170
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the flng::add_property Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Example Usage flng::add_property -object <object> -name <property name> -value <property value> -value_type
<value type>
The following table displays information for the flng::bind_flow Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Syntax flng::bind_flow [-h | -help] [-long_help] [-end <end> ] -flow <flow> [-start
<start> ]
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
171
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
172
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the flng::get_object Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
The following table displays information for the flng::get_objects Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
173
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the flng::get_option Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
The following table displays information for the flng::get_property Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
174
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
175
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the flng::monitor_flow Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
The following table displays information for the flng::run_flow Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
176
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the flng::set_option Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
The following table displays information for the flng::set_property Tcl command:
Tcl Package and Belongs to ::quartus::flng on page 169
Version
Example Usage flng::set_property -object <object> -name <property name> -value <property value>
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
177
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.11. ::quartus::flow
The following table displays information for the ::quartus::flow Tcl package:
Tcl Package and Version ::quartus::flow 1.1
Description This package contains the set of Tcl functions for running flows or command-line
executables.
hdb_debug
qpro
qpro_sh
quartus
quartus_cdb
quartus_drc
quartus_eda
quartus_fit
quartus_ipgenerate
quartus_map
quartus_sh
quartus_si
quartus_sim
quartus_sta
quartus_stp
quartus_syn
quartus_tlg
The following table displays information for the execute_flow Tcl command:
Tcl Package and Belongs to ::quartus::flow on page 178
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
178
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Runs one or more of the command-line executables using one of the predefined flows, such as "-
compile" or "-signalprobe". You can run only one flow at a time, so you must use only one option.
Some flows have limited device support or other limitations based on the features used. See
documentation for the features in question for details. The "-export_database" and "-
import_database" options use the value of the VER_COMPATIBLE_DB_DIR assignment for the version-
compatible database files directory, defaulting to "export_db". The "-incremental_compilation_export"
option uses the value of the INCREMENTAL_COMPILATION_EXPORT_FILE global assignment for the
path of the Quartus Prime Exported Partition (QXP) file to be created. The value of the
INCREMENTAL_COMPILATION_EXPORT_PARTITION_NAME global assignment should specify the name
of the partition to be exported. The value of the
INCREMENTAL_COMPILATION_EXPORT_NETLIST_TYPE global assignment (which can either have
value POST_SYNTH or POST_FIT) determines whether post-synthesis or post-fitting results should be
exported. Finally, the value of the INCREMENTAL_COMPILATION_EXPORT_ROUTING global
assignment specifies whether routing should be exported when a post-fit netlist is generated. The "-
incremental_compilation_import" option uses the following partition assignments to determine the
location of the QXP files, and how importation should be performed, on a per-partition basis:
PARTITION_IMPORT_FILE PARTITION_IMPORT_PROMOTE_ASSIGNMENTS
PARTITION_IMPORT_NEW_ASSIGNMENTS PARTITION_IMPORT_EXISTING_ASSIGNMENTS
PARTITION_IMPORT_EXISTING_LOGICLOCK_REGIONS All assignments are exported first
automatically, as if you called the "export_assignments" command first, unless the -
dont_export_assignments option is specified. You must use the Tcl command "catch" to determine
whether the predefined flow ran successfully or not, as in the following example: if {[catch
{execute_flow -compile} result]} { puts "\nResult: $result\n" puts "ERROR: Compilation failed. See
report files.\n" } else { puts "\nINFO: Compilation was successful.\n" }
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
179
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Only one flow option is allowed. Only one flow can
be run for a single command call. If multiple flows are
required, use multiple commands.
The following table displays information for the execute_module Tcl command:
Tcl Package and Belongs to ::quartus::flow on page 178
Version
Description Runs one of the command-line executables, such as quartus_map or quartus_fit. If the -args option is
specified, the arguments are passed to the command-line executable. All assignments are exported
automatically first, as if the "export_assignments" command was called first, unless -
dont_export_assignments option is specified. You must use the Tcl command "catch" to determine
whether the command-line executable ran successfully or not, as in the following example: if {[catch
{execute_module -tool map} result]} { puts "\nResult: $result\n" puts "ERROR: Analysis and
Synthesis failed. See the report file.\n" } else { puts "\nINFO: Analysis and Synthesis was
successful.\n" }
Example Usage # Run quartus_map using device family Stratix and device part EP1S10B672C6.
execute_module -tool map -args "--family=Stratix --part=EP1S10B672C6"
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
180
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_flow_templates Tcl command:
Tcl Package and Belongs to ::quartus::flow on page 178
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
181
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the write_flow_started Tcl command:
Tcl Package and Belongs to ::quartus::flow on page 178
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
182
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.13. ::quartus::insystem_memory_edit
The following table displays information for the ::quartus::insystem_memory_edit
Tcl package:
Tcl Package and Version ::quartus::insystem_memory_edit 1.0
Description This package contains the set of Tcl functions for reading and editing the contents of
memory in an Intel device using the In-System Memory Content Editor.
quartus_stp
quartus_stp_tcl
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
183
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the begin_memory_edit Tcl command:
Tcl Package and Belongs to ::quartus::insystem_memory_edit on page 183
Version
-device_name <device name> Name of the device that holds the editable memory
instances
-hardware_name <hardware name> Name of the hardware that connects to the JTAG chain
Description Start the memory editing sequence. The editing sequence should be terminated with
end_memory_edit. The sequence does not have to be terminated unless the device configuration is
changed or a different device is edited. The hardware and device name can be obtained with the
get_hardware_names and get_device_names commands from the jtag package.
The following table displays information for the end_memory_edit Tcl command:
Tcl Package and Belongs to ::quartus::insystem_memory_edit on page 183
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
184
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Terminate the memory editing sequence. The sequence does not have to be terminated unless the
device configuration is changed or a different device is edited.
-device_name <device name> Name of the device that holds the editable memory
instances
-hardware_name <hardware name> Name of the hardware that connects to the JTAG chain
Description Retrieve a list of editable memory, ROM, or lpm_constant instances. A list is returned, each element
of which shows the configuration of each instance. This element is an another list that specifies the
configuration in the following order: <instance index> <depth> <width> <read/write mode>
<instance type> <instance name>. The <read/write mode> can be either "RW" or "W"; <instance
type> can be either "ROM/RAM" or "CONSTANT". An example showing a list of two instances of
different types is shown below: {0 1024 8 RW ROM/RAM mem0} {1 1 32 RW CONSTANT con0} The
hardware and device name can be obtained with the get_hardware_names and get_device_names
commands from the jtag package. It is recommended that you call this command before the TCL
command, begin_memory_edit. Within a memory edit sequence, this command can be applied only to
the same device, on which the memory edit sequence has started.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
185
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Retrieves the memory content represented in the bit stream from the specified editable memory
instance starting from the specified address. The memory content string is in the same format as the
input content string in the TCL command write_content_to_memory.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
186
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The specified word count and the starting address
exceeds the specified memory buffer size.
3.1.13.5. save_content_from_memory_to_file
(::quartus::insystem_memory_edit)
-mem_file_path <path> Path to the memory file in which to save the memory
content
Description Retrieves the entire memory contents from the specified editable memory instance starting from
address 0 and saves it into the specified memory file.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
187
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.13.6. update_content_to_memory_from_file
(::quartus::insystem_memory_edit)
-mem_file_path <path> Path to the memory file to load the memory content
-mem_file_type <file type> Type of the memory file such as "mif" or "hex"
Description Writes the data stored in the memory file into the specified memory instance starting from address 0.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
188
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-content <content string> A string that represents all word values concatenated
together in order in either binary or hexadecimal format
Description Writes the data represented in the bit stream into the specified editable memory instance starting
from the specified address. It returns the number of successful writes. The bit stream should be
ordered by word from high address to low address, contiguously without gaps or delimiters. If the
starting address is ADDR, and word count is N, the order is <word @ ADDR + N - 1> ... <word @
ADDR + 1><word @ ADDR> In each word, the MSB is on the left, LSB is on the right. The bit stream
can be in either binary or hexadecimal. For example, if the word width is 8, and two words, 1 and
128, are written to address 0 and 1 respectively, the bitstream should be "1000000000000001" in
binary or "8001" in hexadecimal. The TCL command is write_content_to_memory -instance_index 0 -
start_address 0 -word_count 2 -content "1000000000000001" or write_content_to_memory -
instance_index 0 -start_address 0 -word_count 2 -content "8001" -content_in_hex
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
189
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Data specified in the string does not match the
number of bits to update the memory of the specified
number of words.
TCL_ERROR 1 ERROR: The specified word count and the starting address
exceeds the specified memory buffer size.
3.1.14. ::quartus::insystem_source_probe
The following table displays information for the ::quartus::insystem_source_probe
Tcl package:
Tcl Package and Version ::quartus::insystem_source_probe 1.0
Description This package contains the set of Tcl functions for using the In-System Sources and Probes
feature to interact with your design in an Intel device.
quartus_stp
quartus_stp_tcl
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
190
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This command releases the JTAG chain. Use when finished performing In-System Sources and Probes
transactions.
3.1.14.2. get_insystem_source_probe_instance_info
(::quartus::insystem_source_probe)
-device_name <device name> Name of the device programmed with the design that
includes In-System Sources and Probes instances
-hardware_name <hardware name> Name of the hardware that connects to the JTAG chain
Description Returns a list of the available In-System Sources and Probes instances and their configuration.
{instance_index source_width probe_width instance_name} Example: {0 4 3 src1} {1 5 5 src2} {2 3
6 none}
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
191
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage # List information of all In-System Sources and Probes instances
puts "Information on all In-System Sources and Probes instances:"
puts "index,source_width,probe_width,name"
foreach instance [get_insystem_source_probe_instance_info -hardware_name "USB-Blaster \
[USB-0\]" -device_name "@1: EP1S25/_HARDCOPY_FPGA_PROTOTYPE (0x020030DD)"] {
puts "[lindex $instance 0],[lindex $instance 1],[lindex $instance 2],[lindex $instance 3]"
}
The following table displays information for the read_probe_data Tcl command:
Tcl Package and Belongs to ::quartus::insystem_source_probe on page 190
Version
Description Retrieves the current value of the probes. A string is returned specifying the status of each probe,
with the MSB on the left and LSB on the right. By default, the value is represented as a binary string.
Optionally, the option -value_in_hex makes the value a hex string.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
192
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the read_source_data Tcl command:
Tcl Package and Belongs to ::quartus::insystem_source_probe on page 190
Version
Description Retrieves the current value of the sources. A string is returned specifying the status of each source,
with the MSB on the left and LSB on the right. By default, the value is represented as a binary string.
Optionally, the option -value_in_hex makes the value a hex string.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
193
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-device_name <device name> Name of the device that holds the In-System Sources and
Probes instances
Description Use this command before beginning any In-System Sources and Probes transactions
The following table displays information for the write_source_data Tcl command:
Tcl Package and Belongs to ::quartus::insystem_source_probe on page 190
Version
Description Sets values for the sources. A value string is sent to the source values. MSB is on the left and LSB is
on the right. The value string is is truncated on the left (MSB) side if necessary. By default, the values
are represented as a binary string. Optionally, the option -value_in_hex makes the values hex strings.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
194
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.15. ::quartus::interactive_synthesis
The following table displays information for the ::quartus::interactive_synthesis Tcl
package:
Tcl Package and Version ::quartus::interactive_synthesis 1.0
quartus_syn
The following table displays information for the analyze_files Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
195
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
-panel_name <panel_name_value> Specifies the name of the Check Connections report panel
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
196
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the elaborate Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the get_entities Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
197
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the get_rtl_partitions Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the link_rtl_design Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
Example Usage # Link the RTL design for the current revision
link_rtl_design
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
198
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the print_ipxact Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
Example Usage report_rtl_assignments -panel_name "Source Assignments for Top partition" -partition |
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
199
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage report_rtl_parameters -panel_name "RTL Parameters for Top partition" -partition |
The following table displays information for the report_rtl_stats Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
-filename <filename_value> Specifies the output filename for the RTL report
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
200
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the reset_rtl_design Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the save_rtl_design Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
Example Usage # Saves the current RTL design for partition Top
save_rtl_design -partition |
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the synthesize Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
201
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
The following table displays information for the uniquify Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
202
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the write_rtl_report Tcl command:
Tcl Package and Belongs to ::quartus::interactive_synthesis on page 195
Version
-filename <filename_value> Specifies the output filename for the RTL report
Example Usage # Write the RTL report to the QDB database in binary forat
write_rtl_report -qdb
TCL_ERROR 1 ERROR: You must open a project before you can use this
command
3.1.16. ::quartus::ipgen
The following table displays information for the ::quartus::ipgen Tcl package:
Tcl Package and Version ::quartus::ipgen 1.0
quartus_ipgenerate
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
203
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This command removes all the generation directories for the Platform Designer IP files in the opened
project. All the content in the generation directories will be removed.
Example Usage # Remove all the generation directories for the Platform Designer IP files in the opened
project
project_open my_project
clear_ip_generation_dirs
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the generate_ip_file Tcl command:
Tcl Package and Belongs to ::quartus::ipgen on page 203
Version
-simulation <verilog|vhdl> Set the simulation target type. Valid values are verilog or
vhdl.
-simulator <modelsim|vcs|vcsmx| Set the simulator target type. Valid values are modelsim,
riviera|xcelium> vcs, vcsmx, riviera, and/or xcelium.
-synthesis <verilog|vhdl> Set the synthesis target type. Valid values are verilog or
vhdl.
Description This command generates the files for a specified Platform Designer IP in the opened project. --
synthesis <value>: Specify the synthesis target type. Valid values are verilog or vhdl. This is not a
required option. When not specified, it defaults to verilog. --simulation <value>: Specify the
simulation target type. Valid values are verilog or vhdl. This is not a required option. When not
specified, no simulation files are generated. --simulator <value>: Specify the simulator target type.
Valid values are modelsim, vcs, vcsmx, riviera, xcelium. This is not a required option. When not
specified, simulation files for all simulators are generated. --clear_ip_generation_dirs: Specify
whether pre-existing generation directories should be cleared before generation. This is not a required
option. When not specified, the generation directories will not be cleared. --clean: Specify whether
pre-existing generation directories should be cleared before generation. This option is a short version
of the clear_ip_generation_dirs option. This is not a required option. When not specified, the
generation directories will not be cleared.
Example Usage # generate the specified Platform Designer IP in the project with the specified targets.
Clear any pre-existing
# generation directories before performing the generation.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
204
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_open my_project
generate_ip_file my_ip_file.qsys -synthesis verilog -simulation verilog -simulator modelsim -
clear_ip_generation_dirs
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-simulation <verilog|vhdl> Set the simulation target type. Valid values are verilog or
vhdl.
-simulator <modelsim|vcs|vcsmx| Set the simulator target type. Valid values are modelsim,
riviera|xcelium> vcs, vcsmx, riviera, and/or xcelium.
-synthesis <verilog|vhdl> Set the synthesis target type. Valid values are verilog or
vhdl.
Description This command generates the files for all Platform Designer IP in the opened project. If no option is
specified, this command generates the verilog synthesis target only. --synthesis <value>: Specify the
synthesis target type. Valid values are verilog or vhdl. This is not a required option. When not
specified, it defaults to verilog. --simulation <value>: Specify the simulation target type. Valid values
are verilog or vhdl. This is not a required option. When not specified, no simulation files are
generated. --simulator <value>: Specify the simulator target type. Valid values are modelsim, vcs,
vcsmx, riviera, and/or xcelium. This is not a required option. When not specified, simulation files for
all simulators are generated. --clear_ip_generation_dirs: Specify whether pre-existing generation
directories should be cleared before generation. This is not a required option. When not specified, the
generation directories will not be cleared. --clean: Specify whether pre-existing generation directories
should be cleared before generation. This option is a short version of the clear_ip_generation_dirs
option. This is not a required option. When not specified, the generation directories will not be
cleared. --parallel <on,off>: Specify whether to allow parallel IP generation. When this is on, parallel
processing will be enable if project or global Quartus setting is enabled. When this setting is off,
parallel is disabled regardless of project or global Quartus settings.
Example Usage # generate all the Platform Designer IP in the project with the specified targets. Clear
any pre-existing
# generation directories before performing the generation.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
205
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_open my_project
generate_project_ip_files -synthesis verilog -simulation verilog -simulator modelsim -
clear_ip_generation_dirs
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Description This command returns a Tcl list containing the full path of the Platform Designer IP files (.qsys or .ip)
found in the opened project.
Example Usage
project_open my_project
get_project_ip_files
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
3.1.17. ::quartus::iptclgen
The following table displays information for the ::quartus::iptclgen Tcl package:
Tcl Package and Version ::quartus::iptclgen 1.0
Description This package contains the set of Tcl functions for generating Memory IP.
qpro
qpro_sh
quartus
quartus_cdb
quartus_sh
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
206
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the compute_pll Tcl command:
Tcl Package and Belongs to ::quartus::iptclgen on page 206
Version
Description Parses the HDL file specified and saves output to the file name specified.
Example Usage compute_pll -family "stratix iii" -pll_type "fast_pll" -input_freq 100 -output_freqs "100,
200, 333"
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
207
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-result_dir <result_dir> result directory for .vho file. Must already exist
Description Creates a temporary project in the temporary directory, creates the simgen model and copies the
model to result_dir.
The following table displays information for the parse_hdl Tcl command:
Tcl Package and Belongs to ::quartus::iptclgen on page 206
Version
Description Parses the HDL file specified and saves output to the file name specified.
Example Usage parse_hdl -inhdl_files rldram_dev.v -core_params "USE_CLK, STRATIXIII" -outdir_name "/project/
hdl"
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
208
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the parse_tcl Tcl command:
Tcl Package and Belongs to ::quartus::iptclgen on page 206
Version
Description Parses the HDL file specified and saves output to the file name specified.
Example Usage parse_tcl -intcl_files rldram_dev.v -core_params "USE_CLK, STRATIXIII" -outdir_name "/project/
tcl"
3.1.18. ::quartus::jtag
The following table displays information for the ::quartus::jtag Tcl package:
Tcl Package and Version ::quartus::jtag 1.0
Description This package contains the set of Tcl functions for controlling the JTAG chain using Intel
programming hardware.
quartus_stp
quartus_stp_tcl
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
209
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the close_device Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
The following table displays information for the device_dr_shift Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
210
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-dr_value <data register value> Value of string operand type in either default binary or
hexadecimal format to be written into the data register in
the JTAG tap controller of the open device
-length <data register length> Length of the data register in the JTAG tap controller in the
open device
Description Writes the specified value into the data register of the JTAG tap controller of the open device. Returns
the captured data register value. The captured value return can be disabled to improve the JTAG
communication speed by packing multiple IR or DR scans together. The value is specified using either
a binary string or a hexadecimal string. The bit on the left most side is the first bit shifted in. For
example, using binary string "010001", the first bit shifted into the dr register is 1; the last bit is 0.
The same string can be represented in hexadecimal as "11". The device must be locked before you
can perform this operation.
Example Usage # List all available programming hardware, and select the USB-Blaster.
# (Note: this example assumes only one USB-Blaster is connected.)
puts "Programming Hardware:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
211
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The length of the value string specified does not
match the length parameter specified.
The following table displays information for the device_ir_shift Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
-ir_value <instruction register Value to be written into the instruction register in the JTAG
value> tap controller of the open device. Operand must be of a TCL
numerical type such as decimal (10), hexadecimal (0xa), or
octal number (012)
Description Writes the specified value into the instruction register of the JTAG tap controller of the open device.
Returns the captured instruction register value. The captured value return can be disabled to improve
the JTAG communication speed by packing multiple IR or DR scans together. The instruction register
length is determined automatically by the Quartus Prime JTAG server. The device must be locked first
before this operation.
Example Usage # List all available programming hardware, and select the USB-Blaster.
# (Note: this example assumes only one USB-Blaster is connected.)
puts "Programming Hardware:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
212
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Close device
close_device
The following table displays information for the device_lock Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
-timeout <timeout> The amount of time in millisecond to wait for the access to
the device.
Description Obtain an exclusive JTAG communication to the device for the subsequent IR and DR shift operations.
The device must be locked before any instruction and/or data register shift operation. This should be
used as little time as possible as it denies the access of other applications to this chain. The
command, unlock, should be called as soon as possible to allow other applications to access the
device.
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
213
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-num_clocks <state cycle count> The number of times the Run_Test_Idle state is cycled
through. If not specified, this value is 1
Description Drive the JTAG controller into the Run_Test_Idle state for a number cycles specified with the -
num_clocks option. The device must be locked before you can perform this operation.
Example Usage # List all available programming hardware, and select the USB-Blaster.
# (Note: this example assumes only one USB-Blaster is connected.)
puts "Programming Hardware:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
214
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the device_unlock Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
215
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-dr_value <data register value> Value of string operand type in either default binary or
hexadecimal format to be written into the data register in
this instance
-length <data register length> Length of the data register in this instance
Description Writes the specified value into the data register of the JTAG tap controller of the open device. Returns
the captured data register value. The captured value return can be disabled to improve the JTAG
communication speed by packing multiple IR or DR scans together. The value is specified using either
a binary string or a hexadecimal string. The bit on the left most side is the first bit shifted in. For
example, using the binary string "010001", the first bit shifted into the dr register is 1; the last bit is
0. The same string can be represented in hexadecimal as "11". The device must be locked first, and
the target instance must be activated using the device_virtual_ir_shift command before this
operation. Moreover, the device should be locked before the virtual IR shift operation to prevent
another application from activating another instance.
Example Usage # List all available programming hardware, and select the USB-Blaster.
# (Note: this example assumes only one USB-Blaster is connected.)
puts "Programming Hardware:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
216
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Send SAMPLE instruction to IR, read captured IR for the sampling number.
# Capture the DR register for the current sampled value.
device_lock -timeout 10000
puts "Current LED Value (sample #[device_virtual_ir_shift -instance_index 0 -ir_value 1]):
[device_virtual_dr_shift -instance_index 0 -length 8 -value_in_hex]"
device_unlock
# Send FEED instruction to IR, read a two-digit hex string from the console,
# then send the new value to the DR register.
puts "\nType in 2 digits in hexadecimal to update the LED:"
gets stdin update_value
# Close device
close_device
TCL_ERROR 1 ERROR: The length of the value string specified does not
match the length parameter specified.
-ir_value <instruction register Value to be written into the instruction register in this
value> instance. Operand must be of a TCL numerical type such as
decimal (10), hexadecimal (0xa), or octal number (012)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
217
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Writes the specified value into the instruction register of the specified virtual JTAG instance in the
open device. Returns the captured instruction register value. You can disable the captured value
return to improve the JTAG communication speed by packing multiple IR or DR scans together. The
command also activates the target instance such that the consequent virtual DR shift operations are
applied to this instance before the device is unlocked. Before any virtual DR shift operation, this
command must be executed first to activate the instance. The device must be locked first before this
operation.
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Send SAMPLE instruction to IR, read captured IR for the sampling number.
# Capture the DR register for the current sampled value.
device_lock -timeout 10000
puts "Current LED Value (sample #[device_virtual_ir_shift -instance_index 0 -ir_value 1]):
[device_virtual_dr_shift -instance_index 0 -length 8 -value_in_hex]"
device_unlock
# Send FEED instruction to IR, read a two-digit hex string from the console,
# then send the new value to the DR register.
puts "\nType in 2 digits in hexadecimal to update the LED:"
gets stdin update_value
device_lock -timeout 10000
device_virtual_ir_shift -instance_index 0 -ir_value 2 -no_captured_ir_value
device_virtual_dr_shift -instance_index 0 -length 8 -dr_value $update_value -value_in_hex -
no_captured_dr_value
device_unlock
# Close device
close_device
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
218
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_device_names Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
-hardware_name <hardware name> The name of the programming hardware that connects to
the JTAG chain. The name can be obtained from command:
get_hardware_names.
Description Retrieves a list of names of the devices on the JTAG chain to which the specified programming
hardware is connected. The name of the device is in the following format: <number on circuit
board>: <JTAG ID code>: <device name>. For example, in the device name @1: 0x082000DD:
EP20K200C, @1 indicates that it is the first device on the circuit board, 0x082000DD is the JTAG ID
code for the device, and EP20K200C is the device name.
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
219
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_hardware_names Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
Description Retrieves a list of the names of the programming hardware attached to and configured for the JTAG
server. The hardware name is in the following format: <hardware type> [<port>]. For example, in
the hardware name USB-Blaster [USB-0], USB-Blaster is the name of the programming hardware,
and USB-0 is the name of the port to which the hardware is connected.
Example Usage # List all available programming hardware, and select the USB-Blaster.
# (Note: this example assumes only one USB-Blaster is connected.)
puts "Programming Hardware:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
The following table displays information for the open_device Tcl command:
Tcl Package and Belongs to ::quartus::jtag on page 209
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
220
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-device_name <device name> The name of the device on the JTAG chain. The name can
be obtained from command: get_device_names
-hardware_name <hardware name> The name of the programming hardware that connects to
the JTAG chain. The name can be obtained from command:
get_hardware_names
Description Initiate a shared JTAG communication with the device. The command, close_device, is called to end
the communication with the device. Only one device can be opened per process. Multiple devices can
be opened in multiple processes.
Example Usage # List all available programming hardwares, and select the USBBlaster.
# (Note: this example assumes only one USBBlaster connected.)
puts "Programming Hardwares:"
foreach hardware_name [get_hardware_names] {
puts $hardware_name
if { [string match "USB-Blaster*" $hardware_name] } {
set usbblaster_name $hardware_name
}
}
puts "\nSelect JTAG chain connected to $usbblaster_name.\n";
# List all devices on the chain, and select the first device on the chain.
puts "\nDevices on the JTAG chain:"
foreach device_name [get_device_names -hardware_name $usbblaster_name] {
puts $device_name
if { [string match "@1*" $device_name] } {
set test_device $device_name
}
}
puts "\nSelect device: $test_device.\n";
# Open device
open_device -hardware_name $usbblaster_name -device_name $test_device
# Close device
close_device
TCL_ERROR 1 ERROR: A device was opened. Only one device can be open
at a time within this process. Close previously opened
device first.
3.1.19. ::quartus::logic_analyzer_interface
The following table displays information for
the ::quartus::logic_analyzer_interface Tcl package:
Tcl Package and Version ::quartus::logic_analyzer_interface 1.0
Description This package contains the set of Tcl functions for querying and modifying the Logic Analyzer
Interface output pin state in an Intel device.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
221
3. TCL Commands and Packages
UG-20144 | 2021.12.13
quartus_stp
quartus_stp_tcl
3.1.19.1. begin_logic_analyzer_interface_control
(::quartus::logic_analyzer_interface)
-file_path <file path> Path of the Logic Analyzer Interface (.lai) file
-hardware_name <hardware name> Name of the hardware that connects to the JTAG chain
Description Starts the Logic Analyzer Interface control sequence to query the Logic Analyzer Interface output pin
state and change output pins state. The control sequence should be terminated with
end_logic_analyzer_interface_control. The hardware and device name can be obtained by using
get_hardware_names and get_device_names respectively from the jtag package.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
222
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-bank_index <bank index> Index of the bank on the mux to be used as the source of
the output pins
-bank_name <bank name> Name of the bank to be used as the source of the output
pins
-instance_name <instance name> Name of the Logic Analyzer Interface instance to change
Description Change the Logic Analyzer Interface output pin's source on the specified instance to use the specified
bank.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
223
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.19.3. end_logic_analyzer_interface_control
(::quartus::logic_analyzer_interface)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
224
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-instance_name <instance name> Name of the Logic Analyzer Interface instance to change
Description Query the device to get the current state of the output pins of the specified instance. The result is
either the bank name or "tristated".
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
225
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-instance_name <instance name> Name of the Logic Analyzer Interface instance to change
Description Tristate the output pins of the specified Logic Analyzer Interface instance.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
226
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.20. ::quartus::misc
The following table displays information for the ::quartus::misc Tcl package:
Tcl Package and Version ::quartus::misc 1.0
Description This package contains a set of Tcl functions for performing miscellaneous tasks.
hdb_debug
qacv
qpro
qpro_sh
quartus
quartus_cdb
quartus_drc
quartus_eda
quartus_fit
quartus_ipc
quartus_ipd
quartus_ipgenerate
quartus_map
quartus_sh
quartus_si
quartus_sim
quartus_sta
quartus_stp
The following table displays information for the checksum Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
-algorithm <crc32|adler32> Option to specify the checksum algorithm. Uses the CRC-32
algorithm by default.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
227
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns the checksum value in hexadecimal format based on the specified algorithm which defaults to
crc32.
TCL_ERROR 1 ERROR: Can't read file: <string>. Make sure the file exists
and is not a directory, and you have permission to read the
file.
Description Disables natural bus naming. You may choose to disable natural bus naming to string match patterns
such as "in\[024\]". In this example, you are string matching the names "in0", "in2", and "in4". Note
that if you disable natural bus naming, then square brackets must be escaped twice (\\\[ or \\\]) so
that the strings are interpreted as bus names during a string match, such as: set bus_name "address
\[0\]" string match [escape_brackets $bus_name] $bus_name The "escape_brackets" command
escapes "address\[0\]" into "address\\\[0\\\]". To enable natural bus naming again, type
"enable_natural_bus_naming". For more information about natural bus naming, type
"enable_natural_bus_naming -h".
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
228
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Enables natural bus naming so that square brackets for bus names do not have to be escaped to
prevent Tcl from interpreting them as sub-commands. 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. Many Quartus Prime
Tcl commands allow bus names in their arguments, such as: set_location_assignment -to address[10]
Pin_M20 If natural bus naming is enabled, you can just use address[10] instead of having to excape
the square brackets into address\[10\]. There are also Quartus Prime Tcl commands that take Tcl
string match patterns in their arguments, such as: get_all_instance_assignments -name location -to
address[10] Since Tcl string matching take string patterns containing special characters from the set
"*?\[]" as values, address[10] would be interpreted incorrectly. By enabling natural bus naming,
these Tcl commands will automatically detect address[10] as a bus name so that you don't have to
doubly escape the brackets into address\\\[10\\\]. To disable natural bus naming, type
"disable_natural_bus_naming". For more information on the effects of disabling natural bus naming,
type "disable_natural_bus_naming -h".
The following table displays information for the escape_brackets Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Escapes square brackets in bus name patterns for use in string matching. Also escapes the escape
character; for example, the string "\" is escaped into "\\". Note that natural bus naming is supported
by default. This means that bus names, not bus name patterns, are automatically detected and do not
need to be escaped by using this command. 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. All other uses of square brackets must be escaped if you
do not intend to use the brackets as part of a string pattern in a string match. For example, the bus
name pattern "a\[0-2\]" must be escaped using this "escape_brackets" command since the "0-2"
does not satisfy the <bus index> requirement to be a bus name. Many Quartus Prime Tcl commands
allow string matching in option arguments. A common error is using bus name patterns in these
arguments, such as: address\[0-2\] Square brackets for bus name patterns must already be preceded
by an escape character (\[ or \]) to prevent Tcl from interpreting them as sub-commands. String
matching, however, also uses square brackets to match any character between the brackets. The
previous example, when used as a string match pattern, searches for the string patterns address0,
address1, and address2. It does not search for address[0], address[1], and address[2]. Therefore, for
arguments that support string matching, square brackets must be escaped twice (\\\[ or \\\]) so that
the strings are interpreted as bus name patterns. For example, to search for address[0], address[0],
and address[2], type the following string match pattern: address\\\[\[0-2\]\\\] or, equivalently,
"address[escape_brackets \[]\[0-2\][escape_brackets \]]" Quartus Prime Tcl commands do not
convert bus name patterns automatically, since they cannot determine if the string is intended as a
bus name pattern or a regular string match pattern. Therefore, "escape_brackets" is provided for your
convenience. You may choose to disable natural bus naming in order to string match patterns such as
"in\[024\]". In this example, you are string matching the names "in0", "in2", and "in4". To disable
natural bus naming, type "disable_natural_bus_naming". Note that if you disable natural bus naming,
then square brackets must be escaped twice (\\\[ or \\\]) so that the strings are interpreted as bus
names during a string match, such as: set bus_name "address\[0\]" string match [escape_brackets
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
229
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<collection> Collection
<body> Body
Description Accesses each element of a collection. Some Tcl commands return a collection. The following table
shows examples of commands that return a collection: Tcl package Tcl commands (returning a
collection) -------------------------- ---------------------------------------- ::quartus::project
get_all_quartus_defaults get_all_global_assignments get_all_instance_assignments
get_all_parameters get_names assignment_group (only for the "-get_members" and "-
get_exceptions" options) ::quartus::chip_editor get_nodes get_iports get_oports The command is
used in the following format: foreach_in_collection <variable name> <collection> { # This is the
body of "foreach_in_collection" ... } Unlike a Tcl list, a collection is a container specific to the Quartus
II software, whose elements can be accessed by using the "foreach_in_collection" command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
230
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
231
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<collection> Collection
Description Returns the size of a collection. Unlike a Tcl list, a collection is a container specific to the Quartus
Prime software, whose elements can be accessed by using the "foreach_in_collection" command.
Description Returns information about the system environment depending on the options specified.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
232
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Multiple options used. Choose only one option for
this command.
The following table displays information for the get_message_count Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Get a count of messages of a specific message type. The message type can be "info", "warning",
"critical_warning", or "error".
The following table displays information for the init_tk Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Initializes a Tk window. If you are using Tk functionality in Tcl, you must run this command first
before running any Tcl scripts.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
233
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Add widgets
button .top.hello -text Hello -command {puts stdout "Hello, World!"}
pack .top.hello -padx 20 -pady 10
The following table displays information for the load Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Loads machine code and initializes new commands. This command works exactly like Tcl's native
"load" command.
The following table displays information for the load_package Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
-version <version number> Option to specify the Quartus Prime Tcl package version to
load
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
234
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Loads the specified Quartus Prime Tcl package with the specified version number. If you do not specify
the "-version" option, the latest version is loaded by default. The Quartus Prime Tcl package names
have the "::quartus::" prefix, such as "::quartus::project". For convenience, you can omit the
"::quartus::" prefix when you use the <package name> argument. This command is similar to the
"package require" command. The advantage of using "load_package" is that you can alternate freely
between different versions of the same package. For example, if you loaded version 2.0, and now
want to load version 1.0, you can type: "load_package -version 1.0 <package name>".
The following table displays information for the post_message Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Displays messages and sub-messages of the specified type. The message type can be "info",
"warning", "critical_warning", or "error". If you do not use the -type option, the default message type
is "info". The "extra_info" type is deprecated. Messages with this type will not be displayed. Use the
"info" type instead. Use the -submsgs option to group messages indented under a message. The -
submsgs option posts each string in a Tcl list of strings as a sub-message. The sub-messages have
the same message type as the main message.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
235
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the qerror Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
The following table displays information for the qexec Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
236
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<command> Command
Description Runs the specified shell command from within a Tcl shell or script. Usage for this command is as
follows: qexec "<command>"
The following table displays information for the qexit Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Description Exits the Quartus Prime software. The Quartus Prime Tcl command "qexit" is equivalent to the Tcl
command "exit". When used with a particular option, this command exits the Quartus Prime software
with the corresponding Quartus Prime exit code. For example, typing "qexit -success" is equivalent to
typing "exit 0". When the "-success" option is specified, the corresponding Quartus Prime exit code is
"0". If no option is specified, the default exit code is the same as for the "-success" option.
qexit -success
qexit -error
The following table displays information for the record_tcl_cmd Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
237
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the stopwatch Tcl command:
Tcl Package and Belongs to ::quartus::misc on page 227
Version
3.1.21. ::quartus::names
The following table displays information for the ::quartus::names Tcl package:
Tcl Package and Version ::quartus::names 1.0
qpro_sh
quartus_asm
quartus_cdb
quartus_eda
quartus_fit
quartus_map
quartus_pow
quartus_sh
quartus_sta
quartus_syn
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
238
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_assignment Tcl command:
Tcl Package and Belongs to ::quartus::names on page 238
Version
-dict Indicates this command should return it's result as a Tcl dict
object.
-to <ASSIGNMENT_TO> The node to retrieve the assignment value from (omitting
this will retrieve the global assignment value, if any).
Description Gets the assignment's value. If -to is specified, tries to get the assignment value on the given node,
as long as the assignment targeted the node using it's -to field. If -to is not specified, the global value
is returned (if any). If the assignment is not found, a Tcl error is produced. If the assignment is found
and the -dict option is given, a Tcl dict object is returned with the assignment 'name' (the given
input), and the 'value' retrieved from the found assignment. In addition, if the assignment has a 'to'
or 'from' field, those fields will also exist in the returned dict.
The following table displays information for the set_assignment Tcl command:
Tcl Package and Belongs to ::quartus::names on page 238
Version
Description Sets the assignment to the given value. If -to is specified, tries to set the assignment value to the
given node. If -to is not specified, this applies to global assignments.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
239
3. TCL Commands and Packages
UG-20144 | 2021.12.13
3.1.22. ::quartus::periph
The following table displays information for the ::quartus::periph Tcl package:
Tcl Package and Version ::quartus::periph 1.0
Description This package contains the set of Tcl functions for interacting with the Interface Planner
plans.
quartus_fit
The following table displays information for the periph::check_plan Tcl command:
Tcl Package and Belongs to ::quartus::periph on page 240
Version
blueprint::initialize
periph::update_plan
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
240
3. TCL Commands and Packages
UG-20144 | 2021.12.13
periph::check_plan
project_close
Description Gets information about the specified cell (referenced by cell ID). You can obtain cell using the
periph::get_cells Tcl command.
blueprint::initialize
periph::update_plan
blueprint::shutdown
project_close
TCL_ERROR 1 ERROR: <string> cell IDs were expected but <string> were
supplied
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
241
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the periph::get_cells Tcl command:
Tcl Package and Belongs to ::quartus::periph on page 240
Version
Description Returns a list of cells IDs in the design. All cell names in the collection match the specified pattern.
Wildcards can be used to select multiple cells at once. When you use the wildcard matching, use pipe
characters to separate one hierarchy level from the next. They are treated as special characters and
are taken into account when string matching with wildcards is performed. When this matching scheme
is enabled, the specified pattern is matched against absolute cell names: the names that include the
entire hierarchical path. A full cell name can contain multiple pipe characters in it to reflect the
hierarchy. All hierarchy levels in the pattern are matched level by level. Any included wildcards refer
to only one hierarchical level. For example, "*" and "*|*" produce different collections since they refer
to the highest hierarchical level and second highest hierarchical level respectively.
blueprint::initialize
periph::update_plan
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
242
3. TCL Commands and Packages
UG-20144 | 2021.12.13
<location_id> location id
Description Gets information about the specified location (referenced by location ID). You can obtain location
using the periph::get_locations Tcl command or using the periph::get_cell_info -location Tcl command
blueprint::initialize
periph::update_plan
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
243
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: <string> cell IDs were expected but <string> were
supplied
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
244
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-read_settings_files <on|off> Option to identify that settings files should be read from
disk
Description Initialize the Interface Planner planning engine. Initialization consists of loading all required databases
from disk for the design and device. Once initialization is complete, the constraints have not yet been
applied and must be done before placement can begin. After the assignments have been created,
they can be applied to the project by running the plan::update_platform Tcl command.
blueprint::initialize
periph::update_plan
blueprint::shutdown
project_close
blueprint::initialize
periph::update_plan
periph::place_cells -unplaced_cells
periph::save_floorplan -filename onewire_blueprint_floorplan.plan
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
245
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_close
blueprint::initialize
periph::update_plan
periph::place_cells -unplaced_cells
periph::check_plan
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
246
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: <string> cell IDs were expected but <string> were
supplied
The following table displays information for the periph::report_all Tcl command:
Tcl Package and Belongs to ::quartus::periph on page 240
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
247
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description Creates a report of all the locations a particular cell can be placed and the reasons it cannot be placed
there
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
248
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-name <name> Filter the list of placed cells specifying a name. Wildcards
are supported.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-type <type> Filter the list of placed cells specifying a list of types
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description Show the signals that are using low-skew routing networks (clock networks) in the device. If
applicable, also show any signals that were considered for automatic clock network promotion, but
were not promoted.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
249
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
250
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Description Creates a report of the locations for the requested type in the periphery
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
251
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the periph::reset_plan Tcl command:
Tcl Package and Belongs to ::quartus::periph on page 240
Version
Description Reverts the current design to be unplaced and without assignments applied
blueprint::initialize
periph::update_plan
periph::reset_plan
blueprint::shutdown
project_close
Description Write the Interface Planner floorplan that can be reloaded in Interface Planner
blueprint::initialize
periph::update_plan
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
252
3. TCL Commands and Packages
UG-20144 | 2021.12.13
blueprint::initialize
periph::update_plan
blueprint::shutdown
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
253
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Removes the placement from the specified cells. Any constraints for the cells remain, but the cell no
longer has a placement.
blueprint::initialize
periph::update_plan
periph::unplace_cells -placed_cells
periph::check_plan
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
254
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Update everything that needs updating in pdpw. This essentially sends a single TCL command to pdpw
to update everything as needed. Used in the TCL proc source wrapper only.
Description Applies all changes to constraints and reloads them into Interface Planner. After the platform has been
updated with the constraints, placement operations can be performed.
blueprint::initialize
periph::update_plan
blueprint::shutdown
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
255
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the periph::write_plan Tcl command:
Tcl Package and Belongs to ::quartus::periph on page 240
Version
blueprint::initialize
periph::update_plan
periph::place_cells -unplaced_cells
periph::check_plan
project_close
3.1.23. ::quartus::pfg
The following table displays information for the ::quartus::pfg Tcl package:
Tcl Package and Version ::quartus::pfg 1.0
Description This package contains the set of Tcl functions for using the Programming File Generator
(PFG).
quartus_pfg
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
256
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the test Tcl command:
Tcl Package and Belongs to ::quartus::pfg on page 256
Version
3.1.24. ::quartus::project
The following table displays information for the ::quartus::project Tcl package:
Tcl Package and Version ::quartus::project 7.0
Description This package contains the set of Tcl functions for making project-wide assignments. In
versions before 4.0 of this package, the full path of the source file assignment was returned
when you accessed the assignment through the "get_global_assignment" or
"get_all_global_assignments" command. In version 4.0 of this package, the actual value of
the source file assignment stored in the Quartus Prime Settings File (.qsf) is returned. To
get the resolved full path of the file, use the "resolve_file_path" command. For more
information about resolving file names and view an example, type "resolve_file_path -
long_help". In version 5.0 of this package, two new Tcl commands "get_all_assignments"
and "get_assignment_info" have been introduced to replace the following commands:
get_all_quartus_defaults get_all_global_assignments get_all_instance_assignments
get_all_parameters These two new commands simplify the interface to retrieve information
about Quartus Prime Settings File (.qsf) and Quartus Prime Default Settings File (.qdf)
assignments. In addition, the new "assignment_group" command replaces the deprecated
"timegroup" command. In version 6.0, all Tcl commands designed to process Timing
Analyzer assignments have been moved to the ::quartus::timing_assignment package.
hdb_debug
qpro_sh
quartus_asm
quartus_bpps
quartus_cdb
quartus_design
quartus_eda
quartus_fit
quartus_idb
quartus_ipd
quartus_ipgenerate
quartus_map
quartus_sh
quartus_si
quartus_sim
quartus_sta
quartus_stp
quartus_syn
quartus_tlg
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
257
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the assignment_group Tcl command:
Tcl Package and Belongs to ::quartus::project on page 0
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
258
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Adds, removes, gets members of, or gets exceptions to an assignment group. The
"assignment_group" command replaces the deprecated "timegroup" command. An assignment group
is a custom group of registers and pins. You can use the "-add_member" option to specify register or
pin names you want to include in the assignment group. You can use the "-add_exception" option to
specify names you want to exclude from the assignment group. You can specify the names using
wildcards, that is, using "?" or "*". For example, to add all registers and pins that start with a "b"
except those that start with "b|c|" to a particular assignment group named "group_b", type:
assignment_group "group_b" -add_member "b*" -add_exception "b|c|*" To remove members or
exceptions from a assignment group, use the "-remove_member" or "-remove_exception" options
respectively. The "-get_members" option returns a collection of members in the assignment group.
The "-get_exceptions" option returns a collection of exceptions to the assignment group. Each
element of the collection is a list in the following format: { {Assignment group name} {<Assignment
name>} {<Register or pin name>} } In lists containing members, <Assignment name> is always
"ASSIGNMENT_GROUP_MEMBER". In lists containing exceptions, <Assignment name> is always
"ASSIGNMENT_GROUP_EXCEPTION". To disable assignments for an entire group, use the "-disable"
option, for example: assignment_group "group_a" -disable To disable a particular assignment group
assignment, use the "-disable" option with the "-add_member" or "-add_exception" options, for
example: assignment_group "group_a" -add_member "m1" -disable assignment_group "group_a" -
add_exception "e1" -disable 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)
The "export_assignments" and "project_close" 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
259
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the create_base_clock Tcl command:
Tcl Package and Belongs to ::quartus::project on page 0
Version
Description Creates the base clock. The base clock is an absolute clock. The "-fmax" option can take the format:
<floating point time value><time unit> For example, if the fmax is 10.55ns, "10.55" is the <floating
point time value> and "ns" is the <time unit>. The following table displays possible time units: Time
Unit Description --------- -------------- s second(s) ms millisecond(s) us microsecond(s) ns
nanosecond(s) ps picosecond(s) fs femtosecond(s) Hz hertz KHz kilohertz MHz megahertz GHz
gigahertz If you specify the "-virtual" option, the base clock is not assigned to any node in the timing
netlist. You cannot specify the "-virtual" option and the "-target" option at the same time. For entity-
specific assignments, use the "-entity" option to force the assignment to specified entity. If you do not
specify the "-entity" option, the value for the FOCUS_ENTITY_NAME assignment is used. If the
FOCUS_ENTITY_NAME value is not found, the revision name is used. 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.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
260
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
261
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Creates a relative clock that derived from the absolute clock. The "-offset" option can take the format:
<floating point time value><time unit> For example, if the offset is 10.55ns, "10.55" is the <floating
point time value> and "ns" is the <time unit>. The following table displays possible time units: Time
Unit Description --------- -------------- s second(s) ms millisecond(s) us microsecond(s) ns
nanosecond(s) ps picosecond(s) fs femtosecond(s) The "-phase_shift" option takes an integer that
represents degrees of phase shift from the base clock period. For example, if a base clock has a
period of 10ns and clk2 is a relative clock derived from the base clock. A phase shift value of 45
applies a 45 degree phase shift to clk2, producing an offset of 1.25ns from the base clock. For a given
relative clock, you may specify a phase shift, an offset, or both. If both are specified, they are
additive. If you specify the "-virtual" option, the relative clock is not assigned to any node in the
timing netlist. You cannot specify the "-virtual" option and the "-target" option at the same time. For
entity-specific assignments, use the "-entity" option to force the assignment to specified entity. If you
do not specify the "-entity" option, the value for the FOCUS_ENTITY_NAME assignment is used. If the
FOCUS_ENTITY_NAME value is not found, the revision name is used. 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
262
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the create_revision Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
-based_on <revision_name> Revision name on which new revision bases its settings
-root_partition_qdb_file The Partition Database (.qdb) file for the root partition
<qdb_file>
Description Creates the specified revision. If the revision is not included in the current project, a new revision is
created in the project with default settings. If you specify the "-set_current" option, this command
sets the newly created revision as the current revision. If you specify the "-based_on" option, the
command creates a new revision in the project based on the settings of the based-on revision
specified by the option.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
263
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't create file: <string>. Make sure you have
permission to write to the specified file.
TCL_ERROR 1 ERROR: Can't remove file: <string>. Make sure the file is
not read-only and you have permission to write to the
specified file.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the delete_revision Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Deletes the specified revision from the current project. The corresponding <revision name>.qsf file is
deleted as well.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
264
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Iterates through the specified Tcl list of Tcl commands and executes each command sequentially in
batch mode. In batch mode, Tcl commands that set Quartus Prime Settings File (.qsf) assignments
are optimized to prevent them from repeatedly write-locking and write-unlocking the QSF during
consecutive calls, thereby slowing down the execution. Currently, only the following commands are
supported: assignment_group remove_all_global_assignments remove_all_instance_assignments
remove_all_parameters set_global_assignment set_instance_assignment set_io_assignment
set_location_assignment set_parameter set_power_file_assignment
The following table displays information for the export_assignments Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Exports assignments for the current revision to the Quartus Prime Settings File (.qsf). Assignments
created or modified during an open project 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.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
265
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: Can't write settings file *.qsf. Make sure the *.qsf
file is writeable.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-module <all|map|fit|tan|asm|eda| Option to filter based on the specified flow module. Defaults
drc|generic> to all.
Description Returns a filtered output list of all available, matching assignment names. The module option takes
one of the following values: Module Description -------- ------------------------------------- map
Analysis and Synthesis assignment names fit Fitter assignment names asm Assembler assignment
names eda EDA Netlist Writer assignment names drc Design Assistant assignment names generic
Other assignment names not included in any of the above flow modules all All assignment names
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
266
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <source> Source name (string pattern is matched using Tcl string
matching)
-name <name> Assignment name (string pattern is matched using Tcl string
matching)
-to <destination> Destination name (string pattern is matched using Tcl string
matching)
Description Returns a collection of all matching global, instance, parameter, or default assignment ids. To iterate
through each assignment id in this collection, use the Tcl command "foreach_in_collection". To view
details for the assignment that is associated with the assignment id, use the Tcl command
"get_assignment_info". The "get_all_assignments" command is easier to use than the deprecated
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
267
3. TCL Commands and Packages
UG-20144 | 2021.12.13
commands listed in Table 1. * Table 1. The -type Option Value for -type Option Deprecated Tcl
command Description ------------ ---------------------- ----------- default get_all_quartus_defaults
Returns only default assignments. global get_all_global_assignments Returns only global
assignments. instance get_all_instance_assignments Returns only instance assignments. parameter
get_all_parameters Returns only parameter assignments. 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_assignments -type instance -name LOCATION
-to a[0] # To match all indices of bus "a", type: get_all_assignments -type instance -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_assignments -type
instance 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 global,
instance, and parameter assignments found in the Quartus Prime Settings File (.qsf) and reads in the
default assignments found inside the Quartus Prime Default Settings File (.qdf). If you tagged data by
making assignments with the -tag option, then the information can be searched using the -tag option.
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, use the -section_id option. For
entity-specific assignments, use the "-entity" option to retrieve assignments from a specific 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.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
268
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
269
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-name <name> Assignment name (string pattern is matched using Tcl string
matching)
Description Returns a filtered output collection of all matching global assignment values. To access each element
of the 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_global_assignments" command. These two new commands simplify the interface to retrieve
information about Quartus Prime Settings File (.qsf) assignments. The "get_all_global_assignments"
command is still supported for backward compatibility. The "-name" option is not case sensitive. This
option can take string patterns containing special characters from the set "*?\[]" as the value. The
value is matched using Tcl string matching. This Tcl command reads the global assignments found in
the Quartus Prime Settings File (.qsf). This Tcl command filters the assignment data in the .qsf and
outputs the data based on the values given by the "-name" option. Each element of the collection is a
list with the following format: { {<Section Id>} {<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.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
270
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
271
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-name <name> Assignment name (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
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
272
3. TCL Commands and Packages
UG-20144 | 2021.12.13
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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
273
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_all_parameters Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
-name <name> Parameter name (string pattern is matched using Tcl string
matching)
Description Returns a filtered output collection of all matching parameter 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 ::quartus::project package, two new Tcl
commands "get_all_assignments" and "get_assignment_info" have been introduced to replace the
"get_all_parameters" command. These two new commands simplify the interface to retrieve
information about Quartus Prime Settings File (.qsf) assignments. The "get_all_parameters"
command is still supported for backward compatibility. The "-name" option is not case sensitive. The
"-to" option is case sensitive. If the "-to" argument is specified, the function returns the parameter
values for the current entity. The values are retrieved from the PARAMETERS section of the entity.
Otherwise, the function returns the project-wide default parameter values obtained from the
DEFAULT_PARAMETERS section. This Tcl command filters the parameter data found in the Quartus
Prime Settings File (.qsf) and outputs the data based on the values specified by the "-name" and "-to"
options. 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_parameters -name * -to a[0] # To match all indices of bus "a", type:
get_all_parameters -name * -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_parameters -name * -to "a[escape_brackets \[]\[0-2\][escape_brackets \]]" For more
information about escaping square brackets, type "escape_brackets -h". Each element of the
collection is a list with the following format: { {<Destination>} {<Parameter name>} {<Parameter
value>} {<Entity name>} {<Tag data>} } If you tagged data by making assignments with the -tag
option, then the information will be displayed in the <Tag data> field. Use the "-entity" option to
retrieve the parameter values 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.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
274
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-name <name> Assignment name (string pattern is matched using Tcl string
matching)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
275
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a filtered output collection of all matching default assignment values. To access each element
of the output collection, use the Tcl command "foreach_in_collection". To see example usage, type
"foreach_in_collection -long_help". In version 5.0 of ::quartus::project package, two new Tcl
commands "get_all_assignments" and "get_assignment_info" have been introduced to replace the
"get_all_quartus_defaults" command. These two new commands simplify the interface to retrieve
information about Quartus Prime Settings File (.qsf) assignments. The "get_all_quartus_defaults"
command is still supported for backward compatibility. The "-name" option is not case sensitive. This
option can take string patterns containing special characters from the set "*?\[]" as the value. The
value is matched using Tcl string matching. This Tcl command reads in the default assignments found
inside the Quartus Prime Default Settings File (.qdf). It filters the assignments data found inside
the .qdf and outputs the data based on the values specified by the "-name" option. Each element of
the collection is a list with the following format: { {<Section Id>} {<Assignment name>}
{<Assignment value>} } 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
## Using wildcards
set default_asgns_col [get_all_quartus_defaults -name *]
foreach_in_collection default $default_asgns_col {
set sect_id [lindex $default 0]
set name [lindex $default 1]
set value [lindex $default 2]
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
276
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-name <name> User option name (string pattern is matched using Tcl string
matching)
Description Returns a filtered output list of all available, matching user option names. If the "-name" option is not
specified, all available user option names are returned. Otherwise, only the matching user option
names are returned. The "-name" option is not case sensitive. This option can take string patterns
containing special characters from the set "*?\[]" as the value. The value is matched using Tcl string
matching.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
277
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-get_tcl_command Option to get the tcl command that sets the assignment
<asgn_id> Assignment id
Description Returns information for the assignment id based on the specified option. The assignment id is
obtained from the "get_all_assignments" Tcl command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
278
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
279
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns the name of the current revision for the specified project. If the project name is not specified,
the current project name is used.
Description Return the project's database version. This is the version of software that the database was created.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
280
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns the value of the global assignment. The "-name" option is not case sensitive. For entity-
specific assignments, use the "-entity" option to retrieve the assignment 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
281
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns the value of the instance assignment. The "-name" option is not case sensitive. The "-entity",
"-to", and "-from" options are case sensitive. For entity-specific assignments, use the "-entity" option
to retrieve the assignment 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.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
282
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Description Returns the value of a location assignment. The "-chip" option is not case sensitive. The "-to" option is
case sensitive.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
283
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the get_name_info Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Displays the specified type of information for the specified node name id. Type "get_names -
long_help" to view how to get a collection of node name IDs. If the "-observable_type" option is not
specified, the default value is "all". The specified observable type must have the same observable type
as specified in the "get_names" Tcl command which returned the currently specified node name id.
The value for "-observable_type" option can be one of the following: Observable Type Description
--------------- ----------------------------------- all Use post-Fitter information. If it is not available,
post-synthesis information is used. Otherwise, pre-synthesis information is used if it exists.
pre_synthesis Use pre-synthesis information. post_synthesis Use post-synthesis information.
post_fitter Use post-Fitter information. post_asm Use post-Assembler information. The post-
Assembler information is only supported for designs using the HardCopy II device family.
stp_pre_synthesis Use Signal Tap pre-synthesis information. The info type for the "-info" option can
be one of the following: Info Type Description -------------- -----------------------------------
parent_name_id The name id for the node's parent. base_name The node name, which consists of an
entity name and/or an instance name separated by a colon if necessary. entity_name The entity
name. entity_definition The entity definition. instance_name The instance name. full_path The full
hierarchy path name, which consists of entity name(s) and/or the instance name(s). This path name
excludes the current focus entity. If there is nothing shown, the name id is the current focus entity's
name id. short_full_path The short full hierarchy path name, which consists of the instance name(s).
This path name excludes the current focus entity. If nothing is shown, the name id is the current focus
entity's name id. node_type The node type, which can be one of the types supported by "get_names",
namely, "input", "output", "bidirectional", "register", "combinational", "hierarchy", "memory", or
"bus". If "pin" type was specified for "get_names" command, the node type shown here is expanded
to be "input", "output", or "bidirectional". Node type value of "qsf" indicates name originates from qsf
settings file. creator The creator of the node, which is either "user_entered" or "compiler_generated".
signaltapii If this node can be connected to a Signal Tap embedded logic analyzer, 1 is shown.
Otherwise, 0 is shown. file_location The source file location. For example, the source file location for
the entity chiptrip is "chiptrip.v". To get the full path to the source file, use the command
"resolve_file_path" which exists only in version 4.0 or later of ::quartus::project package. library
Library associated with the instance name. children Collection of all the children names of the
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
284
3. TCL Commands and Packages
UG-20144 | 2021.12.13
specified name. The children will include all the names in the specified hierarchy. parameters
Collection of parameters associated with the name. Each element of the collection is a triplet that
contains the name, value and the type of the parameter.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the get_names Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
285
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-entity <wildcard> Option to specify the entity to get names from hierarchies
instantiated by the entity
-filter <wildcard> Option to specify the node's full path name and/or wildcard
character(s)
Description Returns a filtered output collection of all matching node name IDs found in a compiled Quartus Prime
project. To access each element of the output collection, use the Tcl command "foreach_in_collection".
To see example usage, type "get_names -long_help" or "foreach_in_collection -long_help". If the "-
node_type" option is not specified, the default value is "all". Similarly, if the "-observable_type" option
is not specified, the default value is "all". The node type "pin" includes "input", "output", "bidir",
"assinged" and "unassigned". The node type "qsf" include names from qsf settings file. The node type
"all" includes all node types. The node type "all_reg" includes all node types and register post-fitting
The value for "-observable_type" option can be one of the following: Observable Type Description
--------------- ----------------------------------- all Use post-Fitter information. If it is not available,
post-Synthesis information is used. Otherwise, pre-synthesis information is used if it exists.
pre_synthesis Use pre-synthesis information. post_synthesis Use post-synthesis information.
post_fitter Use post-Fitter information. post_asm Use post-Assembler information. The post-
Assembler information is only supported for designs using the HardCopy II device family.
stp_pre_synthesis Use Signal Tap pre-synthesis information.
Example Usage # Search for a single post-Fitter pin with the name accel and
# make assignments
set accel_name_id [get_names -filter accel -node_type pin -observable_type post_fitter]
foreach_in_collection name_id $accel_name_id {
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
286
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: Illegal node type: <string>. Specify all, comb, reg,
pin, hierarchy, or bus.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the get_parameter Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Returns the value of the parameter. The "-name" option is not case sensitive. The "-to" option is case
sensitive. If the "-to" argument is specified, the function returns the parameter value for the current
entity. The value is retrieved from the PARAMETERS section of the entity. Otherwise, the function
returns the project-wide default parameter value obtained from the DEFAULT_PARAMETERS section.
Use the "-entity" option to retrieve the parameter 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.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
287
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
288
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a list of revisions included in the specified project. If the project name is not specified, the
current project name is used by default. The first element in the list of revisions is the current revision
and is the same as the return value for the "get_current_revision" command.
set_current_revision $original_revision
project_close
Description Returns the name of the current revision regardless of which option was specified.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
289
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the get_user_option Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Returns the user option value for the name specified by the "-name" option. To get a list of all
available user option names, use the "get_all_user_option_names" command.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
290
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Checks whether a project's database is compatible with current version of the software. Returns 1, if
the database is compatible; returns 0, otherwise. Mainly this check is for databases that are restored
from another version of the software
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
291
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the is_project_open Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Checks whether a project is currently open. Returns 1, if a project is currently open; returns 0,
otherwise.
The following table displays information for the project_archive Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
-use_file_set <file_set> Option to create the archive using the specified file set
Description Archives an open project and its related files into a Quartus Prime Archive File (.qar). The description
of operations is as follows: Option Description ------ ------------------------- use_file_set Creates the
archive using the specified file set. By default, the 'basic' file set is used. For more information about
file sets, type: quartus_sh --archive -list_file_sets all_revisions Archives all revisions. overwrite
Overwrites existing archive file. include_outputs Includes output files in archive. include_libraries
Includes related Megafunction and IP library files. version_compatible_database Includes version-
compatible database if supported.
Example Usage ## Default mode: Archive current revisions without output files or libraries
project_archive chiptrip.qar
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
292
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the project_clean Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
-current_version Only clean project files for the current Quartus version.
-revision <revision_name> Revision to clean (if omitted, all revisions of the open
project are cleaned). Revision name can contain wildcards
(i.e., '*').
Description Cleans database and compiler-generated output for the specified revision (or all revisions if no
revision is specified). Cleaning revisions removes database and other files generated by the Quartus
Prime software, including report and programming files. This command closes the currently open
project before cleaning. Specifically, this cleans all of the following files/folders (for all matching
revisions): <revision>.*.rpt <revision>.*.rpt.htm <revision>.*.rpt.htm_files <revision>.*.msf
<revision>.*.smsg <revision>.*.summary <revision>.jdi <revision>.pin <revision>.pof
<revision>.sof <revision>.done <revision>.sld (all revision files in the qdb and persona directories)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
293
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the project_close Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Closes an open project. The assignments created or modified during an open project are committed to
the Quartus Prime Settings File (.qsf) during a "project_close", unless you use the "-
dont_export_assignments" option.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
294
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the project_exists Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Checks whether a project exists. Returns 1, if a project exists; returns 0, otherwise.
The following table displays information for the project_new Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Creates and opens a new project with the specified project name. If the "-revision" option is not
specified, the project name is used to create the revision. 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.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
295
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: The -<string> option must also be used when you
use the -<string> option. Specify both options.
The following table displays information for the project_open Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Opens an existing project. To create a new project, use the project_new command. If the -revision
option is not specified, the project name is specified as the revision name. The project_open
command gives an error when the compilation database version is not compatible with the current
version of Quartus Prime software. You may specify the "-force" option to avoid the error and
overwrite the database.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
296
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the project_restore Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
297
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Restores a Quartus Prime Archive File (.qar) that contains the project and its related files. By default,
the archive is restored into the current directory. Use the "-destination" option to restore the files into
a new directory. By default, the command fails if the archive already contains files in the destination
directory. Use the "-overwrite" option to overwrite any existing files in the destination directory.
Example Usage ## Restore archive and expand files into current directory
project_restore chiptrip.qar
## or
project_restore chiptrip.qar -destination
Description Checks whether the specified revision exists. Returns 1, if revision exists; returns 0, otherwise.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
298
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-name <name> Assignment name (string pattern is matched using Tcl string
matching)
Description Removes all matching global assignments. The "-name" option is not case sensitive. This option can
take string patterns containing special characters from the set "*?\[]" as the value. The value is
matched using Tcl string matching. This Tcl command reads the global assignments found in the
Quartus Prime Settings File (.qsf). This Tcl command filters the assignments data found in the .qsf
and removes the data based on the values specified by the "-name" option. 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 For entity-specific assignments, use the "-entity" option to remove 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. Assignments removed 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.
# Using wildcards
remove_all_global_assignments -name SOURCE*
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
299
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
300
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-name <name> Assignment name (string pattern is matched using Tcl string
matching)
Description Removes all matching instance assignment values. 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: remove_all_instance_assignments -name LOCATION -to
a[0] # To match all indices of bus "a", type: remove_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:
remove_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 the instance assignments found in the Quartus Prime Settings File (.qsf)
and removes this data based on the values specified by the "-name", "-from", and "-to" options.
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 For entity-specific assignments, use the "-entity" option to remove 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. Assignments removed 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.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
301
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
-name <name> Parameter name (string pattern is matched using Tcl string
matching)
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
302
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Removes all matching parameters. The "-name" option is not case sensitive. The "-to" option is case
sensitive. If the "-to" argument is specified, the function removes the parameters from the current
entity. The parameters are removed from the PARAMETERS section of the entity. Otherwise, the
function removes the project-wide default parameters obtained from the DEFAULT_PARAMETERS
section. This Tcl command filters the parameter data found in the Quartus Prime Settings File (.qsf)
and removes the data based on the values specified by the "-name" and "-to" options. 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:
remove_all_parameters -name * -to a[0] # To match all indices of bus "a", type:
remove_all_parameters -name * -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: remove_all_parameters -name * -to "a[escape_brackets \[]\[0-2\][escape_brackets \]]" For
more information about escaping square brackets, type "escape_brackets -h". Use the "-entity" option
to remove the parameters 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. The parameters removed 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
303
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the resolve_file_path Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Returns the resolved full path of the specified file name. If the file does not exist, the original file
name is returned. The Quartus Prime software resolves relative paths by searching for the file in the
following directories in the following order: 1) Project directory, which is the directory where the
Quartus Prime Settings File (.qsf) is found. 2) Project database directory, which is the "db" directory
found under the project directory. 3) Project library directories, which are the directories containing
the user-specified libraries that are used only by the current project. 4) User library directories, which
are the directories containing the user-specified libraries that are used by all Quartus Prime projects.
5) Quartus Prime library directory, which is the directory containing Quartus Prime libraries.
project_close
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
304
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the revision_exists Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Checks whether the revision exists for the specified project or currently open project. Returns 1, if the
revision exists; returns 0, otherwise.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
305
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets the specified revision name as the current revision. All assignments created or modified during
an open project will also be saved to the Quartus Prime Settings File (.qsf). In 8.1 or later versions of
Quartus Prime software, set_current_revision gives an error when the compilation database version is
not compatible with the current version of Quartus Prime software. You may specify the "-force"
option to avoid the error and overwrite the database.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Description Sets or removes a global assignment. 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 (from the ::quartus::project Tcl package): 1) export_assignments 2) project_close
(unless -dont_export_assignments is specified as an argument to project_close) You must save
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
306
3. TCL Commands and Packages
UG-20144 | 2021.12.13
assignment changes before you run Quartus Prime command-line executables. Note, however, that
the Tcl commands execute_flow and execute_module (from the ::quartus::flow Tcl package) call
"export_assignments" before they run command-line executables. For entity-specific assignments,
use the -entity option to force the assignment to 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. If the Quartus Prime Settings File contains a USER_LIBRARIES
assignment and you call set_global_assignment to set a SEARCH_PATH or USER_LIBRARIES
assignment, the existing USER_LIBRARIES assignment expands into one or more SEARCH_PATH
assignments. Note that values that begin with a dash ("-") should be enclosed in a backslash followed
by a quote. In the following example, -02 is enclosed by \" at the beginning and the end.
set_global_assignment -name ARM_CPP_COMMAND_LINE \"-O2\"
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
307
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Description Sets assignments that together implement the high-effort fmax optimization flow. This Tcl command
only sets the assignments but does not run a compilation.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
308
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets or removes an instance assignment. 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. For entity-
specific assignments, use the "-entity" option to force the assignment to 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.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
309
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
310
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_io_assignment Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Sets or removes an io assignment. 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
311
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
312
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets or removes a location assignment. Valid location assignments, and settings for those
assignments for your design are determined by the target device, package type, and pin count. To
explore possible assignments and settings for your design and device, in the Quartus Prime
Assignment Editor, specify Location for Assignment Name, and then click Browse in the Value column.
In the Location dialog box, explore assignable device resources in the Element list, and then use the
lists that appear (based on the element selected) to determine locations of resources that can be
specified as the value for the assignment. 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.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
313
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-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 ...}
-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 ...}
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"
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
314
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the set_parameter Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
315
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets or removes the specified parameter name. The "-name" option is not case sensitive. The "-to"
option is case sensitive. The parameters 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. set_parameter
can be used to overwrite the parameters in the top-level entity of the design. A warning will be given
if the parameter can not be applied. set_parameter assignments with "-entity" and "-to" are ignored
and a critical warning is given if they are used.
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
316
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets or removes a power input file assignment. Power input file assignments are specified using
multiple global assignments, and a single instance assignment as illustrated in the following example:
set_global_assignment -name POWER_INPUT_FILE_NAME "test.vcd" -section_id test.vcd
set_global_assignment -name POWER_INPUT_FILE_TYPE VCD -section_id test.vcd
set_global_assignment -name POWER_VCD_FILE_START_TIME "10 ns" -section_id test.vcd
set_global_assignment -name POWER_VCD_FILE_END_TIME "1000 ns" -section_id test.vcd
set_instance_assignment -name POWER_READ_INPUT_FILE test.vcd -to test_design The power input
file assignment serves as a wrapper for all of the above assignments. If the "-remove" setting is not
set, the set_power_file_assignment will also make the following assignment to enable the use of input
files: set_global_assignment -name POWER_USE_INPUT_FILES ON If you do not specify a "-
section_id", a new section identifier is created for the input file assignment. If a "-section_id" is
specified and it does not already exist, it is used as the new section identifier. If a "-section_id" is
specified and it does exist, the existing input file assignments are removed and a new input file
assignment is created using the given parameters and section identifier. If an entity name given by "-
to" is not specified, the input file assignment applys to the top level design entity. If the "-remove"
setting is used, the input file assignment given by the "-section_id", "-vcd_file", or "-saf_file" is
removed from the project. Assignments created or modified by using this Tcl command are saved to
the Quartus Prime Settings File (.qsf).
Example Usage ## Specify an input SAF file applied to the top level entity
## A default section will be created
set_power_file_assignment -saf_file test.saf
## Remove the input SAF file assignment using the file name
set_power_file_assignment -saf_file test.saf -remove
## Remove the input VCD file assignment using the section identifier
set_power_file_assignment -section_id test.vcd -remove
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
317
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: Exactly one of the following file name options must
be specified: -<string> or -<string>.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Description Sets the current revision to the value specified by the "-cmp", "-sim", or "-swb" option.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
318
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <from_pin_list> List of start or source node names and/or assignment group
names for timing path, for example, {node1 node2 ...}
-to <to_pin_list> List of end node names and/or assignment group names for
timing path, for example, {node1 node2 ...}
Description Specifies that the timing paths that start from the designated <from_pin_list> and end in the
designated <to_pin_list> are false paths. Nodes for the <from_pin_list> can be input pins, internal
nodes, clock pins, or assignment groups. Nodes for the <to_pin_list> can be output pins, internal
nodes, clock pins, or assignment groups. You must use either the "-from <from_pin_list>" or the "-to
<to_pin_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 timing cut
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_timing_cut_assignment -from "src_group" -to "dst_group" (2) set_timing_cut_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. 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 ## Set timing cut from any source points to dst1 and dst2
assignment_group "dst_group" -add_member dst1
assignment_group "dst_group" -add_member dst2
set_timing_cut_assignment -to "dst_group"
## or
assignment_group "src_group" -add_member *
assignment_group "dst_group" -add_member dst1
assignment_group "dst_group" -add_member dst2
set_timing_cut_assignment -from "src_group" -to "dst_group"
## Set timing cut from src1 and src2 to any end points
assignment_group "src_group" -add_member src1
assignment_group "src_group" -add_member src2
set_timing_cut_assignment -from "src_group"
## or
assignment_group "src_group" -add_member src1
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
319
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the set_user_option Tcl command:
Tcl Package and Belongs to ::quartus::project on page 257
Version
Description Sets the user option value for the name specified by the "-name" option. The user option is written to
the quartus2.ini file. To get a list of all available user option names, use the
"get_all_user_option_names" command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
320
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Checks whether the assignment name has the specified trait. Returns 1, if the assignment name has
the trait; returns 0, otherwise.
The following table displays information for the timegroup Tcl command:
Tcl Package and Belongs to ::quartus::project on page 0
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
321
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Adds, removes, gets members of, or gets exceptions to a timegroup. A timegroup is a custom group
of registers and pins. You can use the "-add_member" option to specify register or pin names you
want to include in the timegroup. You can use the "-add_exception" option to specify names you want
to exclude from the timegroup. You can specify the names using wildcards, that is, using "?" or "*".
For example, to add all registers and pins that start with a "b" except those that start with "b|c|" to a
particular timegroup named "group_b", type: timegroup "group_b" -add_member "b*" -
add_exception "b|c|*" To remove members or exceptions from a timegroup, use the "-
remove_member" or "-remove_exception" options respectively. The "-get_members" option returns a
collection of members in the timegroup. The "-get_exceptions" option returns a collection of
exceptions to the timegroup. To access each element of the collection, use the Tcl command
"foreach_in_collection". To see example usage, type "timegroup -long_help" or "foreach_in_collection
-long_help". Specifying registers and pins in terms of a timegroup allows you to set timing constraints
easily. For example, to make a multicycle assignment from nodes "a1" and "a2" to nodes "b1", "b2",
and "b3", type the following: timegroup "group_a" -add_member [list "a1" "a2"] timegroup "group_b"
-add_member [list "b1" "b2" "b3"] set_multicycle_assignment -from "group_a" -to "group_b" 2 This
command sets a multicycle assignment from every member of "group_a" to every member of
"group_b". Quartus Prime timing analysis is optimized to use timegroups in handling timing
constraints. To disable timegroup assignments for the entire group, use the "-disable" option, for
example: timegroup "group_a" -disable To disable a particular timegroup assignment, use the "-
disable" option with the "-add_member" or "-add_exception" options, for example: timegroup
"group_a" -add_member "m1" -disable timegroup "group_a" -add_exception "e1" -disable
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.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
322
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find active revision name. Make sure there is
an open, active revision name.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
3.1.25. ::quartus::qshm
The following table displays information for the ::quartus::qshm Tcl package:
Tcl Package and Version ::quartus::qshm 1.0
qpro_sh
quartus_sh
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
323
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Connects a client with the provided name to a Quartus Prime hub and returns the key of the
dedicated server created by the hub for that client.
Example Usage ## Connect a client with name client1 to a Quarts Prime hub with hub key prefix
hub1
qshm_connect_to_quartus -name client1 -hub_key_prefix hub1 -project <project> -revision
<revision>
Description Disconnect a client with the specified name from the Quarts Prime it is connected to.
Example Usage ## Disconnect a client with name client1 from the Quarts Prime
qshm_disconnect_from_quartus -name client1
Description Dispose and reclaim resources by the client with the specified name.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
324
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns the key prefix for a Quartus Prime hub based on the specified configuration arguments.
Example Usage ## Create an SHM-based server type socket with the port name "trip"
qshm_get_hub_key_prefix -qroot_dir /a/b/c -version 16.1 -edition "Quartus Prime Pro"
Description Obtains the complete SHM key of the parent hub of the server that is connected to the client specified
by the name argument
Example Usage
The following table displays information for the qshm_obtain_client Tcl command:
Tcl Package and Belongs to ::quartus::qshm on page 323
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
325
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Creates and returns a client for the specified client name.
Example Usage ## Create an SHM-based client type socket with the name "client1"
qshm_obtain_client -name client1
The following table displays information for the qshm_send_request Tcl command:
Tcl Package and Belongs to ::quartus::qshm on page 323
Version
Description Sends the a request to the client with the specified name and waits to receive a response from the
dedicated server the client is connected to.
Example Usage ## Send a Tcl command to the client with the specified name. The context should
have been set to include the request_type=tcl key value pair.
qshm_send_request -name client1 -cmd "set x 5"
Description Sends the a server state request to the client with the specified name and waits to receive a response
from the state socket of the dedicated server the client is connected to.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
326
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage ## Send a server state command using the client with specified name.
qshm_send_server_state_query -name client1 -state_key device_family
The following table displays information for the qshm_set_context Tcl command:
Tcl Package and Belongs to ::quartus::qshm on page 323
Version
Syntax qshm_set_context [-h | -help] [-long_help] -key <key> -name <name> -value
<value>
Description Sets the a context key value pair for the client with the specified name.
Example Usage ## Set a key value pair request_type=tcl for the client with the specified name.
qshm_set_context -name client1 -key request_type -value tcl
3.1.26. ::quartus::report
The following table displays information for the ::quartus::report Tcl package:
Tcl Package and Version ::quartus::report 2.1
Description This package contains a set of Tcl functions for accessing and updating information in the
report database.
qacv
quartus_fit
quartus_ipgenerate
quartus_sim
quartus_stp
qpro
qpro_sh
quartus
quartus_cdb
quartus_drc
quartus_eda
quartus_map
quartus_sh
quartus_si
quartus_sta
quartus_syn
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
327
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the add_row_to_table Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description Adds the list of strings to the table as a row. Using the panel id provides faster data access than using
the panel name. Panel ids that you have cached may become outdated or invalid if the report gets
unloaded or reloaded. This error occurs after compilation or with calls to the "project_close",
"unload_report", and "load_report" commands. Panel names support wildcards. The table of content
portion of the UI Compilation Report window shows short panel names for better readability. However,
the panel name used by this command is the full panel name as shown in the right-hand side frame of
the UI Compilation Report window or the .rpt file of the corresponding command-line executable. For
example, the table of content shows the path "Analysis and Synthesis||Summary". However, the
corresponding full path used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis
Summary".
if {$id != -1} {
# If panel exists, add a row to it
add_row_to_table -id $id {{New Field} Yes No}
# Save the changes to the report database
save_report_database
} else {
# Otherwise print an error message
puts "Error: Table $panel does not exist."
}
unload_report
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
328
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
TCL_ERROR 1 ERROR: Can't access report panel. Use this command only
for report panels with rows or columns.
TCL_ERROR 1 ERROR: Value specified for <row> is not a valid Tcl list:
<string>. Specify <row> as a valid Tcl list.
Description Creates a new report panel with the specified name. If -table option is specified, a table is created. If
-folder option is specified, a folder is created. The name must be the full path to the new report panel,
such as "Fitter||My Table". If the specified panel is created successfully, the corresponding panel id is
returned. The table of contents portion of the Compilation Report window shows short panel names
for better readability. However, the panel name used by this command is the full panel name as
shown in the right-hand side frame of the Compilation Report window or the .rpt file of the
corresponding command-line executable. For example, the table of contents shows the path "Analysis
and Synthesis||Summary". However, the corresponding full path used by this Tcl command is
"Analysis and Synthesis||Analysis and Synthesis Summary".
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
329
3. TCL Commands and Packages
UG-20144 | 2021.12.13
unload_report
project_close
TCL_ERROR 1 ERROR: The master details object already has the master
table
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
330
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Deletes the report panel with the specified id or name. The panel can either be a report table or
report folder. Using the panel id provides faster data access than using the panel name. Panel ids that
you have cached may become outdated or invalid if the report is unloaded or reloaded. This error
occurs after compilation or with calls to the "project_close", "unload_report", and "load_report"
commands. Panel names support wildcards. The table of contents portion of the Compilation Report
window shows short panel names for better readability. However, the panel name used by this
command is the full panel name as shown in the right-hand side frame of the Compilation Report
window or the .rpt file of the corresponding command-line executable. For example, the table of
contents shows the path "Analysis and Synthesis||Summary". However, the corresponding full path
used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis Summary".
unload_report
project_close
TCL_ERROR 1 ERROR: Illegal panel id: <string>. Specify a legal panel id.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
331
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Gets the Fitter resource usage results. You must use one of the following options: "-alut", "-reg", "-
le", "-alm", "-lab", "-io_pin", "-mem_bit" or "-resource". If the above option is not "-resource", you
may also optionally use one of the following options: "-used", "-available" or "-percentage". Option "-
resource" takes resource name as parameter, which supports wildcards.
# Get total registers, logic elements, and DSP block 9-bit elements.
set registers [$cmd -reg]
set les [$cmd -le -used]
set io_pin [$cmd -io_pin -available]
set mem_bit [$cmd -mem_bit -percentage]
set dsp [$cmd -resource "DSP block 9*"]
puts "Registers usage: $registers"
puts "Total used logic elements: $les"
puts "Total available I/O pins: $io_pin"
puts "Total used memory bits in percentage: ${mem_bit}%"
puts "DSP block 9-bit elements: $dsp"
unload_report
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
332
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find panel: <string>. Make sure the project
was compiled by quartus_fit and the panel was not deleted.
Description Returns the number of columns for the specified panel. Using the panel id provides faster data access
than using the panel name. Panel ids that you have cached may become outdated or invalid if the
report is unloaded or reloaded. This error occurs after compilation or with calls to the "project_close",
"unload_report", and "load_report" commands. Panel names support wildcards. The table of contents
portion of the Compilation Report window shows short panel names for better readability. However,
the panel name used by this command is the full panel name as shown in the right-hand side frame of
the Compilation Report window or the .rpt file of the corresponding command-line executable. For
example, the table of contents shows the path "Analysis and Synthesis||Summary". However, the
corresponding full path used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis
Summary".
Example Usage ## Loop through a panel row and print out all its element information
load_package report
project_open chiptrip
load_report
unload_report
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
333
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find the top-level panel. Make sure the loaded
report is not empty. You can run a successful compilation to
rebuild the report.
TCL_ERROR 1 ERROR: Can't access report panel. Use this command only
for report panels with rows or columns.
The following table displays information for the get_number_of_rows Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description Returns the number of rows for the specified panel. Using the panel id provides faster data access
than using the panel name. Panel ids that you have cached may become outdated or invalid if the
report is unloaded or reloaded. This error occurs after compilation or with calls to the "project_close",
"unload_report", and "load_report" commands. Panel names support wildcards. The table of contents
portion of the Compilation Report window shows short panel names for better readability. However,
the panel name used by this command is the full panel name as shown in the right-hand side frame of
the Compilation Report window or the .rpt file of the corresponding command-line executable. For
example, the table of contents shows the path "Analysis and Synthesis||Summary". However, the
corresponding full path used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis
Summary".
Example Usage ## Loop through a panel and print out all its row information
load_package report
project_open chiptrip
load_report
unload_report
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
334
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find the top-level panel. Make sure the loaded
report is not empty. You can run a successful compilation to
rebuild the report.
TCL_ERROR 1 ERROR: Can't access report panel. Use this command only
for report panels with rows or columns.
Description Gets the column index of the specified panel column name. Column name refers to the specified name
in the header row. The column index is a non-negative integer for an existing column. The column
index is -1 if the column name is not found in the panel. Using the column index and panel id provides
faster data access than using column name and panel name. Column indices and panel ids that you
have cached may become outdated or invalid if the report is unloaded or reloaded. This error occurs
after compilation or with calls to the "project_close", "unload_report", and "load_report" commands.
Column and panel names support wildcards. The table of contents portion of the Compilation Report
window shows short panel names for better readability. However, the panel name used by this
command is the full panel name as shown in the right-hand side frame of the Compilation Report
window or the .rpt file of the corresponding command-line executable. For example, the table of
content shows the path "Analysis and Synthesis||Summary". However, the corresponding full path
used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis Summary".
# Output results
puts "$cname of clock: $clock"
puts "$cname of enable: $enable"
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
335
3. TCL Commands and Packages
UG-20144 | 2021.12.13
unload_report
project_close
Description Returns non-empty data for the specified row and column of the specified panel. If the data is empty
or if the row, column, or panel do not exist, an error will be generated. To properly handle the error,
make sure to catch the result as in the following example: if [catch {set data
[get_report_panel_data ...]} result] { puts "No data found" } else { puts "Got $data" } Using the
panel id and row and column indices provides faster data access than using panel, row, and column
names. Panel ids and row and column indices that you have cached may become outdated or invalid if
the report is unloaded or reloaded. This error occurs after compilation or with calls to the
"project_close", "unload_report", and "load_report" commands. Panel, row, and panel names support
wildcards. The table of contents portion of the Compilation Report window shows short panel names
for better readability. However, the panel name used by this command is the full panel name as
shown in the right-hand side frame of the Compilation Report window or the .rpt file of the
corresponding command-line executable. For example, the table of contents shows the path "Analysis
and Synthesis||Summary". However, the corresponding full path used by this Tcl command is
"Analysis and Synthesis||Analysis and Synthesis Summary".
unload_report
project_close
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
336
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't retrieve data for row and column number.
Specify a legal row and column number for the command
get_report_panel_data.
TCL_ERROR 1 ERROR: Can't access report panel. Use this command only
for report panels with rows or columns.
Description Gets the id of a panel with the specified name. The panel id is a non-negative integer for an existing
panel. If the specified panel cannot be found, the id is -1. Using the panel id provides faster data
access than using the panel name. You can use the "get_report_panel_id" command to check for the
existence of a panel.(Refer to the example under the "get_report_panel_id" command.) Panel ids that
you have cached may become outdated or invalid if the report is unloaded or reloaded. This error
occurs after compilation or with calls to the "project_close", "unload_report", and "load_report"
commands. Panel names support wildcards. The table of contents portion of the Compilation Report
window shows short panel names for better readability. However, the panel name used by this
command is the full panel name as shown in the right-hand side frame of the Compilation Report
window or the .rpt file of the corresponding command-line executable. For example, the table of
contents shows the path "Analysis and Synthesis||Summary". However, the corresponding full path
used by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis Summary".
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
337
3. TCL Commands and Packages
UG-20144 | 2021.12.13
if {$id != -1} {
# If panel exists, add a row to it
add_row_to_table -id $id {{New Field} Yes No}
# Save the changes to the report database
save_report_database
} else {
# Otherwise print an error message
puts "Error: Table $panel does not exist."
}
unload_report
project_close
Description Returns a list of panel names for the current report. The table of contents portion of the Compilation
Report window shows short panel names for better readability. However, each panel name returned by
this command is the full panel name as shown in the right-hand side frame of the Compilation Report
window or the .rpt file of the corresponding command-line executable. For example, the table of
contents shows the path "Analysis and Synthesis||Summary". However, the corresponding full path
returned by this Tcl command is "Analysis and Synthesis||Analysis and Synthesis Summary".
Example Usage ## Load report database and write Timing Analyzer Summary
## panel to file in HTML format
load_package report
project_open chiptrip
load_report
unload_report
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
338
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Reports data of the specified panel row. Using the panel id and row index provides faster data access
than using panel name and row name, respectively. Panel ids and row indices that you have cached
may become outdated or invalid if the report gets unloaded or reloaded. This error occurs after
compilation or with calls to the "project_close", "unload_report", and "load_report" commands. Panel
and row names support wildcards. The table of content portion of the UI Compilation Report window
shows short panel names for better readability. However, the panel name used by this command is
the full panel name as shown in the right-hand side frame of the UI Compilation Report window or
the .rpt file of the corresponding command-line executable. For example, the table of content shows
the path "Analysis and Synthesis||Summary". However, the corresponding full path used by this Tcl
command is "Analysis and Synthesis||Analysis and Synthesis Summary".
unload_report
project_close
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
339
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't access report panel. Use this command only
for report panels with rows or columns.
Description Gets the row index of the specified panel row name. Row name refers to the first element content of
the specified row. The row index is a non-negative integer for an existing row. Row index is -1 if the
row name is not found in the panel. Using the row index and panel id provides faster data access than
using row name and panel name. Row indices and panel ids that you have cached may become
outdated or invalid if the report is unloaded or reloaded. This error occurs after compilation or with
calls to the "project_close", "unload_report", and "load_report" commands. Row and panel names
support wildcards. The table of contents portion of the Compilation Report window shows short panel
names for better readability. However, the panel name used by this command is the full panel name
as shown in the right-hand side frame of the Compilation Report window or the .rpt file of the
corresponding command-line executable. For example, the table of contents shows the path "Analysis
and Synthesis||Summary". However, the corresponding full path used by this Tcl command is
"Analysis and Synthesis||Analysis and Synthesis Summary".
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
340
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Output results
puts "$pc_str: $pin_cnt"
puts "$iob_str: $io_bank"
unload_report
project_close
The following table displays information for the load_report Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description By default, loads the Compilation Report for the current revision or the specified revision name. If the
-simulator option is specified, loads the Simulation Report instead. After the report is loaded or
reloaded, the cached panel ids, and row and column indices may become outdated or invalid. Intel
recommends that you update them before using them.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
341
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
TCL_ERROR 1 ERROR: Can't load report data for revision name: <string>.
Make sure the report database exists for the specified
revision name.
TCL_ERROR 1 ERROR: Existing report was not unloaded. Ensure that your
load_report commands have matching unload_report
commands.
The following table displays information for the read_xml_report Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description Creates the current Compilation Report from the specified XML Report Database File (.xml).
load_package report
project_open $project_name
load_report
unload_report
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
342
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Saves the report database, including any new report panel.
unload_report
project_close
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
343
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the unload_report Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description Unloads the report for the current revision or the specified revision name. After the report is loaded or
reloaded, the cached panel ids, and row and column indices, may become outdated or invalid. Intel
recommends that you update them before using them.
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the write_report_panel Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Syntax write_report_panel [-h | -help] [-long_help] -file <output file name> [-html] [-id
<table_id> ] [-name <table_name> ] [-xml] [ <name> ]
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
344
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Writes data from the specified report panel to the specified output file. If the "-html" option is
specified, the output file is generated in HTML format. If the "-xml" option is specified, the output file
is generated in XML format. Otherwise, the output file is generated in ASCII format. Using the panel
id provides faster data access than using the panel name. Panel ids that you have cached may
become outdated or invalid if the report is unloaded or reloaded. This error occurs after compilation or
with calls to the "project_close", "unload_report", and "load_report" commands. Panel names support
wildcards. The table of contents portion of the Compilation Report window shows short panel names
for better readability. However, the panel name used by this command is the full panel name as
shown in the right-hand side frame of the Compilation Report window or the .rpt file of the
corresponding command-line executable. For example, the table of contents shows the path "Analysis
and Synthesis||Summary". However, the corresponding full path used by this Tcl command is
"Analysis and Synthesis||Analysis and Synthesis Summary".
Example Usage ## Load report database and write Timing Analyzer Summary
## panel to file in HTML format
load_package report
project_open chiptrip
load_report
unload_report
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
345
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Can't find the top-level panel. Make sure the loaded
report is not empty. You can run a successful compilation to
rebuild the report.
The following table displays information for the write_xml_report Tcl command:
Tcl Package and Belongs to ::quartus::report on page 327
Version
Description Writes the current Compilation Report or Simulation Report to the specified XML Report Database File
(.xml).
# Close project
project_close
3.1.27. ::quartus::sdc
The following table displays information for the ::quartus::sdc Tcl package:
Tcl Package and Version ::quartus::sdc 1.5
Description Synopsys Design Constraint (SDC) format is used to specify the design intent, including the
timing and area constraints of the design. The Timing Analyzer only implements the set of
SDC commands required to specify the timing constraints of the design. For area
constraints, the QSF file should be used. This package implements the SDC Spec Version
1.5 (June 2005). Any command in this package can be specified in a Timing Analyzer SDC
file.
quartus_sta
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
346
3. TCL Commands and Packages
UG-20144 | 2021.12.13
quartus_fit
The following table displays information for the all_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
347
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the all_inputs Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
The following table displays information for the all_outputs Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
348
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the all_registers Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
The following table displays information for the create_clock Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Defines a clock. If the -name option is not used, the clock name is the same as the first target in the
list or collection. The clock name is used to refer to the clock in other commands. The -period option
specifies the clock period. It is also possible to use this option to specify a frequency to define the
clock period. This can be done by using -period option followed by either <frequency>MHz or
"<frequency> MHz". However, this is a Timing Analyzer-only extension and makes the SDC syntax
non-standard. The -waveform option specifies the rising and falling edges (duty cycle) of the clock,
and is specified as a list of two time values: the first rising edge and the next falling edge. The rising
edge must be within the range [0, period]. The falling edge must be within one clock period of the
rising edge. The waveform defaults to (0, period/2). If a clock with the same name is already
assigned to a given target, the create_clock command will overwrite the existing clock. If a clock with
a different name exists on the given target, the create_clock command will be ignored unless the -add
option is used. The -add option can be used to assign multiple clocks to a pin or port. If the target of
the clock is internal (i.e. not an input port), the source latency is zero by default. If a clock is on a
path after another clock, then it blocks or overwrites the previous clock from that point forward. The
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
349
3. TCL Commands and Packages
UG-20144 | 2021.12.13
value of the targets is either a collection or a Tcl list of wildcards used to create a collection of the
appropriate type. The values used must follow standard Tcl or Timing Analyzer-extension substitution
rules. See the help for use_timing_analyzer_style_escaping for details.
Example Usage # Create a simple 10ns with clock with a 60% duty cycle
create_clock -period 10 -waveform {0 6} -name clk [get_ports clk]
# Two ways to use MHz to define clock period (Timing Analyzer only)
create_clock -period 250MHz -name clk250MHz [get_ports clk]
create_clock -period "250 MHz" -name clk250MHz [get_ports clk]
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
350
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Defines an internally generated clock. If -name is not specified, the clock name is the same as the
first target in the list or collection. The clock name is used to refer to the clock in other commands. If
a clock with the same name is already assigned to a given target, the create_generated_clock
command overwrites the existing clock. If a clock with a different name exists on the given target, the
create_generated_clock command is ignored unless the -add option is used. The -add option can be
used to assign multiple clocks to a pin or port, and is recommended be used with -master_clock
option. The source of the generated clock, specified by -source, is a port, pin, register, or net in the
design. All waveform modifications are relative to this point. If more than one clock feeds the source
node, the -master_clock option must be used to specify which clock to modify. The source latency of
the generated clock is based on the clock network of the generated clock, and not the clock network
of the node specified using -source. This latency is added to any source latency of the master clock. If
no target is specified, the clock is treated as a virtual clock. In that case, the source latency of the
generated clock will be equal to the source latency of the master clock, plus any added latency
specified with set_clock_latency. The -divide_by, -multiply_by, -invert, -duty_cycle, -edges, and -
edge_shift options modify the waveform relative to the waveform at the source node. Clock division
and multiplication, using -divide_by and -multiply_by, is performed relative to the first rising edge.
Clock division is based on edges in the master clock waveform, and scaled if the division is an odd
number. Use the -duty_cycle option to specify the new duty cycle for clock multiplication. Use the -
phase option to specify any phase shift relative to the new clock period. Use the -offset option to
specify an arbitrary offset or time shift. Use the -invert option to invert the generated waveform. The
-phase and -duty_cycle options may be specified as a decimal value (e.g. 22.5) or as a ratio of two
numbers (e.g. 45/2). The latter form may improve Timing Analyzer accuracy when detecting
relationships between related clocks. Clock generation can also be specified with the -edges and -
edge_shift options. The -edges option accepts a list of three numbers specifying the master clock
edges to use for the first rising edge, the next falling edge, and next rising edge. Edges of the master
clock are labeled according to the first rising edge (1), next falling edge (2), next rising edge (3), etc.
For example, a basic clock divider can be specified equivalently with -divide_by 2 or -edges {1 3 5}.
The -edge_shift option accepts a list of three time values, the amount to shift each of the three
edges. The value of the targets is either a collection or a Tcl list of wildcards used to create a
collection of the appropriate type. The values used must follow standard Tcl or Timing Analyzer-
extension substitution rules. See the help for use_timing_analyzer_style_escaping for details.
# Specify an inverted divide-by-2 clock relative to the output of the source clock
create_generated_clock -divide_by 2 -invert -source [get_ports clk] -name nclkdiv
[get_registers clkdiv]
# Create a divide-by-2 generated clock generated off the falling edge of the source clock
create_generated_clock -edges {2 4 6} -source [get_ports clk] -name clkfall_div
[get_registers clkfall_div]
# Create a virtual clock, and two generated clocks that derive from it.
# This makes the generated clocks related, so crossings between them are not asynchronous.
create_clock -period 10 -name virtual_base
create_generated_clock -master_clock virtual_base -divide_by 2 [get_ports clka]
create_generated_clock -master_clock virtual_base -divide_by 4 [get_ports clkb]
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
351
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the derive_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Creates a clock on sources of clock pins in the design that do not already have at least one clock
sourcing the clock pin. This command is equivalent to calling create_clock on each clock source in the
design that does not already have a clock assigned to it. See the help for create_clock for more
information. Intel does not recommend using this command during final sign-off analysis of a design.
derive_clocks should only be used early in the design phase when the clocks are not completely
known. When possible, create_clock and create_generated_clock should be used instead.
Example Usage # Automatically create a 10ns, 60% duty cycle clock on all
# unconstrained clock sources
derive_clocks -period 10 -waveform {0 6}
The following table displays information for the get_cells Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
352
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a collection of cells in the design. All cell names in the collection match the specified pattern.
Wildcards can be used to select multiple cells at once. There are three Tcl string matching schemes
available with this command: the default method, the -hierarchical option, and the -
compatibility_mode option. When you use the default matching scheme, use pipe characters to
separate one hierarchy level from the next. They are treated as special characters and are taken into
account when string matching with wildcards is performed. When this matching scheme is enabled,
the specified pattern is matched against absolute cell names: the names that include the entire
hierarchical path. A full cell name can contain multiple pipe characters in it to reflect the hierarchy. All
hierarchy levels in the pattern are matched level by level. Any included wildcards refer to only one
hierarchical level. For example, "*" and "*|*" produce different collections since they refer to the
highest hierarchical level and second highest hierarchical level respectively. When using the -
hierarchical matching scheme, pipe characters are treated as special characters and are taken into
account when string matching with wildcards is performed. This matching scheme forces the search to
proceed recursively down the hierarchy. The specified pattern is matched against the relative cell
names: the immediate names that do not include any of the hierarchy information. Note that a short
cell name cannot contain pipe characters in it. Any included wildcards are expanded to match the
relative cell names. The -compatibility_mode matching scheme uses simple Tcl string matching on
full, absolute cell names. Pipe characters are not treated as special characters when used with
wildcards. The default matching scheme returns cells whose names match the specified filter and also
cells automatically generated by the Quartus II software from these cells). Use -no_duplicates option
to not include duplicated cells. The filter for the collection is a Tcl list of wildcards, and must follow
standard Tcl or Timing Analyzer-extension substitution rules. See help for the
use_timing_analyzer_style_escaping command for details.
Example Usage # Find a cell called "reg" using case insensitive search
get_cells -nocase reg
# Create a collection of all cells whose names start with "reg"
get_cells reg*
# Create a collection of all cells on the highest hierarachical level
set mycollection [get_cells *]
# Create a collection of all cells in the design
# Output cell names.
foreach_in_collection cell $mycollection {
puts [get_cell_info -name $cell]
}
set fullcollection [get_cells -hierarchical *]
# Output cell IDs and names.
foreach_in_collection cell $fullcollection {
puts -nonewline $cell
puts -nonewline ": "
puts [get_cell_info -name $cell]
}
The following table displays information for the get_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
353
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-of_objects <object_collection> Returns all clocks that target (defined on) or drive
(determine data frequency of) the nodes in the collection.
Description Returns a collection of clocks in the design. Use a clock collection as the -from/to argument of a
command (such as set_multicycle_path) to refer to all nodes driven by the clocks in the collection. #
The following multicycle constraint applies to all paths ending at registers # driven by clk
set_multicycle_path -to [get_clocks clk] 2 If a filter, which is a Tcl list of wildcards and must follow
standard Tcl or Timing Analyzer-extension substitution rules, is specified, then get_clocks returns all
clocks whose names match the filter. See the help for use_timing_analyzer_style_escaping for filter
rules. If the -of_objects option is used, then a collection of registers, ports, pins, or cells must be
provided. get_clocks returns a collection of all the clocks that target these nodes, or if these nodes
are not clock targets, all the clocks that drive these nodes. This option cannot be used along with the
clock name filter. Refer to the long help for examples of using the -of_objects option.
Example Usage # get clocks that begin with 'c' or 'C', and print out their names and periods:
set clocks [get_clocks c* -nocase]
foreach_in_collection clk $clocks {
set name [get_clock_info -name $clk]
set period [get_clock_info -period $clk]
puts "$name: $period"
}
# getting the clock that targets a port, and its generated clock:
create_clock -name my_clock -period 10.000 [get_ports CLK_100]
create_generated_clock -name my_gen_clock -divide_by 2 -source [get_ports CLK_100]
[get_registers clk_div_reg]
get_clocks -nowarn -of_objects [get_ports CLK_100] -include_generated_clocks
# When you use the -nowarn option with the -of_objects option, your filter should be a node
collection
# generated by another get_* collection command as shown in the examples.
#
# When you use the -of_objects option, the Timing Analyzer may emit many clock-related
warning messages. These warnings
# can typically be ignored using the -nowarn option if SDC files read later in the flow
create more clocks.
# However, the -nowarn option also suppresses warnings caused by unmatched bareword filters.
To only see warnings
# due to unmatched filters, use the -nowarn option; however, instead of passing in a bareword
filter, pass in a
# node collection generated from another get_* collection command.
# display the name of the clocks that drive registers beginning with 'reg_':
foreach_in_collection clk_id [get_clocks -nowarn -of_objects [get_registers reg_*]] {
puts [get_clock_info -name $clk_id]
}
The following table displays information for the get_nets Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
354
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a collection of nets in the design. All net names in the collection match the specified pattern.
Wildcards can be used to select multiple nets at once. The default matching scheme returns nets
whose names match the specified filter and nets that are automatically generated by the Quartus
Prime software from these nets. Use the -no_duplicates option to exclude duplicated nets. The filter
for the collection is a Tcl list of wildcards, and must follow standard Tcl or Timing Analyzer-extension
substitution rules. See help for the use_timing_analyzer_style_escaping command for details.
Example Usage # Find a net called "reg" using case insensitive search
get_nets -nocase reg
# Create a collection of all nets whose names start with "reg"
get_nets reg*
# Create a collection of all nets in the design
set mycollection [get_nets *]
# Output net names.
foreach_in_collection net $mycollection {
puts [get_net_info -name $net]
}
The following table displays information for the get_pins Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Returns a collection of pins in the design. All pin names in the collection match the specified pattern.
Wildcards can be used to select multiple pins at once. There are three Tcl string matching schemes
available with this command: the default method, the -hierarchical option, and the -
compatibility_mode option. By default, pipe characters are used to separate one hierarchy level from
the next. They are treated as special characters and are taken into account when string matching with
wildcards is performed. When the default matching scheme is enabled, the specified pattern is
matched against absolute pin names: the names that include the entire hierarchical path. All
hierarchy levels in the pattern are matched level by level. Pin names of the form <absolute full cell
name>|<pin suffix> are used for matching. Note that a full cell name can contain multiple pipe
characters in it to reflect the hierarchy. Any included wildcards refer to only one hierarchical level. For
example, "*|*" and "*|*|*" produce different collections since they refer to the highest hierarchical
level and second highest hierarchical level respectively. When using the -hierarchical matching
scheme, pipe characters are treated as special characters and are taken into account when string
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
355
3. TCL Commands and Packages
UG-20144 | 2021.12.13
matching with wildcards is performed. This matching scheme forces the search to proceed recursively
through the hierarchy. The specified pattern is matched against the relative pin names: the immediate
names that do not include any of the hierarchy information. Pin names of the form <relative short cell
name>|<pin suffix> are used for matching. Note that a short cell name cannot contain pipe
characters. Any included wildcards are expanded to match the relative pin names. For example, "*"
and "*|*" match exactly the same pins since the former is expanded into the latter. The -
compatibility_mode matching scheme uses simple Tcl string matching on full, absolute cell names.
Pipe characters are not treated as special characters when used with wildcards. The default matching
scheme returns not only pins whose names match the specified filter, but also pins duplicated from
these pins (refers to pins are automatically generated by Quartus from the pins). Use -no_duplicates
option to not include duplicated pins. The filter for the collection is a Tcl list of wildcards, and must
follow standard Tcl or Timing Analyzer-extension substitution rules. See help for the
use_timing_analyzer_style_escaping command for details.
The following table displays information for the get_ports Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Returns a collection of ports (design inputs and outputs) in the design. The filter for the collection is a
Tcl list of wildcards, and must follow standard Tcl or Timing Analyzer-extension substitution rules. See
help for the use_timing_analyzer_style_escaping command for details.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
356
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
Description Remove all clock group assignments. This command removes any clock groups that have been
previously set. There is no way to remove specific groups.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
357
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Removes clock latency for a given clock or clock target. There are two types of latency: network and
source. Network latency is the clock network delay between the clock and register clock pins. Source
latency is the clock network delay between the clock and its source (e.g., a system clock or a base
clock of a generated clock). The Timing Analyzer automatically computes network latencies for all
register and generated clocks. Overriding clock network latencies is not supported by the Timing
Analyzer. Therefore, the -source option must always be specified. Remove_clock_latency requires this
option as well. You can apply clock latency to a clock, which affects all targets of the clock, or to a
specific clock target. Therefore, you can remove clock latency from a collection of clocks, or from a
collection of target nodes. remove_clock_latency removes all latencies from a clock or node, so
removing a node's clock latency with respect to a particular clock, or removing only latencies with
particular conditions is not supported. The value of the targets is either a collection or a Tcl list of
wildcards used to create a collection of the appropriate type. The values used must follow standard Tcl
or Timing Analyzer-extension substitution rules. See the help for use_timing_analyzer_style_escaping
for details.
-from <from_clock> Valid destinations (string patterns are matched using Tcl
string matching)
-to <to_clock> Valid destinations (string patterns are matched using Tcl
string matching)
Description Removes clock uncertainty from a collection of clocks to a collection of clocks. The source and
destination clocks can be any arbitrary collection of clocks. This command removes all uncertainty
between two clocks. If there does not exist uncertainty between two clocks specified in
remove_clock_uncertainty, the command does nothing for those two clocks but continues to attempt
to remove uncertainty between other clocks specified. The values of the -from and -to 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 the help for
use_timing_analyzer_style_escaping for details.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
358
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage set_clock_uncertainty -setup -rise_from {clk1 clk2} -fall_to {clk3 clk4} 200ps
set_clock_uncertainty -from {clk5 clk6} -to {clk7 clk8} 300ps
remove_clock_uncertainty -from {clk3 clk5} -to {clk4 clk7}
Description Adds a previously disabled edge (arc) back to a given cell(s). If no -from/-to value is specified, the
missing value is substituted by a "*". The values of the -from and -to are valid pin suffixes. The
values used must follow standard Tcl or Timing Analyzer-extension substitution rules. See the help for
use_timing_analyzer_style_escaping for details.
The following table displays information for the remove_input_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Removes input delay from a port. For each input port specified, removes all input delays for that port.
This means that rise, fall, max, and min delays for each clock and reference pin on the input port are
all removed. The value of the targets is either a collection or a Tcl list of wildcards used to create a
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
359
3. TCL Commands and Packages
UG-20144 | 2021.12.13
collection of the appropriate type. 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 # Simple input delay with the same value for min/max and rise/fall
set_input_delay -clock clk 1.5 [get_ports {in1 in2}]
set_input_delay -clock clk2 1.5 [get_ports {in1 in2}]
set_input_delay -clock clk 1.6 [get_ports {in3 in4}]
Description Removes output delay from a port. For each output port specified, removes all output delays for that
port. Rise, fall, max, and min delays for each clock and reference pin on the output port are all
removed. The value of the targets is either a collection or a Tcl list of wildcards used to create a
collection of the appropriate type. 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 # Simple output delay with the same value for min/max and rise/fall
set_output_delay -clock clk 1.5 [get_ports {out1 out2}]
set_output_delay -clock clk2 1.5 [get_ports {out1 out2}]
set_output_delay -clock clk 1.6 [get_ports {out3 out4}]
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
360
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the reset_design Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Removes all assignments from the design. This includes clocks, generated clocks, derived clocks,
input delays, output delays, clock latency, clock uncertainty, clock groups, false paths, multicycle
paths, min delays, and max delays. After reset_design is called, the design should be in the same
state as it would be if create_timing_netlist was just called.
# Reset the design to the state that it was in before any constraints were entered
reset_design
The following table displays information for the set_clock_groups Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-group <names> Valid destinations (string patterns are matched using Tcl
string matching)
Description Clock groups provide a quick and convenient way to specify which clocks are not related.
Asynchronous clocks are those that are completely unrelated (e.g., have different ideal clock sources).
Logically exclusive clocks are not actively used in the design at the same time (e.g., multiplexed
clocks), but the clock signals may physically exist on-chip at the same time and therefore may still
influence each other through crosstalk effects. Physically exclusive clocks, in contrast, cannot be
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
361
3. TCL Commands and Packages
UG-20144 | 2021.12.13
physically present in the device at the same time (e.g., multiple clocks defined on the same clock
pin). The Timing Analyzer does not currently analyze crosstalk explicitly. Instead, the timing models
use extra guard bands to account for any potential crosstalk-induced delays. As a result, the Timing
Analyzer currently treats asynchronous, logically_exclusive, and physically_exclusive clock groups the
same. However, different parts of the Timing Analyzer may treat asynchronous and exclusive groups
differently. Any commands that are affected by clock groups will say so in their help text. But, no
distinction is made between logically and physically exclusive clock groups, since the only difference
between them is how they affect crosstalk. The result of set_clock_groups is that all clocks in any
group are cut from all clocks in every other group. The use of a single -group option tells the Timing
Analyzer to cut this group of clocks from all other clocks in the design, including clocks that are
created in the future. This command is similar to calling set_false_path from each clock in every
group to each clock in every other group and vice versa, making set_clock_groups easier to specify
for cutting clock domains. However, cutting clocks with set_clock_groups also affects the results of
some other commands. Any commands that are affected by clock groups will say so in their help text.
The following table displays information for the set_clock_latency Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-clock <clock_list> Valid clock destinations (string patterns are matched using
Tcl string matching)
Description Specifies clock latency for a given clock or clock target. There are two types of latency: network and
source. Network latency is the clock network delay between the clock and register clock pins. Source
latency is the clock network delay between the clock and its source (e.g., the system clock or base
clock of a generated clock). The Timing Analyzer automatically computes network latencies for all
register and generated clocks. Overriding clock network latencies is not supported by the Timing
Analyzer. Therefore, the -source option must always be specified. You can apply clock latency to a
clock, which affects all targets of the clock, or to a specific clock target. If you specify a specific clock
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
362
3. TCL Commands and Packages
UG-20144 | 2021.12.13
target that is driven by more than one clock, use the -clock option to specify which clock to
use.Latencies assigned to a clock target override any latencies assigned to a clock. Different clock
latencies can be specified for early (-early) and late (-late) latencies, as well as for rising edges (-rise)
and falling edges (-fall). If only some combinations are specified, the other combinations are used by
default. For example, if only a -rise -early latency and a -fall -early latency are specified, then the -
rise -late latency is assumed to be the same as the -rise -early latency and the -fall -late latency is
assumed to be the same as the -fall -early latency. If neither -rise nor -fall are used or neither -early
nor -late are used, then the latency applies to both conditions. Source latency can also be assigned to
generated clocks. This may be useful for specifying board level delays from a clock output port to a
clock input port when the clock input port is acting as a feedback clock. The value of the targets is
either a collection or a Tcl list of wildcards used to create a collection of the appropriate type. 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.
-fall_from <fall_from_clock> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to <fall_to_clock> Valid destinations (string patterns are matched using Tcl
string matching)
-from <from_clock> Valid destinations (string patterns are matched using Tcl
string matching)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
363
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-rise_from <rise_from_clock> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to <rise_to_clock> Valid destinations (string patterns are matched using Tcl
string matching)
-to <to_clock> Valid destinations (string patterns are matched using Tcl
string matching)
<uncertainty> Uncertainty
Description Specifies clock uncertainty or skew for clocks for clock-to-clock transfers. You can specify uncertainty
separately for setup and hold, and you can specify separate rising and falling clock transitions. If you
omit to specify -setup or -hold, the uncertainty value will be applied to both analysis types. Similarly,
if you omit to specify rising or falling clock transitions, the uncertainty value will be applied to both
transitions. The setup uncertainty is subtracted from the data required time for each applicable path,
and the hold uncertainty is added to the data required time for each applicable path. Intel Quartus
Prime software computes clock uncertainty for every clock transfer. For particular transfers, you can
use the set_clock_uncertainty assignment to override the automatically derived value, or you can
specify the -add option to add to the automatically derived value. Note that the -add option is only
relative to the automatically derived value. If multiple set_clock_uncertainty assignments apply to the
same clock transfer, the later value overrides the earlier ones, regardless of whether the -add option
was used. Note: The Timing Analyzer does not apply clock uncertainty to transfers involving the same
physical launch and latch edge (that is, the latch and launch edges are the same edge of a clock
source and occur at the same time) by default. Such transfers typically occur in hold analysis, but
may also occur in setup analysis with a multicycle value of 0. You can use the -
enable_same_physical_edge option to override this behavior. The values for -from, -to, 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 the
help for use_timing_analyzer_style_escaping for details.
The following table displays information for the set_disable_timing Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
Description Disables a timing edge (arc) from inside a given cell or cells. Disabling a timing edge prevents timing
analysis through that edge. If either -from or -to (or both) are unspecified, the missing value or
values are replaced by a "*" character. The values of the -from and -to are valid pin suffixes. The
values used must follow standard Tcl or Timing Analyzer-extension substitution rules. See the help for
use_timing_analyzer_style_escaping for details.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
364
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_false_path Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-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)
-latency_insensitive Mark this false path as one that should still be optimized
-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)
-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)
Description Specifies a false-path exception, removing (or cutting) paths from timing analysis. 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 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. Applying exceptions between a pair
of clocks is more efficient than for specific node to node or node to clock paths. If the -
latency_insensitive flag is set, the Fitter will be allowed to freely insert additional pipelining stages on
any paths that are cut by the exception. These pipelined stages will be retimed to improve
performance, but the timing requirements of the paths will still be ignored, just like for ordinary false
paths. Without this flag, the Fitter will not perform any optimizations on the cut 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
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
365
3. TCL Commands and Packages
UG-20144 | 2021.12.13
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 -setup and -hold options allow the false path to only be applied to the
corresponding setup/recovery or hold/removal checks. The default if neither value is specified is to
apply the false path to both -setup and -hold. The values of the -from, -to, -through, and other
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. See help for the
set_clock_groups command for information.
The following table displays information for the set_input_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-reference_pin <name> Specifies a pin or port in the design to which the input delay
is relative
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
366
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Specifies the data arrival times at the specified input ports relative the clock specified by the -clock
option. The clock must refer to a clock name in the design. Input delays can be specified relative to
the rising edge (default) or falling edge (-clock_fall) of the clock. Input delays can be specified
relative to a pin or a port (-reference_pin) in the clock network. Clock arrival times to the reference
pin or port are added to data arrival times. If no -reference_pin is specified, if the input delay is
specified relative to a generated clock with a single target, the clock arrival times to the generated
clock are added to the data arrival time. If the generated clock has multiple targets, the worst case
arrival time to those targets will be used. Input delays can already include clock source latency. By
default the clock source latency of the related clock is added to the input delay value, but when the -
source_latency_included option is specified, the clock source latency is not added because it was
factored into the input delay value. The maximum input delay (-max) is used for clock setup checks
or recovery checks and the minimum input delay (-min) is used for clock hold checks or removal
checks. If only -min or -max (or neither) is specified for a given port, the same value is used for both.
Separate rising (-rise) and falling (-fall) arrival times at the port can be specified. If only one of -rise
and -fall are specified for a given port, the same value is used for both. By default, set_input_delay
removes any other input delays to the port except for those with the same -clock, -clock_fall, and -
reference_pin combination. Multiple input delays relative to different clocks, clock edges, or reference
pins can be specified using the -add_delay option. The value of the targets is either a collection or a
Tcl list of wildcards used to create a collection of the appropriate type. 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 # Simple input delay with the same value for min/max and rise/fall:
# 1) set on ports with names of the form myin*
set_input_delay -clock clk 1.5 [get_ports myin*]
# 2) set on all input ports
set_input_delay -clock clk 1.5 [all_inputs]
# Adding multiple input delays with respect to more than one clock
set_input_delay -clock clkA -min 1.2 [get_ports myin*]
set_input_delay -clock clkA -max 1.8 [get_ports myin*]
set_input_delay -clock clkA -clock_fall 1.6 [get_ports myin*] -add_delay
set_input_delay -clock clkB -min 2.1 [get_ports myin*] -add_delay
set_input_delay -clock clkB -max 2.5 [get_ports myin*] -add_delay
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
367
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This constraint does not affect calculations performed by the Timing Analyzer. It only affects
PrimeTime analysis. If you set this constraint in the Timing Analyzer the constraint is written out to
the SDC file when you call write_sdc.
The following table displays information for the set_max_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-fall_from <names> Valid source clocks (string patterns are matched using Tcl
string matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
368
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-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)
-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)
-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)
Description Specifies a maximum delay exception for a given path. The maximum delay is similar to changing the
setup relationship (latching clock edge - launching clock edge), except that it can be applied to input
or output ports without input or output delays assigned to them. Maximum delays are always relative
to any clock network delays (if the source or destination is a register) or any input or output delays (if
the source or destination is a port). Therefore, input delays and clock latencies are added to the data
arrival times. Clock latencies also added to data required times and output delays are subtracted from
data required times. 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 to 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. 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 "from1" 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 other 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 # Apply a 10ns max delay between two unrelated clocks
set_max_delay -from [get_clocks clkA] -to [get_clocks clkB] 10.000
# Apply a 2ns max delay for an input port to an output port (TPD)
set_max_delay -from [get_ports in[*]] -to [get_ports out[*]] 2.000
# Apply a 2ns max delay for an input port only to nodes driven by
# the rising edge of clock CLK
set_max_delay -from [get_ports in[*]] -rise_to [get_clocks CLK] 2.000
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
369
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-exact Forces the time borrowed to be the exact value provided (if
physically possible)
Description Specifies the maximum borrowed time for level-sensitive latches. The actual borrowed time will be
determined automatically, but will never exceed the amount you specify. For any latches without a
set_max_time_borrow constraint, no limit will apply (except for the physical limit of what is possible
on the device, as described below). By using the -exact option, you can bypass the automatic
algorithm and specify the exact amount of borrowing at a given latch. For optimum results, using the
automatic algorithm is recommended (ideally, without any set_max_time_borrow constraints). Time
borrowing is specified with respect to the earliest possible time a signal can be clocked into the latch
node. For example, for a positive latch, if the earliest possible arrival time of the rising clock edge is
1.025ns, then a signal that has an arrival time of 1.035ns (where this arrival time already includes
the micro-setup time of the latch) will require at least 0.010ns of time borrowing. Regardless of how
the borrowed time is determined (automatically without a limit, automatically with a
set_max_time_borrow constraint, or manually with a set_max_time_borrow -exact constraint), the
borrowed time can never exceed what is physically possible to borrow on the device. The maximum
amount that can be borrowed is the period of time when the latch is open (e.g. half the clock period if
the clock has a 50% duty cycle), but this time is reduced by clock propagation time spread and clock
uncertainty between the latch-opening and latch-closing clock edges, and is further reduced by the
closing-edge setup time of the latch. Some of these factors vary from corner to corner, as well as
from clock to clock (if multiple clocks drive the latch). Time borrowing analysis will only occur in the
Timing Analysis (Signoff) stage, or when manually running the Timing Analyzer. The Fitter will not
utilize time borrowing information and will assume zero time borrowed. Thus, the use of level-
sensitive latches with high-speed clocks is not recommended, unless other constraints (such as
set_max_delay) are manually set to ensure optimal Fitter behavior. The targets of this command must
be level-sensitive latches (all other targets will be ignored). The targets can be specified as either a
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.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
370
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_min_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-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)
-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)
-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)
Description Specifies a minimum delay exception for a given path. The minimum delay is similar to changing the
hold relationship (launching clock edge - latching clock edge), except that it can be applied to input or
output ports without input or output delays assigned to them. Minimum delays are always relative to
any clock network delays (if the source or destination is register) or any input or output delays (if the
source or destination is a port). Therefore, input delays and clock latencies are added to the data
arrival times. Clock latencies also added to data required times and output delays are subtracted from
data required times. 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 destination nodes specified using the -from option. 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 other similar options are either collections or a Tcl
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
371
3. TCL Commands and Packages
UG-20144 | 2021.12.13
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 # Apply a 0ns min delay between two unrelated clocks
set_min_delay -from [get_clocks clkA] -to [get_clocks clkB] 0.000
# Apply a 0.5ns min delay for an input port to an output port (MIN_TPD)
set_min_delay -from [get_ports in[*]] -to [get_ports out[*]] 0.500
# Apply a 0.5ns min delay for an input port only to nodes driven by
# the falling edge of clock CLK
set_max_delay -from [get_ports in[*]] -fall_to [get_clocks CLK] 0.500
-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)
-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)
-through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
372
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-to <names> Valid destinations (string patterns are matched using Tcl
string matching)
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.
# 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
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
373
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_output_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc on page 346
Version
-reference_pin <name> Specifies a pin or port in the design to which the output
delay is relative
Description Specifies the data required times at the specified output ports relative the clock specified by the -
clock option. The clock must refer to a clock name in the design. Output delays can be specified
relative to the rising edge (default) or falling edge (-clock_fall) of the clock. If the output delay is
specified relative to a simple generated clock (a generated clock with a single target), the clock arrival
times to the generated clock are added to the data required time. Output delays can be specified
relative to a pin or a port (-reference_pin) in the clock network. Clock arrival times to the reference
pin or port are added to the data required time. Output delays can include clock source latency. By
default the clock source latency of the related clock is added to the output delay value, but when the -
source_latency_included option is specified, the clock source latency is not added because it was
factored into the output delay value. The maximum output delay (-max) is used for clock setup
checks or recovery checks and the minimum output delay (-min) is used for clock hold checks or
removal checks. If only one of -min and -max (or neither) is specified for a given port, the same value
is used for both. Separate rising (-rise) and falling (-fall) required times at the port can be specified.
If only one of -rise and -fall are specified for a given port, the same value is used for both. By default,
set_output_delay removes any other output delays to the port except for those with the same -clock,
-clock_fall, and -reference_pin combination. Multiple output delays relative to different clocks, clock
edges, or reference pins can be specified using the -add_delay option. The value of the targets is
either a collection or a Tcl list of wildcards used to create a collection of the appropriate type. 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 # Simple output delay with the same value for min/max and rise/fall:
# 1) set on ports with names of the form myout*
set_output_delay -clock clk 0.5 [get_ports myout*]
# 2) set on all output ports
set_output_delay -clock clk 0.5 [all_outputs]
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
374
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Adding multiple output delays with respect to more than one clock
set_output_delay -clock clkA -min 0.2 [get_ports myout*]
set_output_delay -clock clkA -max 0.8 [get_ports myout*]
set_output_delay -clock clkA -clock_fall 0.6 [get_ports myout*] -add_delay
set_output_delay -clock clkB -min 1.1 [get_ports myout*] -add_delay
set_output_delay -clock clkB -max 1.5 [get_ports myout*] -add_delay
3.1.28. ::quartus::sdc_ext
The following table displays information for the ::quartus::sdc_ext Tcl package:
Tcl Package and Version ::quartus::sdc_ext 2.0
Description Timing Constraints not defined in the SDC Spec Version 1.5 are implemented in this
package. Any command in this package can be specified in a Timing Analyzer SDC file.
quartus_sta
quartus_fit
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
375
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Applies inter-clock, intra-clock and I/O interface uncertainties based on timing model characterization.
This command calculates and applies setup and hold clock uncertainties for each clock-to-clock
transfer found in the design. The calculation of the uncertainties is delayed until the next
update_timing_netlist call. To get I/O interface uncertainty in addition to inter-clock and intra-clock
uncertainties, create a virtual clock to represent an off-chip clock for input or output delay
specification and assign delays to input/output ports with set_input_delay and set_output_delay
commands that specify the virtual clock. If set_input_delay and set_output_delay commands
specifying a non- virtual clock are called, derive_clock_uncertainty applies either inter-clock or intra-
clock uncertainty for that clock transfer since those transfers represent a clock-to-clock domain rather
than an I/O-to-register clock domain. The set_clock_uncertainty calls will override the derived values
for a source clock and destination clock pair unless either the set_clock_uncertainty command or the
derive_clock_uncertainty command specified the -add option, in which case the values are added.
Specifying the -overwrite option will instead cause all set_clock_uncertainty commands to be ignored.
Previous set_clock_uncertainty assignments can also be manually removed by using the
remove_clock_uncertainty command. Note that this command is called automatically and the user
only needs to manually call it to specify the -add or -overwrite options.
update_timing_netlist
The following table displays information for the derive_pll_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-create_base_clocks Creates base clocks on input clock ports of the design that
are feeding the PLL
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
376
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description NOTE: This command is no longer supported for Stratix 10 and later families. Identifies PLLs or similar
resources in the design and creates generated clocks for their output clock pins. Multiple generated
clocks may be created for each output clock pin if the PLL is using clock switchover, one for the
inclk[0] input clock pin and one for the inclk[1] input clock pin. By default this command does not
create base clocks on input clock ports that are driving the PLL. When you use the create_base_clocks
option, derive_pll_clocks also creates the base clock on an input clock port deriving the PLL. This
option does not overwrite an existing clock. By default the clock name is the same as the output clock
pin name. To use the net name, use the -use_net_name option. Note that this command is not
supported for Stratix 10 and later device families. The only families that still have support for this
command are Arria 10 and Cyclone 10GX. The reason why this command has been deprecated is
because all PLL clocks are now automatically generated by the SDC files generated alongside the PLL
IP. No user action is required.
# Create the base clock for the input clock port driving the PLL
create_clock -period 10.0 [get_ports sysclk]
update_timing_netlist
delete_timing_netlist
project_close
Description Allows you to disable minimum pulse width checks for specified targets. If the target is a clock
collection, all MPW checks along that clock path will be disabled. Otherwise, MPW checks for the
elements in the passed target collection will be disabled.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
377
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_active_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Description Returns the collection of active clocks for timing analysis. The active clocks are the clocks specified in
the most recent call to set_active_clocks, or all clocks if set_active_clocks has not been called.
Description Returns a collection of <keepers>|<registers>|<ports> for the assignment group that matches
<name>. This command can be used to retrieve the assignment group created and saved in the
Quartus Prime Settings File. The options -keepers, -registers and -ports are mutually exclusive. If no
option is specified, the keeper collection is returned by default.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
378
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_fanins Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
<filter> Valid starting nodes (string patterns are matched using Tcl
string matching or collection)
Description Returns a collection of fanin ports, registers (and optionally clock targets) reachable from the <filter>
in the design. When you supply the -no_logic option, get_fanins ignores paths that pass through
combinational logic elements other than buffers and inverters. NOTE: the -no_logic option does not
consider logic absorbed into the cells of the <filter> nor the cells of fanin registers, ports or clock
targets. When you use -synch, -asynch, or -clock options, get_fanins traverses the netlist through
corresponding edges. You can specify more than one of these options. If you do not specify any of
these three options, the command does not ignore any paths. When the -non_inverting_paths option
is used, no_logic does not follow any paths that includes odd number of inverters. Similarly, when the
-inverting_paths option is used, no_logic does not follow any paths that includes even number of
inverters. Both the -non_inverting_paths and -inverting_paths options require the -no_logic option
and are mutually exclusive. When the -through option is used, only the fanins that can be reached by
going through those nodes are returned. When -stop_at_clocks is used, combinational clock targets
may be returned (in addition to clock or non-clock registers and ports), and registers or ports that can
only be reached by traversing through a clock target will not be returned. The filter for the collection
is a Tcl list of wildcards, and must follow standard Tcl or Timing Analyzer-extension substitution rules.
See the help for the use_timing_analyzer_style_escaping command for details.
#-through example
get_fanins inst18 -through inst11
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
379
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_fanouts Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
<filter> Valid starting nodes (string patterns are matched using Tcl
string matching or collection)
Description Returns a collection of fanout ports, registers (and optionally clock targets) reachable from the
<filter> in the design. When the -no_logic option is used, get_fanouts ignores the paths that pass
through combinational logic elements other than buffers and inverters. When you use the -synch, -
asynch, or -clock options, get_fanouts traverses the netlist through corresponding edges. You can
specify more than one of these options. If you do not specify any of these three options, the
command does not ignore any paths. When the -non_inverting_paths option is used in conjunction
with the -no_logic option, get_fanouts does not follow paths that include an odd number of inverters.
Similarly, when the -inverting_paths option is used in conjunction with the -no_logic option,
get_fanouts does not follow any paths that include an even number of inverters. Both the -
non_inverting_paths and -inverting_paths options require the -no_logic option and are mutually
exclusive. NOTE: The -no_logic option does not consider logic absorbed into the cells of the <filter>
nor the cells of fanout registers, ports or clock targets. The -no_inversion option does not consider
inversions absorbed into synchronous inputs of fanout registers, as the Intel Quartus Prime software
register timing model always considers these edges as being positive unate. When the -through
option is used, only the fanouts that can be reached by going through those nodes are returned.
When -stop_at_clocks is used, combinational clock targets may be returned (in addition to clock or
non-clock registers and ports), and registers or ports that can only be reached by traversing through
a clock target will not be returned. The filter for the collection is a Tcl list of wildcards, and must follow
standard Tcl or Timing Analyzer-extension substitution rules. See the help for
use_timing_analyzer_style_escaping for details.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
380
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Using through option to find the fanout registers whose enable input is
# connected to the signal while ignoring the inverting paths.
get_fanouts inst1 -no_logic -non_inverting_paths -through [get_pins -hierarchical *|ena]
The following table displays information for the get_keepers Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Description Returns a collection of non-combinational or "keeper" nodes in the design. The default matching
scheme returns not only non-combinational nodes whose names match the specified filter, but also
non-combinational nodes duplicated from these keepers (refers to cells are automatically generated
by Quartus from these keepers). Use the -no_duplicates option to exclude duplicated keepers. The
filter for the collection is a Tcl list of wildcards, and must follow standard Tcl or Timing Analyzer-
extension substitution rules. See help for the use_timing_analyzer_style_escaping command for
details.
delete_timing_netlist
project_close
The following table displays information for the get_nodes Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
381
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a collection of nodes in the design. The default matching scheme returns not only nodes
whose names match the specified filter, but also nodes duplicated from these nodes (refers to cells
are automatically generated by Quartus from these nodes). Use the -no_duplicates option to not
include duplicated nodes. The filter for the collection is a Tcl list of wildcards, and must follow
standard Tcl or Timing Analyzer-extension substitution rules. See help for the
use_timing_analyzer_style_escaping command for details.
delete_timing_netlist
project_close
The following table displays information for the get_partitions Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
<filter> Valid partitions (string patterns are matched using Tcl string
matching)
Description Returns a collection of partitions matching the filter by default. All partition names in the collection
match the specified pattern. Wildcards can be used to select multiple partitions at once. The -cell
option creates and returns the collection of cells found inside the partitions matching the <filter>
instead of returning a partition collection. There are three Tcl string matching schemes available with
this command: default, -hierarchical, and -no_case. When using the default matching scheme, pipe
characters separate one hierarchy level from the next. They are treated as special characters and are
taken into account when string matching with wildcards is performed. The default matching scheme
does not force the search to proceed recursively down the hierarchy. Using the hierarchical matching
scheme forces the search to proceed recursively down the hierarchy. The -nocase matching scheme
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
382
3. TCL Commands and Packages
UG-20144 | 2021.12.13
uses case-insensitive matching behavior. The filter for the collection is a Tcl list of wildcards, and must
follow standard Tcl or Timing Analyzer-extension substitution rules. See the help for
use_timing_analyzer_style_escaping for details.
The following table displays information for the get_registers Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Description Returns a collection of registers in the design. The default matching scheme returns not only registers
whose names match the specified filter, but also returns registers duplicated from these registers
(cells automatically generated from these registers by the Quartus Prime software). Use the -
no_duplicates option to exclude duplicated registers. The filter for the collection is a Tcl list of
wildcards, and must follow standard Tcl or Timing Analyzer-extension substitution rules. See help for
the use_timing_analyzer_style_escaping command for details.
delete_timing_netlist
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
383
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the remove_clock Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
384
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_active_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Description Sets the list of active clocks for timing analysis. All other clocks not in the list or collection are
considered inactive. Timing analysis is only performed on active clocks. All clocks are active by
default. Generated clocks that are generated from inactive clocks are considered inactive. Therefore,
to make a generated clock active, specify both the parent and generated clock when calling
set_active_clocks. To reset all clocks to active, call "set_active_clocks *" or "set_active_clocks
[all_clocks]". The set_active_clocks command does not affect all reports. For example, inactive clocks
are still reported by report_clocks, report_clock_transfers, and similar commands.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
385
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <names> Valid source pins or ports (string patterns are matched
using Tcl string matching)
-to <names> Valid destination pins or ports (string patterns are matched
using Tcl string matching)
Description Annotates the cell delay between two or more pins/nodes on a cell, or the interconnect delay between
two or more pins on the same net, in the current design. Multiple transition edges (rr, fr, rf, ff) can be
specified. If no transition is specified, then the given delay is assigned to all four values. If either -
from or -to (or both) values are left unspecified, the missing value or values are substituted by an "*"
character. Options -max and -min allow users to specify max or only min delay. If neither -max or -
min is specified, both delays are set. Using this command to reduce delay pessimism might lead to
optimistic results from timing analysis. The values for -from and -to 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. Delay annotation is deferred until the next time update_timing_netlist is called.
To remove annotated delays, use remove_annotated_delay command. This assignment is for timing
analysis only, and is not considered during timing-driven compilation.
Example Usage set_annotated_delay -cell 100 -from A|B|C|datain -to A|B|C|combout -rr -ff
set_annotated_delay -net 100 -to A|carryin
update_timing_netlist
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
386
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_data_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-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)
-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)
-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)
Description Specifies a maximum datapath delay exception for a given path. NOTE: This constraint should only be
used for clock domain crossing paths. See the end of this help section for more information. The
maximum delay analysis includes Tco of the launching register, and Tsu of the latching register. By
default, it does not include clock arrival times at the launching or latching register. To include launch
clock arrival times, use the -allow_launch_clock option. To include latch clock arrival times, use the -
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
387
3. TCL Commands and Packages
UG-20144 | 2021.12.13
allow_latch_clock option. If the path starts or ends at a port, the analysis does not include delays due
to set_input_delay or set_output_delay. Use -get_value_from_clock_period to set the delay
requirement for each path to be equal to the launching or latching clock period, or whichever of the
two has a smaller or larger period. If -value_multiplier is used, the requirement will be multiplied by
that value. If there are no clocks clocking the endpoints of the path (e.g. if the path begins or ends at
an unconstrained I/O), the constraint will be ignored. The datapath delay constraint is applied in
addition to other constraints on the given path, including the default constraint. Furthermore, the
datapath delay constraint is analyzed independently from other SDC constraints, including
set_false_path and set_clock_groups, and cannot be overridden by other SDC constraints. For
example, you can use set_data_delay to specify an upper limit on logic and routing delay for paths
cut by set_false_path. The -from and -to values are collections of clocks, registers, ports, pins, or
cells in the design. 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. 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 other 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. If the source of a path with a
set_data_delay constraint has any time borrowed, the delay budget will be reduced by the time
borrowed. By default, the delay budget will not be increased by time borrowed at the destination of a
path constrained by a set_data_delay constraint, and negative slack on a set_data_delay constraint
will not cause time borrowing to happen. To change this behavior, use the -
allow_destination_borrowing option. set_data_delay constraints should only be applied on
asynchronous clock domain crossing paths. When applied on an synchronous or intra-clock path,
set_data_delay may cause Fitter optimizations to ignore or mishandle the effects of clock skew on the
path's slack.
Example Usage # Apply a 10ns max data delay on paths between two unrelated clocks
set_data_delay -from [get_clocks clkA] -to [get_clocks clkB] 10.000
# Apply a 2ns max data delay from an input port to any register
set_data_delay -from [get_ports in[*]] -to [get_registers *] 2.000
# Require net delay to be at most 90% of the period of the clock driving the inst9 register
set_data_delay -get_value_from_clock_period dst_clock_period -value_multiplier 0.9 -from
[get_clocks clk] -to [get_keepers inst9]
# Apply a 2ns max data delay for an input port only to nodes driven by
# the rising edge of clock CLK
set_data_delay -from [get_ports in[*]] -rise_to [get_clocks CLK] 2.000
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
388
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the set_max_skew Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Use the set_max_skew constraint to perform maximum allowable skew analysis between sets of
registers or ports. In order to constrain skew across multiple paths, all such paths must be defined
within a single set_max_skew constraint. set_max_skew timing constraint is not affected by
set_max_delay, set_min_delay, and set_multicycle_path, but is affected by set_false_path and
set_clock_groups: paths cut by a false path will not be analyzed for skew, and no two paths will be
compared for skew if their clocks are exclusive to each other. However, paths whose clocks are
asynchronous are still analyzed for skew. Legal values for the -from and -to options are collections of
clocks, registers, ports, pins, cells or partitions in a design. Applying maximum skew constraints
between clocks applies the constraint from all register or ports driven by the clock specified with the -
from option to all registers or ports driven by the clock specified with the -to option. 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 apply to all registers
contained in the cell or driven by the clock pin. Similarly, -to and -from partition specifications apply
to all registers in the specified partition. Max skew analysis includes data arrival times, clock arrival
times, register micro parameters, clock uncertainty, on-die variation and ccpp removal. Use -
get_skew_value_from_clock_period to set the skew requirement to be equal to the launching or
latching clock period, or whichever of the two has a smaller period. If -skew_value_multiplier is used,
the requirement is multiplied by that value. If this option is used, then the positional skew option may
not be set. If the set of skew paths is clocked by more than one clock, the Timing Analyzer will use
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
389
3. TCL Commands and Packages
UG-20144 | 2021.12.13
the one with smallest period to compute the skew constraint. When this constraint is used, results of
max skew analysis are displayed in the Report Max Skew (report_max_skew) report from the Timing
Analyzer. Since skew is defined between two or more paths, no results are displayed if the -from/-
from_clock and -to/-to_clock filters satisfy less than two paths.
Example Usage # Constrain the skew on an input port to all registers it feeds
set_max_skew -from [get_ports din] 0.200
# Constrain skew to be less than 90% of the period of any clock in the source
# register set
set_max_skew -to [get_keepers inst1|*] -get_skew_value_from_clock_period src_clock_period -
skew_value_multiplier 0.900
The following table displays information for the set_net_delay Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
-from <names> Valid source pins, ports, registers or nets(string patterns are
matched using Tcl string matching)
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
390
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Use the set_net_delay command to query the net delays and perform minimum or maximum timing
analysis across nets. The -from and -to options can be string patterns or pin, port, register, or net
collections. When pin or net collection is used, the collection should include output pins or nets. If the
-to option is unused or if the -to filter is an "*" character, all the output pins and registers on timing
netlist became valid destination points. When you use the -min option, slack is calculated by looking
at the minimum delay on the edge. If you use -max option, slack is calculated with the maximum
edge delay. Use -get_value_from_clock_period to set the net delay requirement to be equal to the
launching or latching clock period, or whichever of the two has a smaller or larger period. If -
value_multiplier is used, the requirement will be multiplied by that value. If the set of nets is clocked
by more than one clock, the Timing Analyzer will use the one with smallest period to compute the
constraint for a -max constraint, and the largest period for a -min constraint. If there are no clocks
clocking the endpoints of the net (e.g. if the endpoints of the nets are not registers or constrained
ports), then the net delay constraint will be ignored.
# Require net delay to be at most 90% of the period of the clock driving the inst9 register
set_net_delay -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.9 -from
inst8|combout -to [get_keepers inst9]
update_timing_netlist
The following table displays information for the set_scc_mode Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
391
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Allows you to set maximum Strongly Connected Components (SCC) loop size or force the Timing
Analyzer to always estimate delays through SCCs. When the Timing Analyzer encounters a loop of
size greater than the specified maximum SCC loop size, it uses a heuristic which only estimates
delays through the loop. If the loop is smaller than the maximum SCC loop size, a full processing of
loops is performed unless the -use_heuristic option is used.
Example Usage # Make the Timing Analyzer use normal processing for all loops
# the size of which is less than or equal to 100. For loops of size
# greater than 100, a runtime-saving heuristic will be used
set_scc_mode -size 100
The following table displays information for the set_time_format Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Description Sets time format, including time unit and decimal places. Time units are assumed to be nanoseconds
(ns) by default. The "-unit" option overrides the default time units. Legal time unit values are: ps, ns,
us, ms. Time units are displayed with three decimal places by default. The "-decimal_places" option
overrides the default number of decimal places to show. The smallest resolution of all times units is
one picosecond (ps). Any additional specified precision will be truncated.
TCL_ERROR 1 ERROR: The default time unit can be set to ms, us, ns, or
ps. Please specify one of these units instead.
The following table displays information for the set_timing_derate Tcl command:
Tcl Package and Belongs to ::quartus::sdc_ext on page 375
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
392
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Sets the global derate factors for the current design. The maxmimum and minimum delays of all
timing arcs in the design are multiplied by the factors specified with the -late and -early options
respectively. Only positive derate factors are allowed. If neither the -cell_delay nor -net_delay option
is used, the derating factors apply to both cell and net delays. For net delay derates, the derate factor
is applied to nets driven by matching cells. Specifying a derate value of less than 1.0 for the -late
option or a derate value of greater than 1.0 for the -early option reduces delay pessimisim, which
might lead to optimistic results from timing analysis. The effect of set_timing_derate command is
deferred until the next time update_timing_netlist is called. To reset derate factors to original values,
use the reset_timing_derate command. This assignment is for timing analysis only, and is not
considered during timing-driven compilation.
3.1.29. ::quartus::sta
The following table displays information for the ::quartus::sta Tcl package:
Tcl Package and Version ::quartus::sta 1.0
Description This package contains the set of Tcl functions for obtaining information from the Timing
Analyzer.
quartus_fit
quartus_sta
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
393
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the add_to_collection Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
394
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This command takes two collections and returns a new collection that is a union of the two. The
second collection is allowed to be a string, whereas the first has to be previously-created collection,
either by passing any of the "get_" functions directly, or by passing a variable that contains a
collection (see code examples for this command). If a collection is used for the second argument, the
types in the second collection must be the same as or a subset of the types in the first collection. If
the first collection consists of keepers, the second collection can only consist of keepers, registers or
ports. If the first collection consists of partitions, the second collection can only consist of partitions or
cells. If the first collection consists of nodes, the second collection can only consist of nodes, keepers,
registers, ports, pins, nets or combinational nodes.
#or:
set regs_union [add_to_collection [get_keepers b*] $regs1]
#or even:
set regs_union [add_to_collection $kprs1 a*]
# - note that the last statement will actually add all keepers with name a*
# not only registers! (will add IOs with name a*, if any)
The following table displays information for the check_timing Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
395
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Checks for problems in the design or problems with design constraints. The check_timing command
performs a series of different checks based on user-specified variables and options. There is no
default list of checks. Use the -include option to specify which checks to perform. You must preceed
check_timing with update_timing_netlist. The no_clock check reports whether registers have at least
one clock at their clock pin, and that ports determined to be clocks have a clock assigned to them,
and also checks that PLLs have a clock assignment. The multiple_clock check verifies that registers
have at most one clock at their clock pin. (When multiple clocks reach a register clock pin, it is
undefined which clock is used for analysis. The generated_clock check verifies that generated clocks
are valid. Generated clocks must have a source that is triggered by a valid clock. The no_input_delay
check verifies that every input port that is not determined to be a clock has an input delay
assignment. The no_output_delay check verifies that every output port has an output delay
constraint. The partial_input_delay check verifies that input delays are complete, and ensures that
input delays have a rise-min, fall-min, rise-max, and fall-max portion set. The partial_output_delay
check verifies that output delays are complete, and makes sure that output delays have a rise-min,
fall-min, rise-max, and fall-max portion set. The io_min_max_delay_consistency check verifies that
min delay values specified by set_input_delay or set_output_delay assignments are less than max
delay values. The reference_pin check verifies that reference pins specified in set_input_delay and
set_output_delay using the -reference_pin option are valid. A reference_pin is valid if the -clock
option specified in the same set_input_delay/set_output_delay command matches the clock that is in
the direct fanin of the reference_pin. Being in the direct fanin of the reference_pin means that there
must be no keepers between the clock and the reference_pin. The latency_override check reports
whether the clock latency set on a port or pin overrides the more generic clock latency set on a clock.
Clock latency can be set on a clock, where the latency applies to all keepers clocked by the clock,
whereas clock latency can also be set on a port or pin, where the latency applies to registers in the
fanout of the port or pin. The loops check verifies that there are no strongly connected components in
the netlist. These loops prevent a design from being properly analyzed. The loops check also reports if
loops exist but were marked so that they would not be traversed. The latches check reports latches in
the design and warns that latches may not be analyzed properly. For best results, change your design
to remove latches whenever possible. The pos_neg_clock_domain check determines if any register is
clocked by both the rising and falling edges of the same clock. If this scenario is necessary such as in
a clock multiplexer, create two separate clocks that have similar settings and are assigned to the
same node. The pll_cross_check checks the clocks that are assigned to a PLL against the PLL settings
defined in design files. Inconsistent settings or an unmatched number of clocks associated with the
PLL are reported to the user. The uncertainty check reports each clock-to-clock transfer that does not
have a clock uncertainty assignment set between the two clocks. When a device family has
derive_clock_uncertainty support, this report also checks if a user-defined set_clock_uncertainty
assignment has a less than recommended clock uncertainty value. The virtual_clock check reports all
unreferenced virtual clocks. It also reports if design does not have any virtual clock assignment. The
partial_multicycle check ensures that each setup multicycle assignment has a corresponding hold
multicycle assignment, and each hold muticycle assignment has a corresponding setup multicycle
assignment. The multicycle_consistency check reports all the multicycle cases where a setup
multicycle does not equal one greater than the hold multicycle. Hold multicycle assignments are
usually one cycle less than setup multicycle assignments. The partial_min_max_delay check verifies
that each minimum delay assignment has a corresponding maximum delay assignment, and vice
versa. The clock_assignments_on_output_ports check reports all the clock assignments that have
been applied to output ports. The input_delay_assigned_to_clock check verifies that no input delay
value is set for a clock. Input delays set on clock ports are ignored because clock-as-data analysis
takes precedence. The internal_io_delay check reports all the IO delays that have no specifications for
-reference_pin and -source_latency_included, and -clock is a clock that is not assigned to a top level
input or output port.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
396
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Create a user defined histogram. Use <data> to specify the data entries to be displayed on the
histogram. It can be a tcl list of either one of the following two formats or a mix of the two:
{time_integer} or {time_integer number_count}, where time_integer is an integer possibly with a
unit representing time (default unit is second), and number_count is a positive integer specifying
number of entries (y value) of the corresponding time_integer. Use -num_bins to specify the number
of bins, or the number of bars to be displayed on the histogram. Use -color_div and -color_list to
specify the color of each bin. -color_div takes a tcl list of time_integers (see <data> above). Each
entry in the list specifies the upper bound of each color division and therefore is forced to be a
boundary of bins. -color_list takes a tcl list of colors. Each color in the list is used in the order
specified and if less color is given than color divisions, the list will be re-used. For example, if
specified "-color_div {-1 0 1} -color_list {red green}", then bins below -1 will be red, bins between -1
and 0 will be green, bins between 0 and 1 will be red again, and bins larger than 1 will be blue again.
Posssible choices of colors: black, blue, brown, green, grey, light_grey, orange, purple, red, white.
Default -color_div is {0} and default -color_list is {red blue}. Use -max_data to specify the upper
bound, i.e. largest number to be included in the histogram. Use -min_data to specify the lower bound,
i.e. smallest number to be included in the histogram. Use -panel_name to specify the path and panel
name of the created histogram. e.g. "-panel_name {Folder 1||Histogram 1} will create a histogram
named "Histogram 1" and put it in a folder with the name "Folder 1". Use -x_label to specify the text
label on x_axis. Use -y_label to specify the text label on y_axis. Use -x_unit to specify a text unit to
be attached to x_axis.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
397
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
-all_edges Consider slacks at all edges, not just at the endpoint nodes
(results in increased memory consumption)
-data_delay Data Delay Analysis (only applicable for setup and recovery
analysis)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
398
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Creates a slack histogram in the timing report for the specified clock domain "-clock_name," showing
the number of timing edges within various ranges of slacks for a clock setup analysis. The histogram
can be named using the "-panel_name" option. By default, only slack at the endpoint nodes of the
timing netlist are considered. To include slack at all edges in the histogram, use the "-all_edges"
option. This option will result in increased memory consumption. Use the "-setup", "-hold", "-
recovery", or "-removal" options to specify which kind of analysis should be performed. If none is
specified, setup analysis is used by default. Reports can be directed to the Tcl console ("-stdout",
default), a file ("-file"), the Timing Analyzer graphical interface ("-panel_name"), or any combination
of the three. The range of reported slack values can be controlled by specifying the "-min_slack" and
"-max_slack" options. The number of bins (histogram bars) can also be specified using the "-
num_bins" option. Use the "-partition" to show more information about each partition. A path is in a
partition if it's starting point is in the partition. This option only works for "-panel".
delete_timing_netlist
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
399
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Creates the timing netlist by annotating the atom netlist with delay information using post-fitting
results. Use the -post_map option to obtain post-synthesis results. In an incremental compilation
flow, after Analysis and Synthesis, merge the partitions in your design using the merge_partitions Tcl
command (or the quartus_cdb executable) to complete the creation of a post-synthesis netlist before
you use the -post_map option to create a timing netlist. In Quartus Prime Pro edition, you can use the
-snapshot option to specify which netlist you want to perform timing analysis on. The
create_timing_netlist command skips delay annotation by default. Use -force_dat to rerun delay
annotation. This is required if any delay annotation setting is changed in the Quartus Prime project
revision (e.g. OUTPUT_PIN_LOAD). Use "-model fast" to run the analysis using the fast corner delay
models first. The -temperature, -voltage, and -speed, options are also available. See help for
set_operating_conditions for details on these options. You can use model, temperature and voltage
options to specify operating conditions while creating timing netlist (temperature and voltage options
are not supported by all families). You can also set operating conditions by passing an operating
conditions object name as a positional argument to create_timing_netlist command. After the timing
netlist has been created, you can use set_operating_conditions command to change timing models
without deleting and re-creating the timing netlist. Use the -grade option to analyze the design at a
different temperature grade. This option is provided to support what-if analysis and is not
recommended for final sign-off analysis. Use the -no_latch option to analyze latches as combinational
loops instead of synchronous elements. Use the -zero_ic_delays option to set all IC delays in the
netlist to zero.
project_close
project_open my_top
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
400
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_close
TCL_ERROR 1 ERROR: The Fast Forward snapshot cannot be used for sign-
off timing analysis. Please see the Fast Forward Timing
Closure Recommendations report for performance
estimates.
TCL_ERROR 1 ERROR: Could not find the <string> timing netlist on disk.
Please run this fitter stage first, and make sure you have
enabled Optimize Timing in Advanced Fitter Settings.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
401
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Values entered did not match any valid operating
conditions. Available operating conditions are: <string>
TCL_ERROR 1 ERROR: The design has not been fully routed. If you want
to perform Timing Analysis on an earlier netlist please
choose which snapshot to load for analysis. Available
snapshot(s): <string>
TCL_ERROR 1 ERROR: The design has not been fully routed and retimed to
optimize timing. If you want to perform Timing Analysis on
an earlier netlist please choose which snapshot to load for
analysis. Available snapshot(s): <string>
TCL_ERROR 1 ERROR: You can only specify the -snapshot option when
Hierarchical Design is enabled.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
402
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-data_delay Data Delay Analysis (only applicable for setup and recovery
analysis)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports the worst-case Clock Setup and Clock Hold slacks and endpoint TNS (total negative slack) per
clock domain. Total negative slack is the sum of all slacks less than zero for either destination
registers or ports in the clock domain. The number of endpoints in the domain with negative slack is
also shown. This command shows the worst-case slack for each clock domain. You right click in these
reports to run more detailed reports like Histograms and Report Timing. By default, this command
creates a Setup Summary. This command can also generate a Hold Summary (-hold), Recovery
Summary (-recovery), Removal Summary (-removal), or Minimum Pulse Width Summary (-mpw).
The report can be directed to the Tcl console (-stdout, default), a file (-file), the Timing Analyzer
graphical interface (-panel_name), or any combination of the three.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
403
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
Description This function is deprecated since sta will clean up the memory once the collection is out of scope. If
you want to force a collection to go out of scope, use built-in tcl command 'unset'. Otherwise this
function can remove the collection in cache.
# ...
# do some work with the $nodes collection
# ...
# ...
# do more work
# ...
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
404
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Use this command to delete a timing netlist previously created using create_timing_netlist. This
should be done at the end of a script or before calling create_timing_netlist again using different
options or after recompiling the design. Use the set_operating_conditions command instead of
delete_timing_netlist and create_timing_netlist to change timing models. This avoids the cost of
deleting and re-creating the timing netlist, and also preserves current timing assignments.
Description Enables (or disables) common clock path pessimism (CCPP) removal during slack computation. CCPP
removal can improve timing results by removing min/max delay differences from common portions of
clock paths. Enabling CCPP removal increases the time required to perform timing analysis. When
specified, the optional depth parameter limits the clock tree depth used for CCPP removal. This is
generally not applicable to FPGA compilations where the clock tree is fixed, but for large designs with
potentially deep synthesized clock trees this can reduce outlier run time. When not specified, or when
specified with a value of 0, the complete clock tree is used for CCPP removal (i.e. full clock-tree
depth).
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
405
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
Description Enable the support of SDC extension collections, such as keeper, register and node collections. When
enable_sdc_extension_collections is not used, using these collections causes an error. Default to -on
option.
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
406
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a Tcl collection of available operating conditions for the current device. The Tcl collection
contains the most extreme operating conditions within a user-specified junction temperature range.
Use the -all option to return all available operating conditions.
Example Usage
#do report timing for different operating conditions
foreach_in_collection op [get_available_operating_conditions] {
set_operating_conditions $op
update_timing_netlist
report_timing
}
The following table displays information for the get_cell_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
407
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Gets information about the specified cell (referenced by cell ID). You can obtain cell using the
get_cells Tcl command. The "-type" option returns "cell". Options "-name", "-type", "-pin_name", "-
in_pin_names", "-out_pin_names", "-pins", "-clock_pins", "-in_pins", "-out_pins", "-buried_nodes", "-
buried_regs", "-location", and "-wysiwyg_type" are mutually exclusive.
-data_delay Data Delay Analysis (only applicable for setup and recovery
analysis)
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
408
3. TCL Commands and Packages
UG-20144 | 2021.12.13
project_close
Description Reports potential Fmax for every clock in the design, regardless of the user-specified clock periods.
Fmax is only computed for paths where the source and destination registers or ports are driven by the
same clock. Paths of different clocks, including generated clocks, are ignored. For paths between a
clock and its inversion, Fmax is computed as if the rising and falling edges of the clock are scaled
along with fmax, such that the duty cycle (in terms of a percentage) is maintained. Restricted Fmax
considers hold timing in addition to setup timing, as well as minimum pulse and minimum period
restrictions. Similar to unrestricted Fmax, the restricted Fmax is computed as if the rising and falling
edges of the clock are scaled along with Fmax, such that the duty cycle (in terms of a percentage) is
maintained. Refer to hold timing reports (e.g., report_timing with the -hold option) or minimum pulse
width reports (report_min_pulse_width) for details about specific paths, registers, or ports. This
command is similar to report_clock_fmax_summary, except that it returns the results as a Tcl list for
use in Tcl scripts. Each entry in the list represents one clock domain. Each entry is a Tcl list of the
clock name, fmax (MHz), and restricted Fmax (MHz).
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
409
3. TCL Commands and Packages
UG-20144 | 2021.12.13
read_sdc my_project.sdc
update_timing_netlist
project_close
The following table displays information for the get_clock_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-edge_shifts Return a list of edge shifts that the specified edges are to
undergo to yield the final generated clock waveform
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
410
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns information about the specified clock (referenced by clock ID). Clock IDs can be obtained by
Tcl commands such as get_clocks. The "-type" option returns one of "base", "virtual_base",
"generated", "virtual_generated". Options "-name", "-type", "-period", "-duty_cycle", "-waveform", "-
edges", "-edge_shifts", "-multiply_by", "-divide_by", "-is_inverted", "-latency", "-master_clock", and
"-targets" are mutually exclusive. The "-latency" option requires a specified "-max" or "-min" option
as well as a "-rise" or "-fall" option.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
411
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from <clk_object> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_to <clk_object> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <clk_object> Valid source clocks (string patterns are matched using Tcl
string matching)
-hold Return the hold analysis information if you use the "-
false_path" option
-rise_from <clk_object> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_to <clk_object> Valid destination clocks (string patterns are matched using
Tcl string matching)
-setup Return the setup analysis information if you use the "-
false_path" option. The setup analysis relationship is
returned by default
-to <clk_object> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description The get_clock_pair_info command returns various clock information between two given clocks. If you
specify the "-false_path" option, the command returns a description of the satisfied false path
assignment between the "from" and "to" clocks, which includes clock groups. If you specify the "-
hierarchy" option, the command returns a description of the clock hierarchy relationship between the
two clocks, such as whether the "from" clock is a parent of the "to" clock. Use the "-from" option to
specify the source clock that you want to query, and use the "-to" option to specify the destination
clock that you want to query. When using the "-false_path" option, you can use the "-rise_from"
option to specify a source clock's rising edge to report on, or use the "-fall_from" option to specify a
source clock's falling edge to report on. Likewise, you can use the "-rise_to" option to specify a
destination clock's rising edge, or use the "-fall_to" option to specify a destination clock's falling edge.
You can also specify to retrieve either the setup or hold false path relationship using the "-setup" or "-
hold" option respectively. By default, the setup relationship is reported.
The following table displays information for the get_datasheet Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
412
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This function returns a tcl collection which contains the datasheet report. Its format is as follows:
{ { tsu { <tsu rise time> <tsu fall time> <input port> <clock port> <clock edge> <clock
reference> } } { th { <th rise time> <th fall time> <input port> <clock port> <clock edge> <clock
reference> } } { tco { <tco rise time> <tco fall time> <output port> <clock port> <clock edge>
<clock reference> } } { mintco { <mintco rise time> <mintco fall time> <output port> <clock port>
<clock edge> <clock reference> } } { tpd { <tpd rise-rise time> <tpd rise-fall time> <tpd fall-rise
time> <tpd fall-fall time> <input port> <output port> } } { mintpd { <mintpd rise-rise time>
<mintpd rise-fall time> <mintpd fall-rise time> <mintpd fall-fall time> <input port> <output
port> } } { tzx { <tzx rise time> <tzx fall time> <output port> <clock port> <clock edge> <clock
reference> } } { mintzx { <mintzx rise time> <mintzx fall time> <output port> <clock port> <clock
edge> <clock reference> } } { txz { <tlz time> <thz time> <output port> <clock port> <clock
edge> <clock reference> } } { mintxz { <mintlz time> <minthz time> <output port> <clock port>
<clock edge> <clock reference> } } } There are no options for this command, and the data returned
is the same as from the report_datasheet command.
Description Returns the default SDC file name(s) used by the Quartus Prime Compiler when doing timing-driven
optimizations. Returns the value for the QSF variable SDC_FILE. If multiple assignments are found,
return them as a list If not specified, return <revision_name>.sdc.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
413
3. TCL Commands and Packages
UG-20144 | 2021.12.13
report_timing
delete_timing_netlist
project_close
The following table displays information for the get_edge_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-is_disabled Return whether the edge has been disabled, so should not
be traversed through
Description Returns information about the specified edge (referenced by edge ID). Edge IDs can be obtained by
Tcl commands such as get_node_info <node_id> -synch_edges. The "-type" and "-name" options
exist only to keep the interface compliant with the get_object_info command. The "-type" option
returns specific edge type as "synchronous", "asynchronous", "clock", or "combinational", while the "-
name" option always returns an empty string. The "-delay" option returns the delay associated to the
edge. Use -max, -min and -rr, -rf, -fr, -ff options to specify the type of returned delay. One of the -
max, -min options must be specified. One of the -rr, -rf, -fr, -ff options must be specified. The -hslp
option returns the HS/LP setting associated to the edge. The -unateness option returns the unateness
associated to the edge. The -is_disabled option returns 1 if the edge should not be traversed through,
and 0 if the edge can be traversed through. Disabled edges include edges in SCC loops and edges that
the user has manually cut with the set_disable_timing command.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
414
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns a tcl list of all hierarchical instance paths to a named given entity/module. This can be useful
in SDC files which need to be applied to all instances of a module automatically.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
415
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-type <all|min_period|clock_pulse> Option to determine the minimum pulse width analysis type
Description This command returns a Tcl list which contains the minimum pulse width report. Its format is as
follows: { { <slack>, <actual width>, <required width>, <pulse>, <clock>, <clock edge>,
<target> } } Refer to help for the report_min_pulse_width command for help on the -nworst and -
targets options.
The following table displays information for the get_net_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Returns information about the specified net (referenced by net ID). Net ID's can be obtained by Tcl
commands such as get_nets. The "-type" option returns "net". The options "-name", "-type", and "-
pin" are mutually exclusive.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
416
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
The following table displays information for the get_node_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
417
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Gets information about the specified node (referenced by node ID). Use Tcl commands such as
get_nodes to obtain node IDs. The -type option returns "reg", "port", "pin", "net", or "comb". The -
name, -type, -clock_edges, -synch_edges, -asynch_edges, -fanout_edges, -fanout_clock_edges, -
fanout_synch_edges, -fanout_asynch_edges, -cell and -location options are mutually exclusive.
The following table displays information for the get_object_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
<object> Object
Description Gets information about the specified object (referenced by object ID). Object IDs can be obtained by
Tcl commands such as get_clocks, get_ports, get_cells, and others. The -type option returns "clk",
"reg", "port", "cell", "pin", "comb", "net", or "edge". The -name and -type options are mutually
exclusive.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
418
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
419
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
420
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Example Usage
#see detailed information about operating conditions
foreach_in_collection op [get_available_operating_conditions] {
puts "Delay Model: [get_operating_conditions_info $op -model]"
}
The following table displays information for the get_partition_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Gets information about the specified partition (referenced by partition ID). Partition ID's can be
obtained by Tcl commands such as get_partitions. The -name, -type, -parent, and -child options are
mutually exclusive.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
421
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_path Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-npaths <number> Specifies the number of paths to report. The default value is
1 or the same value as nworst, if nworst is specified. Value
of 0 causes all paths to be reported (be wary that this may
be slow)
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the longest delay path for each
unique combination is displayed.
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-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)
Description Returns a collection of path objects for the longest delay paths between arbitrary points in the netlist.
This command behaves the same as the report_path command. However, instead of reporting the
paths, it returns a Tcl collection of path objects. You can retrieve path object data using the
get_path_info and get_point_info commands. Note that get_path_info does not provide any clock-
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
422
3. TCL Commands and Packages
UG-20144 | 2021.12.13
related information, required points, or meaningful slack values, for paths represented by the path
objects returned by this function. For help on the options shared with report_path, see help for the
report_path command.
if { $node_id ne "" } {
set node_name [ get_node_info $node_id -name ]
}
puts [format "%10s %8s %2s %-6s %s" $total $incr $rf $type $node_name ]
}
project_open my_project
delete_timing_netlist
project_close
The following table displays information for the get_path_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
423
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-borrow_src Return the time borrowed at source (when the path starts
at a level-sensitive latch)
-num_logic_levels Return the number of logic levels on the path between the
to node and from node
-type Return the type of this path. Possible return values are:
"setup", "hold", "recovery", "removal", "max_path",
"min_path"
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
424
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Returns information about the referenced timing path object. You can generate references to path
objects with the get_timing_paths and get_path functions. The -type option returns one of the
following types: "setup", "hold", "recovery", "removal", "max_path", or "min_path". The -from and -to
options return the ID of the nodes at the start and end, respecitvely, of the arrival path. If there is no
node, an empty string is returned. The -from node remains the same, regardless of the level of clock
detail provided. It is always the first node clocked by the -from clock in the data arrival path. You can
use the node ID with the get_node_info function to obtain additional information about the node. The
-from_clock and -to_clock options return the ID of the launching and latching clocks, respectively. If
there is no clock, an empty string is returned. You can obtain additional information about the clocks
using the get_clock_info function. Path objects generated by get_path do not have clock information,
required points, or meaningful slack values. The -arrival_points and -required_points options return a
collection of point objects for the arrival and required paths, respectively. By iterating over the
collection, and using the get_point_info function, you can obtain specific details about each portion of
the path. If a path was created with additional clock detail, the elements of the clock path are
included in each collection of points. The values for the -from, -to, and other 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 the help for
use_timing_analyzer_style_escaping for details. When the path starts at a level-sensitive latch, the -
borrow_src option may be used to get the time borrowed at the source. Similarly, when the path ends
at a level-sensitive latch, -borrow_dst may be used to get the time borrowed at the destination. When
these options are used with anything other than level-sensitive latches, zero is returned. For level-
sensitive latches, when you use the -launch_time or -latch_time options, the times reported do not
include time borrowed. The operating condition corresponding to all of a path's delay and time values
can be found using the -corner option.
if { $clk_id ne "" } {
set clk_str [ get_clock_info $clk_id -name ]
return $clk_str
}
if { $node_id ne "" } {
set node_name [ get_node_info $node_id -name ]
}
puts [format "%10s %8s %2s %-6s %s" $total $incr $rf $type $node_name ]
}
project_open my_project
# And now simply iterate over the 10 worst setup paths, printing each path
foreach_in_collection path [ get_timing_paths -npaths 10 -setup ] {
print_path $path
puts ""
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
425
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
The following table displays information for the get_pin_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Gets information about the specified pin (referenced by pin ID). Pin ID's can be obtained by Tcl
commands such as get_pins. The -type option returns "pin". Options -name, -type, -parent_cell, -net,
-suffix, -is_clock_pin, -is_in_pin and -is_out_pin are mutually exclusive.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
426
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_point_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-edge Return the edge ID for the edge associated with this point.
If the point has no edge, this returns an empty string
-node Return the node ID for the node associated with this point.
If the point has no node, this returns an empty string
-number_of_fanout Return the number of fanout that this point has in the
netlist
-total_delay Return the total delay of the path at this point. This includes
the incremental delay for the point itself
Description Returns information about the referenced timing point object. References to path objects can be
generated using the get_path_info function. A point object is the equivalent of a row in a path in the
output from report_timing. The -node option returns a node ID for the corrsponding node in the path.
For points that do not have a corresponding node (such as points for the lumped clock network delay,
launch time, latch time, individual routing elements, etc.), the node ID is an empty string. A non-
empty node ID can be used in conjunction with the get_node_info function to obtain additional
information about the node. The -edge option returns an edge ID for the corresponding edge in the
path. Only points of type "ic", "cell", and "comp" may have edges. For other point types, an empty
string will be returned. A non-empty edge ID can be used in conjunction with the get_edge_info
function to obtain additional information about the edge. The -total_delay option returns the total
delay along the path, up to and including the current point. The -incremental_delay option returns the
delay incurred by going through this point in the path. Both delays are formated in terms of the
current time units, excluding the unit string. The -number_of_fanout option returns the number of
fanouts that the corresponding node has in the timing netlist. If there is no node for this point, the
return value is 0. The -location option returns a string indicating the location of the corresponding
node in the part. If there is no corresponding node, this returns an empty string. The -rise_fall option
returns the transition type of this point. Possible values for -rise_fall are: Value Description -------
------------------------------ (empty) Unknown transition r Rising output f Falling output rr Rising input,
rising output rf Rising input, falling output fr Falling input, rising output ff Falling input, falling output
The -type option returns a string indicating the type of delay that this point represents in the path.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
427
3. TCL Commands and Packages
UG-20144 | 2021.12.13
if { $clk_id ne "" } {
set clk_str [ get_clock_info $clk_id -name ]
return $clk_str
}
if { $node_id ne "" } {
set node_name [ get_node_info $node_id -name ]
}
puts [format "%10s %8s %2s %-6s %s" $total $incr $rf $type $node_name ]
}
project_open my_project
# And now simply iterate over the 10 worst setup paths, printing each path
foreach_in_collection path [ get_timing_paths -npaths 10 -setup ] {
print_path $path
puts ""
}
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
428
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_port_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Returns information about the specified port (referenced by port ID). Port ID's can be obtained by Tcl
commands such as get_ports. The -type option returns "port". The -name, -type, -edge_rate, -
is_input_port, -is_output_port and is_inout_port options are mutually exclusive.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
429
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_register_info Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-related_pin <related_pin_value> Specify which register port you want the tsu/th/tco for
Description Gets information about the specified register (referenced by register ID). Register IDs can be obtained
by Tcl commands such as get_registers. The -type option returns "reg". The -name, -type, -tco, -tsu,
-th, -tch, -tcl, -tmin, -clock_edges, -synch_edges, -asynch_edges, -fanout_edges and -is_latch
options are mutually exclusive.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
430
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the get_timing_paths Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-false_path Report only paths that are cut by a false path assignment
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
431
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Get a collection of path objects for the worst-case paths. This command behaves the same as the
report_timing command. However, instead of reporting the paths, it returns a Tcl collection of path
objects. You can retrieve path object data using the get_path_info and get_point_info commands. For
help on the options shared with report_timing, see the report_timing help page.
if { $clk_id ne "" } {
set clk_str [ get_clock_info $clk_id -name ]
return $clk_str
}
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
432
3. TCL Commands and Packages
UG-20144 | 2021.12.13
if { $node_id ne "" } {
set node_name [ get_node_info $node_id -name ]
}
puts [format "%10s %8s %2s %-6s %s" $total $incr $rf $type $node_name ]
}
project_open my_project
# And now simply iterate over the 10 worst setup paths, printing each path
foreach_in_collection path [ get_timing_paths -npaths 10 -setup ] {
print_path $path
puts ""
}
delete_timing_netlist
project_close
The following table displays information for the import_sdc Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
update_timing_netlist
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
433
3. TCL Commands and Packages
UG-20144 | 2021.12.13
report_timing
delete_timing_netlist
project_close
The following table displays information for the locate Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-color <black|blue|brown|green| Specify the color to be used to identify the objects you are
grey|light_grey|orange|purple|red| locating
white>
-label <label> Specify a label used to identify the objects you are locating
Description Locate an object from the Timing Analyzer in another Quartus Prime tool. With this command, one or
more objects, or collections of objects, can be located in a supported Quartus tool from the Timing
Analyzer. The destination must be specified with one of the following options: Option Destination Tool
====== ============================== -chip Chip Planner -rpe Resource Property
Editor -rtl RTL Viewer -classic_rtl Classic RTL Viewer -tmv Technology Map Viewer -classic_tmv Classic
Technology Map Viewer -rtm Hyper-Retiming Viewer -dpp Design Partition Planner The -label option
can be used to specify a label for the located objects. The -color command can be used to specify a
color to be used to identify the located objects in the destination tool.
create_timing_netlist -risefall
post_message -type info "Give the GUI some time to catch up to the new netlist. Sleep for
$sleep_for ms"
after $sleep_for
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
434
3. TCL Commands and Packages
UG-20144 | 2021.12.13
read_sdc
update_timing_netlist
}
prepare_design
after 5000
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
435
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the query_collection Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Query collection objects. Collections can be obtained by Tcl commands such as get_clocks, get_ports,
get_cells. If neither the -limit nor the -all option is specified, then first 20 objects (if the collection has
more than 20 objects) or all objects (if the collection has less than or equal to 20 objects) are
returned.
delete_timing_netlist
project_close
The following table displays information for the read_sdc Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-instance <instance_name> Name of the block for which we are reading the SDC file
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
436
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Reads an SDC file with all current constraints and exceptions. If an SDC file is specified, read_sdc only
reads that SDC file. If the -hdl option is specified, read_sdc only reads SDC commands that were
embedded in HDL. If no arguments are specified, read_sdc reads the default SDC files along with any
SDC commands that were embedded in HDL. If one or more SDC_FILE assignments exists in the QSF,
read_sdc reads all of them in order. Otherwise, read_sdc reads the file <revision>.sdc if it exists.
update_timing_netlist
report_timing
delete_timing_netlist
project_close
TCL_ERROR 1 ERROR: The provided instance name does not exist in the
current design.
Description Use this command to specify a TCL procedure that will run before the timing netlist is deleted. This
command can be used to specify a procedure to run, like so: proc mycallback { # This is the body of
the delete_timing_netlist callback. ... } register_delete_timing_netlist_callback mycallback Or, you
may specify the procedure directly: register_delete_timing_netlist_callback { # This is the body of the
delete_timing_netlist callback. ... }
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
437
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This command takes two collections and returns a new collection that is the difference of the two,
effectively the second collection subtracted from the first collection. The second collection can be a
string, but the first has to be previously-created collection: either by passing any of the "get_"
functions directly, or by passing a variable that contains a collection (see code examples for this
command). If a collection is used for the second argument, the types in the second collection must be
the same as or a subset of the types in the first collection. If the first collection consists of keepers,
the second collection can only consist of keepers, registers or ports. If the first collection consists of
partitions, the second collection can only consist of partitions or cells. If the first collection consists of
nodes, the second collection can only consist of nodes, keepers, registers, ports, pins, nets or
combinational nodes.
#or:
set keeprs_without_a1 [remove_from_collection $a_keeprs [get_registers a1*]]
#or even:
set keeprs_without_a1 [remove_from_collection $a_keeprs a1*]
# - note that the last statement will actually remove all keepers with name a1*
# not only registers! (will remove IOs with name a1*, if any)
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
438
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This command creates a report containing all of the relevant signal integrity measurements computed
during I/O buffer simulation. You must perform delay annotation with Advanced I/O Timing enabled
before using this command. This option can be enabled from the Timing Analyzer Page of the Settings
dialog box.
project_close
The following table displays information for the report_asynch_cdc Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-detail <summary|full> Option to specify how much detail should be shown in the
CDC report
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
439
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-nentries <number> Display up to this number of entries per CDC topology. Only
applicable in full detail mode
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description This report displays all Clock-Domain-Crossings (CDC) between asynchronous clocks in a design. The
report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer
graphical user interface ("-panel_name"), or any combination of the three. By default, this command
reports all CDC's in a design. You can limit the analysis performed by this command to specific CDC
source and destination nodes, using the "-from" and "-to" options. The analysis can also be limited
using clocks. Specify the CDC's source and destination clocks using the "-from_clock" and "-to_clock"
options. Alternatively, specify edges of the clock using "-rise_from_clock", "-fall_from_clock", "-
rise_to_clock", and "-fall_to_clock" options. To limit the report to only display specific categories of
CDC's, use "-multi_bit_cdc" to report multi-bit CDC buses, "-single_bit_cdc" to report single-bit CDC
synchronizers, and "-reset_cdc" to report asynchronous reset topologies. By default, all three CDC
categories are reported. Use the "-nentries" option to limit the number of CDC's displayed per CDC
topology type. The topology types fall into one of the three categories above. Run the report to see all
the topology types that are supported. Use the "-detail" option to specify the desired level of reporting
detail. "summary" generates a table listing only the number of CDC topologies recognized per
category and the total number of crossings for that category. "full" reports every recognized CDC
under each topology type, and is the default behaviour. In the full report, you can click on each
individual CDC in the Timing Analyzer graphical user interface to view its statistics.
Example Usage # Report all bus CDC's, up to 10 buses per CDC topology type
report_asynch_cdc -buses -nentries 10
TCL_ERROR 1 ERROR: The current report cannot be run in XML mode. Use
create_timing_netlist to create a non-XML timing netlist.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
440
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_bottleneck Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <panel_name> Sends the results to the panel and specifies the name of the
new panel
Description Reports bottleneck nodes in a design based on user-specified criteria for rating each node. The
following considerations are pre-defined num_fpaths: (default) returns the number of paths that fail
timing through the node. num_fanins: returns the number of fanin edges from the node.
num_fanouts: returns the number of fanout edges from the node. num_paths: returns the number of
paths through the node. tns: returns the total negative slack of all the paths through the node. The
paths to be analyzed can be specified by passing the result of any get_timing_paths call as the last
argument to report_bottleneck. If no paths are specified, report_bottleneck analyzes the worst 1000
setup paths in the design. You can also create your own custom criteria for evaluating nodes based on
the combination of the number of fanouts, fanins, failing paths, and total paths. To use custom
criteria, do the following: 1. Create a Tcl procedure that takes one argument, "arg", for example. 2.
Use "upvar $arg metric" in the procedure. 3. Calculate the rating based on $metric(tns),
$metric(num_fanouts), $metric(num_fanins), and $metric(num_fpaths). 4. Return the rating with
"return $rating". 5. Pass the name of your custom criteria procedure to report_bottleneck using the -
cmetric option. Reports can be directed to the Tcl console (-stdout), the Timing Analyzer graphical
interface (-panel), or a combination of the two.
# create custom metric and use the worst 2000 setup paths
proc report_bottleneck_custom_metric {arg} {
# Description: use the number of fanins as the custom metric.
upvar $arg metric
set rating $metric(num_fanins)
return $rating
}
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
441
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_cdc_viewer Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fully_cut Include transfers where all paths are cut by false path
assignments
-less_than_slack <slack limit> Ignore paths with slack values greater or equal to the
specified limit
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-show_empty Include all clocks in the report, even ones that launch/latch
no paths
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
442
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-timed Include all timed transfers (i.e. those not fully cut by false
paths or clock groups)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Generates a Clock Domain Crossing Viewer (CDC Viewer) report. It displays all clock transfers (i.e.,
data paths between one clock domain and another clock domain) in a design, as well as data on each
transfer: the number of uncut and cut paths in the transfer, the worst-case and total-negative slack of
the transfer, and the tightest setup/hold/removal/recovery relationship between the clocks in the
transfer. The report indicates what clock transfers are cut ("false paths") by set_clock_groups or
clock-to-clock set_false_path commands, and which clock transfers are ignored due to clocks marked
as inactive by set_active_clocks. The report can be directed to the Tcl console ("-stdout", default), a
file ("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any combination of the
three. When directed to a panel or a file without the -list option, the CDC Viewer report will be a grid,
where each cell represents paths transferring between a source and destination clock. When directed
to a panel or an HTML file, the grid will be color- coded to highlight passing, failing, cut, and inactive
transfers, as well as clock groups. When directed to the Tcl console or a file with the -list option, a list
of clock transfers will be reported. The -setup, -hold, -recovery, and -removal options determine the
analysis type of the report, particularly the reporting of false_paths that apply to only one analysis
type. If you do not specify any of these options, a report is generated for each analysis. By default,
the only transfers that will be shown in the report are ones that participate in clock domain crossings.
This means that transfers to/from the same clock will not be shown, even if they fail timing. To show
all transfers, use the -show_all option. The generated report can be customized by a variety of
options. Refer to the help text of those options for more information.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
443
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports potential fmax for every clock in the design, regardless of the user-specified clock periods.
Fmax is only computed for paths where the source and destination registers or ports are driven by the
same clock. Paths of different clocks, including generated clocks, are ignored. For paths between a
clock and its inversion, fmax is computed as if the rising and falling edges of the clock are scaled
along with fmax, such that the duty cycle (in terms of a percentage) is maintained. Restricted fmax
considers hold timing in addition to setup timing, as well as minimum pulse and minimum period
restrictions. Similar to unrestricted fmax, the restricted fmax is computed as if the rising and falling
edges of the clock are scaled along with fmax, such that the duty cycle (in terms of a percentage) is
maintained. The "Note" column reports which analyses restricted fmax. Refer to hold timing reports
(e.g., report_timing with the -hold option) or minimum pulse width reports generated by the
report_min_pulse_width command for details of specific paths, registers, or ports.
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
444
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-include_non_clock_paths Show paths that are potentially in the clock network. These
paths terminate at a register's clock pin but do not start at
a clock source.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-show_full_paths Show the full clock paths - do not reduce the table size by
condensing multiple trivial nodes into one row.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-target <names> Valid nodes in the clock network or clocks (string patterns
are matched using Tcl string matching).
Description The clock network report shows the netlist topology of clock paths that make up the clock network in
a design. It allows the user to track a clock signal from its source, through transformations such as
PLL's, to the loads that the clock drives. It also reveals clock relationships by indicating nodes where
generated clocks are defined. The report can be directed to the Tcl console ("-stdout", default), a file
("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any combination of the
three. Use the "-target" option to specify report targets. These can be clocks in the design or nodes
on the clock network, for example PLL outputs. If you specify clocks as targets, the clock network
report will use the clock's target nodes as report targets. The clock network report then displays all
nodes in the clock network that are in the fanin and fanout cones of the report targets. If no report
target is specified, all clock target nodes in the design are used by default. Each row in the report
may include one node or multiple trivial nodes with singular fanin and fanout edge. To disable the
behaviour of collapsing down trivial nodes into one row, use the "-show_full_paths" option. When
running the clock network report in the Timing Analyzer GUI, rows in the main table corresponding to
report target nodes are highlighted in light blue. You may click on each row of the table to view
information such as clock frequencies, relationships, and why this node belongs in the clock network.
You may right-click on any row to locate the node in other Quartus tools such as RTL Viewer. Use the
"-initial_depth" option to reduce the height of the report table in the Timing Analyzer GUI. Rows in the
main table that are deeper than the set initial depth will be collapsed by default, but can be manually
expanded. If this option is not set, the report determines an appropriate initial depth to use. Use the
"-include_non_clock_paths" option if a node that you expect to be in the clock network cannot be
found. This option shows nodes that lead into a register's clock pin, but are not downstream of any
known clock source. Furthermore, registers that are not clocked by any clocks will be shown using
this option.
Example Usage # Report the clock network that feeds into register regA
report_clock_network -panel {Report} -target [get_registers regA]
# Report the clock network starting from clk_100 clock, but show only the first 10 levels
report_clock_network -panel {Report} -target [get_clocks clk_100] -initial_depth 10
# Report the clock network passing through the combinational node clk_mux|combout.
# In the report, include paths that end at a register's clock pin but do not start
# at a clock source.
report_clock_network -panel {Report} -target [get_nodes clk_mux|combout] -
include_non_clock_paths
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
445
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Generates a timing report table showing all clock transfers (i.e., data paths between one clock domain
and another clock domain). The from and to clocks are shown as well as the number of paths for each
transfer: RR, RF, FR, FF. An RF transfer, for example, occurs when the source register of path is
clocked by the rising edge of its clock and the destination register is clocked by the falling edge of its
clock. The report also indicates what clock transfers are cut ("false paths") by set_clock_groups or
clock-to-clock set_false_path commands. For transfers that are not cut, the number of paths reported
does not take into account paths cut by path-specific set_false_path commands. Actual path counts
may be lower than reported. The report can be directed to the Tcl console ("-stdout", default), a file
("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any combination of the
three. The -setup, -hold, -recovery, and -removal options determine the analysis type of the report,
particularly the reporting of false_paths that apply to only one analysis type. If you do not specify any
of these options, a report is generated for each analysis.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
446
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_clocks Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer
graphical interface ("-panel_name"), or any combination of the three. For stdout/file output, the clock
details are reported in two sections. The first section shows all clocks, their period, and their
waveform. This includes generated clocks after an update_timing_netlist. The second section shows
details for all generated clocks. For the panel report, both sections are combined into a single report.
report_clocks
delete_timing_netlist
project_close
The following table displays information for the report_datasheet Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
447
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This function creates a datasheet report which summarizes the timing characteristics of the design as
a whole. It reports setup (tsu), hold (th), clock-to-output (tco), minimum clock-to-output (mintco),
output enable (tzx), minimum output enable (mintzx), output disable (txz), minimum output disable
(mintxz), propagation delay (tpd), and minimum propagation delay (mintpd) times. These delays are
reported for each clock or port for which they are relevant. If there is a case where there are multiple
paths for a clock (for example if there are multiplexed clocks), then the maximum delay is reported
for the tsu, th, tco, tzx, txz and tpd, and the minimum delay is reported for mintco, mintzx, mintxz
and mintpd. The datasheet can be outputed to the Tcl console ("-stdout", default), a file ("-file"), or a
report panel ("-panel_name"). Additionally if the "-file" option is used then the "-append" option can
be used to specify that new data should be written to the end of the specified file.
The following table displays information for the report_ddr Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
448
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This command generates custom timing reports for EMIF instantiations.
delete_timing_netlist
project_close
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
449
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-neighbor_path_num <number> Specifies the number of before and after paths for the
neighbor paths report (default=1)
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
450
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Reports design metrics of the worst-case paths, with support for two report types specified by the
following arguments: -logic_depth (See the help for report_logic_depth for details) -neighbor_paths
(See the help for report_neighbor_paths for details) Use the "-setup", "-hold", "-recovery", or "-
removal" options to specify which kind of analysis should be performed. In -logic_depth mode, "-
topology" analysis can also be performed. The report can be directed to the Tcl console ("-stdout",
default), a file ("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any
combination of the three. You can limit the analysis performed by this command to specific start and
end points, using the "-from" and "-to" options. Use the "-rise_from" and "-fall_from" options to limit
the analysis to endpoints with established high or low starting states. Use the "rise_to" and "fall_to"
options to limit the analysis to destination points with high or low ending states. The analysis can be
further limited to clocks using the "-from_clock" and "-to_clock" options, or to specific edges of the
clock using the "-rise_from_clock", "-fall_from_clock", "-rise_to_clock", and "-fall_to_clock" options.
Additionally, the "-through" option can be used to restrict analysis to paths which go through specified
pins or nets. Use the "rise_through" and "fall_through" options to limit the analysis to intermediate
points with high or low ending states. Use "-npaths" to limit the number of paths to report. If you do
not specify this option, only the single worst-case path is provided. Use the "-less_than_slack" option
to limit output to all paths with slack less than the specified value, up to the number specified by "-
npaths". Use "-nworst" to limit the number of paths reported for each unique endpoint. If you do not
specify this option, the number of paths reported for each destination node is bounded only by the "-
npaths" option. If this option is used, but "-npaths" is not specified, then "-npaths" will default to the
same value specified for "-nworst". Use the "-pairs_only" option to filter the output further, restricting
the results to only unique combinations of start and end points. In -logic_depth mode, Use the "-
detail" option to specify the desired level of report detail. Specifiying "histogram" generates a
summary showing the distibution of logic depth among the critical paths. A row will be provided for
each clock and a column for each logic depth. Specifying "path" generates a table of paths as rows
with a column coresponding the paths' logic depths similar to the tables reported by "report_timing"
and "report_path". The default behavior is to report a histogram.
project_close
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
451
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_exceptions Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
452
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-valid Option to report only exceptions that cover valid paths and
have been successfully applied
Description Reports status and timing analysis results for each timing exception in your design. A timing
exception is one of: set_false_path, set_multicycle_path, set_min_delay, or set_max_delay. The
status is relative to the paths covered by the -from, -to, and other options. A complete timing
exception relative to the values specified for the -from and -to options may not actually be complete
with respect to the full design. Complete: The exception has not been overridden and is valid There
are paths affected by this exception. Partially overridden: The exception includes some paths that
have been overridden by one or more higher-precedence exceptions. Fully overridden: All paths
affected by this exception have been overridden by one or more higher-precedence exceptions.
Invalid: No paths are affected by this exception. This occurs when a timing exception has valid -from,
-to, or -through collections, but there are no actual paths from the -from nodes to the -to nodes.
Paths will not be analyzed: This exception has no paths for the given analysis type (setup/hold/
recovery/removal). This occurs when a timing exception has paths, but only for analysis types other
than the type used for the current report. Use the -valid option to show only exceptions that have the
status of "Complete" or "Partially overridden". These exceptions cover valid paths and have been
successfully applied. Use the -ignored option to show only exceptions that are partially or fully
ignored. This includes exceptions with the status "Partially Overridden", "Fully Overridden", "Invalid",
as well as any exceptions that have errors and were not included in the analysis. Use the -setup
(default), -hold, -recovery, or -removal options to further filter the exceptions reported. The report
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
453
3. TCL Commands and Packages
UG-20144 | 2021.12.13
can be directed to the Tcl console using -stdout (default), a file using -file, the Timing Analyzer
graphical user interface using -panel_name, or any combination of those three options. You can limit
the reporting by this command to specific start and end points, using the -from and -to options. You
can further limit reporting to clocks using the -from_clock and -to_clock options, or to specific edges
of the clock using the -rise_from_clock, -fall_from_clock, -rise_to_clock, and -fall_to_clock options.
Additionally, the -through option can be used to restrict reporting to paths which go through specified
pins or nets. To determine which timing exceptions override other timing exceptions, use the same -
from and -to options that were used with the overridden timing exception. Use the -npaths option to
limit the number of paths to report per timing exception. If you do not specify this option, only the
single worst-case path per timing exception is provided. Use the -less_than_slack option to limit
output to all paths with slack less than the specified value, up to the number specified by -npaths.
Use the -nworst option to limit the number of paths reported for each unique endpoint. If you do not
specify this option, the number of paths reported for each destination node is bounded only by the -
npaths option. If this option is used, but -npaths is not specified, -npaths defaults to the same value
specified for -nworst. Use the "-pairs_only" option to filter the output further, restricting the results to
only unique combinations of start and end points. Use the "-num_exceptions" option to limit the
report to only show a certain number of exceptions. If the limit is not set or set too high, the report
may need to run for extended durations. Use the "-reachability" option to determine a percentage of
how many start and endpoint pairs given by an exception's -from and -to filters are satisfied by the
exception. If an exception does not have a -from target, the reachability ratio measures how many of
the -to targets are satisfied by the exception, and vise versa for exceptions without a -to target.
Exceptions without both -from and -to targets are not calculated for reachability. An exception that
targets clocks or uses wildcards that match many nodes likely has a lower reachability than an
exception that targets specific nodes. To avoid overly-broad exception constraints, you should use
exceptions with a higher reachability value. Reachability is calculated differently depending on
whether the exception is bus-type. A bus-type exception has both -from and -to options declared, and
they target the same number of nodes. As well, all nodes in the -from option must be declared
together, and all nodes in the -to option must be declared together. Otherwise, the exception is non-
bus type. Bus-type reachability ratio assumes that each node in the -from target connects with one
node in the -to target. Non-bus type reachability ratio is typically more pessimistic because it
assumes that each node in the -from target connects with every node in the -to target. Use the -
detail option to specify the desired level of report detail. Specifiying "summary" generates a single
table listing only the highlights of each timing exception (status and worst-case slack). Specifying
"path_summary" generates a table, per timing exception, listing only the highlights of each path.
Specifying "path_only" reports the path from the source to the destination without any detail about
the clock path. Instead, the clock network delay is shown as a single number. This is the default
behavior. Specifying "path_and_clock" extends the arrival and required paths back to the launch and
latch clocks. Specifying "full_path" causes continued tracing back through generated clocks to the
underlying base clock. To treat clock groups as timing exceptions (meaning that they will override
exceptions with a lower priority), use the "-report_clock_groups" option. By default, all exception
types are reported, and clock groups are reported only if the "-report_clock_groups" option is used.
Use a combination of "-false_path", "-multicycle_path", "-max_delay", "-min_delay", and "-
clock_groups" to limit the analysis to specific exception types. Note that "-clock_groups" option also
treats clock groups as timing exceptions. False path exceptions (set_false_path) are reported as if the
false path was not applied, similar to the -false_path option for report_timing. The values of the "-
from", "-to", and "-through" 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 the help for use_timing_analyzer_style_escaping for details.
*************************** Clock-Domains-Crossing Verification: To view the effects of clock
groups on your design, run "report_exceptions -report_clock_groups". If any pair of clocks in your
design are cut by a set_clock_groups command and NOT cut by a set_false_path command, the
Report shows paths between that pair of clocks as a clock-to-clock exception. Example:
set_clock_groups -logically_exclusive -group {clkA clkB} -group {clkC clkD} report_exceptions -
report_clock_groups -npaths 0 -detail path_only You might want to run "report_exceptions -
report_clock_groups" if: 1. You want to check which paths are cut by a set_clock_groups SDC
command. 2. You want to cut clock paths, but don't want to add set_clock_groups because you're
concerned that you might cut a path incorrectly. With the "report_exceptions -report_clock_groups"
command, you can add set_clock_groups to split clocks that are truly asynchronous, then add
set_false_path commands to manually cut what you want, and then verify (in the Report) that no
paths were found (since false paths have priority). If a path is found by the report, you can correct
that without wasting a compilation concentrating on some unrelated false paths. 3. If you use the
set_clock_groups command and have some logic that is behaving badly and think it's timing related,
run the "report_exceptions -report_clock_groups" command on that hierarchy to verify whether the
correct paths have been cut. ********************************
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
454
3. TCL Commands and Packages
UG-20144 | 2021.12.13
# Reports false path exceptions to determine which ones were overridden by clock groups
report_exceptions -false_path -report_clock_groups -npaths 20
The following table displays information for the report_ini_usage Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports the list of .ini files and variables used during timing analysis.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
455
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_logic_depth Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
456
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Reports a summary showing the distribution of logic depth among the critical paths. Logic depth
typically corresponds to the number of look-up tables (LUTs) that a path passes through. If a path
passes through non-LUT elements such as RAM or DSP blocks, special rules may apply. Use the "-
setup", "-hold", "-recovery", "-removal", or "-topology" options to specify which kind of analysis
should be performed. In topology analysis, paths are ordered by logic depth as opposed to slack. The
report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer
graphical user interface ("-panel_name"), or any combination of the three. You can limit the analysis
performed by this command to specific start and end points, using the "-from" and "-to" options. Use
the "-rise_from" and "-fall_from" options to limit the analysis to endpoints with established high or
low starting states. Use the "rise_to" and "fall_to" options to limit the analysis to destination points
with high or low ending states. The analysis can be further limited to clocks using the "-from_clock"
and "-to_clock" options, or to specific edges of the clock using the "-rise_from_clock", "-
fall_from_clock", "-rise_to_clock", and "-fall_to_clock" options. Additionally, the "-through" option can
be used to restrict analysis to paths which go through specified pins or nets. Use the "rise_through"
and "fall_through" options to limit the analysis to intermediate points with high or low ending states.
Use "-npaths" to limit the number of paths to report. If you do not specify this option, 1000 paths
with the worst slack will be included in the report. Use the "-less_than_slack" option to limit output to
all paths with slack less than the specified value, up to the number specified by "-npaths". Use "-
nworst" to limit the number of paths reported for each unique endpoint. If you do not specify this
option, the number of paths reported for each destination node is bounded only by the "-npaths"
option. If this option is used, but "-npaths" is not specified, then "-npaths" will default to the same
value specified for "-nworst". Use the "-pairs_only" option to filter the output further, restricting the
results to only unique combinations of start and end points. Use the "-detail" option to specify the
desired level of report detail. Specifiying "histogram" generates a summary showing the distibution of
logic depth among the critical paths. A row will be provided for each clock and a column for each logic
depth. Specifying "path" generates a table of paths as rows with a column coresponding the paths'
logic depths similar to the tables reported by "report_timing" and "report_path". The default behavior
is to report a histogram. The values of the "-from", "-to", and "-through" options are either collections
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
457
3. TCL Commands and Packages
UG-20144 | 2021.12.13
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 the help for
use_timing_analyzer_style_escaping for details. The following options are not supported for this
command: --ccpp, --summary_view, --show_routing, --show_xtalk, --detail, --false_path If any of the
following filters are provided, the logic depth distribution will occur over "n critical paths" rather than
"n critical paths per clock" -from, -to, -through, -from_clock, -to_clock, -rise_from, -fall_from, -
rise_to, -fall_to, -rise_from_clock, -fall_from_clock, -rise_to_clock, -fall_to_clock, -rise_through, -
fall_through
project_close
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-npaths <number> Specifies the number of paths to report for each latest and
earliest arrival skew result per set_max_skew assignment
(default=1)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
458
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description TODO
The following table displays information for the report_max_skew Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-npaths <number> Specifies the number of paths to report for each latest and
earliest arrival skew result per set_max_skew assignment
(default=1)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports max skew analysis results for all set_max_skew commands in a single report. For each valid
set_max_skew constraint, this command computes skew with respect to the latest and the earliest
arrival of each path. By default, "Skew for the Latest Arrival" is computed by comparing the latest
arrival of each path with the earliest arrival of the path that has the smallest value for early arrival of
all other paths included in the constraint. Similarly, "Skew for the Earliest Arrival" is computed by
comparing the earliest arrival of each path with the latest arrival of the path that has the largest value
for late arrival of all other paths included in the constraint. No path is compared with itself. Use the -
stdout option to direct the report to the Tcl console (default), the -file option to write the report to a
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
459
3. TCL Commands and Packages
UG-20144 | 2021.12.13
file or the -panel_name option to direct the report to the Timing Analyzer graphical user interface. You
can use these options in any combination. Use the -npaths option to limit the number of path result
pairs reported for each set_max_skew constraint. If you do not specify this option, report_max_skew
only reports the result pair for the single worst-case path. Use the -less_than_slack option to limit
output to all paths with slack less than the specified value, up to the number specified with -npaths.
Use the -detail option to specify the desired level of report detail. The -detail summary option
generates a single table listing only the highlights of each path (and is the same as -summary option,
which this replaces. "-detail path_only" (default) reports the path from the source to the destination
without any detail about the clock path. Instead, the clock network delay is shown as a single number.
"-detail path_and_clock" extends the arrival and required paths back to the launch and latch clocks. "-
detail full_path" continues tracing back through generated clocks to the underlying base clock. The -
show_routing option displays detailed routing information in the path. Lines marked "IC" without the
option are shown, but only as a placeholder. The routing elements for that line are broken out
individually and listed before the line. The return value of this command is a two-element list. The
first number is the number of paths found in the analysis. The second is the worst-case slack, in
terms of the current default time unit. The "RF" column in the report output uses a two-letter symbol
to indicate the rise/fall transition that occurs at that point in the path. Possible "RF" values are: Value
Description ------- ------------------------------- (empty) Unknown transition R Rising output F Falling
output RR Rising input, rising output RF Rising input, falling output FR Falling input, rising output FF
Falling input, falling output The "Type" column in the report uses a symbol to indicate what type of
delay occurs at that point in the path. Possible "Type" values are: Value Description -------
------------------------------------------------------- CELL Cell delay COMP PLL clock network
compensation delay IC Interconnect delay iExt External input delay LOOP Lumped combinational loop
delay oExt External output delay RE Routing element (only for paths generated with the -
show_routing option) uTco Register micro-Tco time uTsu Register micro-Tsu time uTh Register micro-
Th time
# show worst 10 paths for each earliest and latest arrival results
# per max_skew assignment assuming that their slack is less than 0.100
report_max_skew -panel_name "Report Max Skew" -npaths 10 -less_than_slack 0.100 -detail
full_path
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
460
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-max_length <number> Specifies the maximum length of a chain that appears in the
report (default=no limit)
-min_length <number> Specifies the minimum length of a chain that appears in the
report (default=0)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer
graphical interface ("-panel_name"), or any combination of the three. The report_metastability
function can be used to estimate the robustness of asynchronous transfers in your design. ----------
Background ---------- Synchronization register chains should be used when transferring data between
unrelated clock domains to greatly reduce the probability of the captured data signal becoming
metastable. A synchronization register chain is a sequence of registers with the same clock, that is
driven by a pin, or logic from an unrelated clock domain. The output of all but the last register in the
chain must connect only to the next register, either directly or indirectly through logic. When a
register is metastable, its output hovers at a voltage between high and low for a length of time
beyond the normal Tco for the register. The design can fail if subsequent registers that use this
metastable signal latch different values. Therefore, it is important to properly synchronize data signals
to prevent such occurrences. ------ Output ------ The report_metastability function generates a list of
synchronization register chains found in the design, and can provide estimates of the Mean Time
Between Failures (MTBF) of each chain. The design MTBF is an estimate of the overall robustness of
the design, computed from the MTBF results from all synchronization chains with calculated MTBFs.
The design MTBF metric is reported only when the design meets timing. Therefore, it is important to
fully timing constrain your design. The typical MTBF result assumes typical silicon characteristics for
the selected device speed grade, with nominal operating conditions. The worst case MTBF result uses
the worst case silicon characteristics for the selected device speed grade, with worst case operating
conditions. -------- Settings -------- To get a list of possible synchronization chains, set "Synchronizer
Identification" to AUTO in the Timing Analyzer Page in the Settings dialog box. This will set the
"Synchronizer Identification" QSF assignment in your QSF file. The Timing Analyzer will use timing
constraints to automatically detect synchronization chains in the design. Metastability analysis checks
for signal transfers between circuitry in unrelated or asynchronous clock domains, so clock domains
must be related correctly with the timing constraints. Set the maximum number of registers to
consider as part of one synchronization chain, via the "Synchronization Register Chain Length" setting
under Analysis and Synthesis Page in the Settings dialog box. The default length is 2. All the registers
in a chain (up to this length) will be protected from optimizations that can decrease MTBF. Note that if
you change the "Synchronizer Identification" setting, you should rerun the Fitter, as this setting can
impact some optimization algorithms. Use the -nchains option to limit the number of chains to report.
If you do not specify this option, only the single worst-case chain is reported. To filter the
synchronizer chains by their lengths, use the -min_length option to set the minimum chain length to
be reported, and use the -max_length option to set the maximum chain length to be reported.
Alternatively, use the -length option to report only chains with a specific length. ------------- Report
Panels ------------- The MTBF Summary report provides the estimated mean time between failure for
the design. This is an estimate for the overall robustness of the design in terms of metastability, and it
is computed from all available synchronization chain MTBFs present in the design. The MTBF metric of
automatically identified synchronization chains is not computed. To compute the MTBF of a
synchronization chain, set "Synchronizer Identification" to "Forced If Asynchronous" or "Forced" for all
registers of the synchronization chain. By explicitly specifying that this synchronization chain is valid,
this chain will then be optimized during the Fitter, and its MTBF will be computed. Its MTBF will then
be included in the computation of the design MTBF. The Synchronizer Summary table lists all the
synchronization chains found in your design. It is possible that the analysis performed might
erroneously interpret certain structures, such as shift registers, as synchronization chains. If some
synchronization chains are misidentified and you wish to remove them from the report, you can turn
off analysis of these paths by making node-based assignments via the Assignment Editor, set
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
461
3. TCL Commands and Packages
UG-20144 | 2021.12.13
"Synchronizer Identification" to "Off" for the first register in these synchronization chains. Conversely,
if there are synchronization chains in your design that were not detected, you can set "Synchronizer
Identification" assignment to "Forced If Asynchronous" for all registers in this chain through the
Assignment Editor, and this chain will be reported if it meets the criteria for being a synchronization
chain. This can often occur if there is logic present between the registers of the synchronization chain.
In the automatic mode of synchronizer identification, these structures are not considered to be
synchronizers. If you want to force a register to be identified as the head of a synchronizer, set the
"Synchronizer Identification" assignment to "Forced" to the register, and it will always be identified as
the first of a synchronization chain. This setting should not be applied to the entire design, since this
will identify every register in the design as a synchronizer. The MTBF estimates assume the data being
synchronized is switching at a toggle rate of 12.5% of the source clock frequency. That is, the
estimates assume that the arriving data signal switches once every 8 source clock cycles. If multiple
clocks apply, the highest frequency is used. If no source clocks can be determined, then the data rate
is taken as 12.5% of the synchronization clock frequency. If you know the approximate rate at which
the data changes, and would like to obtain a more accurate MTBF, use the "Synchronizer Toggle Rate"
assignment in the Assignment Editor. Set the data toggle rate, in number of transitions per second, on
the first register of a synchronization chain. The Timing Analyzer will then take the specified rate into
account when computing the MTBF of that particular chain. You can also apply this assignment to an
entity or the entire design. Since a "Synchronizer Toggle Rate" assignment of 0 indicates that the data
signal never toggles, the affected synchronization chain will not be reported since it does not affect
the relibility of the design.
report_metastability
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
462
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-type <all|min_period|clock_pulse> Option to determine the minimum pulse width analysis type
Description Reports the results of minimum pulse width and minimum period checks. A minimum pulse width
check verifies that a clock high ("High") or low ("Low") pulse sustains long enough to qualify as a
recognizable change in the clock signal at a register clock pin. A failed minimum pulse width check
indicates that the register may not recognize the clock transition. Each register in the design is
reported twice per clock for mininum pulse width checks: once for the high pulse and once for the low
pulse. A minimum period check verifies that the clock period ("Period") is large enough for the device
to operate. Minimum period checks apply to many types of resources in the FPGA device. The results
of the minimum pulse width checks can be output to the Tcl console ("-stdout," the default), a report
panel ("-panel"), a file ("-file"), or a combination of the three. Results are sorted from worst-case
slack to best-case slack. To limit the number of checks reported, use the "-nworst" option. Results can
be shown in summary ("-detail summary") or in detail ("-detail full_path," the default), showing the
path details for the clock arrival times and how they affect the actual pulse width. The value of the
targets is either a collection or a Tcl list of wildcards used to create a collection of the appropriate
type. The values used must follow standard Tcl or Timing Analyzer-extension substitution rules. See
the help for use_timing_analyzer_style_escaping for details.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
463
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-neighbor_path_num <number> Specifies the number of before and after paths for the
neighbor paths report (default=1)
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
464
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Reports the most timing-critical paths in the design, including associated slack and additional path
summary information, including path bounding boxes. Additionally, for each path, shows its most
timing-critical neighbor paths: the path with the worst slack that fans into the source of the current
path (shown on the report as "Critical Path Before") and the path with the worst slack that fans out of
the destination of the current path (shown as "Critical Path After"). Note that if a register's output is
connected to its own input, one or both of the neighbor paths may be identical to the current path.
When looking for neighbor paths with the worst slack, all operating conditions are considered, not just
the operating conditions of the main path itself. Use the "-setup", "-hold", "-recovery", or "-removal"
options to specify which kind of analysis should be performed. The report can be directed to the Tcl
console ("-stdout", default), a file ("-file"), the Timing Analyzer graphical user interface ("-
panel_name"), or any combination of the three. You can limit the analysis performed by this
command to specific start and end points, using the "-from" and "-to" options. Use the "-rise_from"
and "-fall_from" options to limit the analysis to endpoints with established high or low starting states.
Use the "rise_to" and "fall_to" options to limit the analysis to destination points with high or low
ending states. The analysis can be further limited to clocks using the "-from_clock" and "-to_clock"
options, or to specific edges of the clock using the "-rise_from_clock", "-fall_from_clock", "-
rise_to_clock", and "-fall_to_clock" options. Additionally, the "-through" option can be used to restrict
analysis to paths which go through specified pins or nets. Use the "rise_through" and "fall_through"
options to limit the analysis to intermediate points with high or low ending states. Use "-npaths" to
limit the number of paths to report. If you do not specify this option, only the single worst-case path
is provided. Use the "-less_than_slack" option to limit output to all paths with slack less than the
specified value, up to the number specified by "-npaths". Use "-nworst" to limit the number of paths
reported for each unique endpoint. If you do not specify this option, the number of paths reported for
each destination node is bounded only by the "-npaths" option. If this option is used, but "-npaths" is
not specified, then "-npaths" will default to the same value specified for "-nworst". Use the "-
pairs_only" option to filter the output further, restricting the results to only unique combinations of
start and end points. The values of the "-from", "-to", and "-through" 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 the help for
use_timing_analyzer_style_escaping for details. The following options are not supported for this
command: --ccpp, --summary_view, --show_routing, --show_xtalk, --false_path Ideally you should
use -panel_name or -file option to get the best view of the report. Here is description of each of the
rows displayed for each path: From: Source node in the path To: Destination node in the path Launch
Clock: Source node clock Latch Clock: Destination node clock Relationship: Clock relationship Slack:
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
465
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Slack on the path Complement Analysis Slack: Slack of the same path via complement analysis
Number of Paths: Number of paths with the same source and destination nodes Clock Skew: Clock
Skew on the path Data Delay: Data delay on the path ( ~ cell delay + interconnect delay + misc.
delay ) uTCO Delay: input delay Cell Delay: Cell delay Interconnect Delay: Wire Delay Misc. Delay:
Other kinds of delay Uncertainty Delay: Clock uncertainty delay uTSU Delay: Data stability delay -
setup uTH Delay: Data stability delay - hold Logic Levels: Logic levels in the path Max Fanout:
Maximum fanout for any node on the path I/O Crossings: Number of I/O crossings in the path
Number of wires: number of wires encountered on the path Source/Destination Bounding Box: Co-
ordinates covered by source destination blocks Cell Bounding Box: Co-ordinates covered by cell blocks
Interconnect Bounding Box: Co-ordinates covered by wires Source/Destination Relative Area:
Normalized to 1.0 Cell Relative Area: Ratio of cell area against src/dst bounding area Interconnect
Relative Area: Ration of wire area against src/dst bounding area Elements on Path: Displays the
element type that make up that path TDB Names Along Path: All the TDB elements that make up the
path (only available with developer license) Corner: Describes the corner the path is found in
Complement Analysis Corner: Corner of the complement analysis path found
project_close
The following table displays information for the report_net_delay Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-nworst <number> Specifies the maximum number of paths to report for each
analysis. If unspecified, there is no limit.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
466
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports net delay analysis results based on set_net_delay commands. Each set_net_delay command
is treated as a separate analysis and report_net_delay reports the results of all set_net_delay
commands in a single report. The report contains each set_net_delay command with the worst case
slack result followed by the results of each edge matching the criteria set by that set_net_delay
command. These results are ordered based on the slack value. Use -nworst option to limit the number
of lines reported for a set_net_delay command.
The following table displays information for the report_net_timing Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
467
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Reports delay and fanout information about a net in the design. A net corresponds to a cell output
pin. Report can be directed to the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer
graphical interface ("-panel_name"), or any combination of the three. The value of the name is either
a collection or a Tcl list of wildcards used to create a collection of the appropriate type. The values
used must follow standard Tcl or Timing Analyzer-extension substitution rules. See the help for
use_timing_analyzer_style_escaping for details.
project_close
TCL_ERROR 1 ERROR: You must open a project before you can use this
command.
The following table displays information for the report_partitions Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
468
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Reports timing information related to design partitions. The report_partitions command analyzes the
worst 1000 failing setup paths in the design by default, but you can optionally set the nworst option
to increase or decrease this number. The from_clock and to_clock arguments can be used to control
how this function finds the paths to be analyzed. This function reports the number of failing paths
within each partition and the worst-case slack of the paths that are entirely contained within a single
partition in a Partition Timing Overview table. The function also creates a Partition Timing Details table
that lists the number of failing paths and worst-case slack of paths that feed from one partition to
another partition. This information provides more details on where the critical paths in the design are
with respect to design partitions. The function also creates a Partition Timing Breakdown table. This
table bins the worst failing paths by all partitions that the path spans, and reports the number of
failing paths and worst case slack for each group of partitions. This report can be directed to the Tcl
console ("-stdout", default), a file ("-file"), the Timing Analyzer graphical user interface ("-
panel_name"), or any combination of the three.
Example Usage
project_open my_project
create_timing_netlist
read_sdc
update_timing_netlist
The following table displays information for the report_path Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
469
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-list_clocks Includes the driving clocks associated with the from and to
nodes of each path in the Path Summary table
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same as
nworst
-pairs_only When set, paths with the same start and end points will be
considered to be equivalent. Only the longest delay path for
each unique combination will be displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
Description Reports the longest delay paths and the corresponding delay value. The report can be directed to the
Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer graphical user interface ("-
panel_name"), or any combination of the three. You can limit the analysis performed by this
command to specific start and end points, using the "-from" and "-to" options. Any node or cell in the
design is considered a valid endpoint. Additionally, the "-through" option can be used to restrict
analysis to paths which go through specified pins or nets. Paths that are reported can not start before
or go beyond a keeper node (register or port); this restriction considers register pins as combinational
nodes in the design. Use "-npaths" to limit the number of paths to report. If this option is not
specified, only the single longest delay path is provided. Use "-nworst" to limit the number of paths
reported for each unique endpoint. If you do not specify this option, the number of paths reported for
each destination node is bounded only by the "-npaths" option. If this option is used, but "-npaths" is
not specified, then "-npaths" will default to the same value specified for "-nworst". Use the "-
pairs_only" option to filter the output further, restricting the results to only unique combinations of
start and end points. Use the "-summary" option to generate a single table listing only the highlights
of each path. The "-min_path" option will find the minimum delay path(s) rather than the maximum
delay paths which is the default behavior. The "-show_routing" option will display detailed routing
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
470
3. TCL Commands and Packages
UG-20144 | 2021.12.13
information in the path. Lines that were marked as "IC" without the option will still be shown, but only
as a placeholder. The routing elements for that line will be broken out individually and listed before
the line. The return value of this command is a two-element list. The first number is the number of
paths found in the analysis. The second is the longest delay, in terms of the current default time unit.
The values of the "-from", "-to", "-through" 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 the help for use_timing_analyzer_style_escaping for
details.
project_close
-bus_name <names> When set, pipelining report will give detailed information on
the specific bus
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
471
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This command reports back-to-back pipelining registers information and collapses pipelining chains
based on which bus they are in. Use the "-min_depth" option to specify the minimum average depths
of pipelining buses to report. The default value for this field is "3". Use the "-min_width" option to
specify the minimum width of pipelining buses to report. The default value for this field is "16". By
default, the command reports all of the pipelining buses with average depth and width over the value
specified by "-min_depth" and "-min_width" options. To help check one pipelining bus in detail, this
command also provides detailed mode. Use the "bus_name" to specify which bus to focus.
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
472
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description This report analyzes the final placement of a design and strive to identify registers with sinks that are
pulling them in various directions. These registers are then recommended as candidates for
duplication There are two types of sink: "Immediate Fan-Out" and "Timing Path Endpoint". There are
two types of pull: "Tension" and "Span" The report can be directed to the Tcl console ("-stdout",
default), a file ("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any
combination of the three. Use "-sink_type" to specify between endpoints and immediate fanouts to
report on. If not specified the default will report on endpoint fanouts. Timing Path Endpoints: the
nodes (usually registers) that terminate timing paths from a register Immediate Fanouts: the
immediately connected nodes (lookup tables, other registers, RAM or DSP blocks, etc.) of the register.
Use "-spread_type" to specify the type of spread to report on, a user can choose between: Tension:
the sum over each sink of the distance from it to the centroid of all the sinks. Span: the maximum 1-
dimensional delta between the left/bottom-most sink and the right/top-most sink. Count: the number
of each sink type associated with the source register. The analysis can be limited to clocks using the "-
from_clock" option. Use "-num_registers" to limit the number source registers reported. Registers are
reported in decreasing order of the spread type selected so the top n registers will be reported. If you
do not specify this option, the number of source registers displayed is limited to a maximum of 10.
project_close
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
473
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This command reports retiming restrictions in a hierarchical form. The report helps users identify
various types of retiming restrictions in each entity. Consider removing these retiming restrictions to
allow retiming optimization to improve performance.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
474
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description This command reports nets that router works hardest on.
The following table displays information for the report_rskm Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports RSKM for dedicated LVDS circuitry. In designs that use dedicated LVDS circuitry, receiver
input skew margin (RSKM) is the time margin available before the LVDS receiver megafunction fails to
operate. RSKM is defined as the total time margin that remains after subtracting the sampling window
(SW) size and the receiver channel-to-channel skew (RCCS) from the time unit interval (TUI), as
expressed in the following formula: RSKM = (TUI - SW - RCCS) /2 The time unit interval is the LVDS
clock period (1/fmax). The sampling window is the period of time that the input data must be stable
to ensure that the data is successfully sampled by the LVDS receiver megafunction. The sampling
window size varies by device speed grade. RCCS is the difference between the fastest and slowest
data output transitions, including the tco variation and clock skew. To obtain an accurate analysis of
an LVDS circuit, you should assign an appropriate input delay to the LVDS receiver megafunction.
RCCS is equal to the difference between maximum input delay and minimum input delay. If no input
delay is set, RCCS defaults to zero.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
475
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_sdc Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports all SDC constraints used in the design. Use the -ignored option to report SDC constraints that
were ignored and the reason they were ignored.
report_timing
delete_timing_netlist
project_close
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
476
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the report_skew Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-greater_than_skew <slack limit> Limit the paths reported to those with skew values greater
than the specified limit.
-intra_clock Only report paths whose launch and latch clock are the
same
-npaths <number> Specifies the number of paths to report for each latest and
earliest arrival skew result (default=1)
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
477
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description This report performs skew analysis on selected paths. As opposed to report generated by
report_max_skew command, this command does not depend on the existance of set_max_skew
assignments. This report computes skew with respect to the latest and the earliest arrival of each
selected path. By default, "Skew for the Latest Arrival" is computed by comparing the latest arrival of
each path with the earliest arrival of the path that has the smallest value for early arrival of all other
paths included in the constraint. Similarly, "Skew for the Earliest Arrival" is computed by comparing
the earliest arrival of each path with the latest arrival of the path that has the largest value for late
arrival of all other paths included in the constraint. No path is compared with itself. Use the -stdout
option to direct the report to the Tcl console (default), the -file option to write the report to a file or
the -panel_name option to direct the report to the Timing Analyzer graphical user interface. You can
use these options in any combination. Report skew includes data arrival times, clock arrival times,
register micro parameters, clock uncertainty, on-die variation and ccpp removal. Use the -npaths
option to limit the number of path result pairs reported for each set_max_skew constraint. If you do
not specify this option, report_skew only reports the result pair for the single worst-case path. Use
the -less_than_slack option to limit output to all paths with skew greater than the specified value, up
to the number specified with -npaths. Use the -detail option to specify the desired level of report
detail. "-detail path_only" (default) reports the path from the source to the destination without any
detail about the clock path. Instead, the clock network delay is shown as a single number. "-detail
path_and_clock" extends the arrival and required paths back to the launch and latch clocks. "-detail
full_path" continues tracing back through generated clocks to the underlying base clock. The "-detail
summary" option is deprecated. The -show_routing option displays detailed routing information in the
path. Lines marked "IC" without the option are shown, but only as a placeholder. The routing
elements for that line are broken out individually and listed before the line. The return value of this
command is a two-element list. The first number is the number of paths found in the analysis. The
second is the worst-case skew, in terms of the current default time unit. The "RF" column in the
report output uses a two-letter symbol to indicate the rise/fall transition that occurs at that point in
the path. Possible "RF" values are: Value Description ------- ------------------------------- (empty)
Unknown transition R Rising output F Falling output RR Rising input, rising output RF Rising input,
falling output FR Falling input, rising output FF Falling input, falling output The "Type" column in the
report uses a symbol to indicate what type of delay occurs at that point in the path. Possible "Type"
values are: Value Description ------- ------------------------------- CELL Cell delay COMP PLL clock
network compensation delay IC Interconnect delay iExt External input delay LOOP Lumped
combinational loop delay oExt External output delay RE Routing element (only for paths generated
with the -show_routing option) uTco Register micro-Tco time uTsu Register micro-Tsu time uTh
Register micro-Th time
# show worst 10 paths for each earliest and latest arrival results
report_skew -from [get_ports input[*]] -to [get_registers *] -panel_name "Report Skew" -
npaths 10 -greater_than_skew 0.100 -detail full_path
delete_timing_netlist
project_close
The following table displays information for the report_tccs Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
478
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Description Reports TCCS for dedicated LVDS transmitters. In designs that implement the LVDS I/O standard,
transmitter channel-to-channel skew (TCCS) is the timing difference between the fastest and slowest
output transitions, including tco variations and clock skew.
The following table displays information for the report_timing Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
479
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-false_path Report only paths that are cut by a false path assignment
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
480
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-split_by_corner When set, running this command with the -panel option will
create a folder containing versions of this report for selected
multiple operating conditions. This option has no effect
when used with the -stdout or -file options.
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description Reports the worst-case paths and associated slack. Use the "-setup", "-hold", "-recovery", or "-
removal" options to specify which kind of analysis should be performed. The report can be directed to
the Tcl console ("-stdout", default), a file ("-file"), the Timing Analyzer graphical user interface ("-
panel_name"), or any combination of the three. You can limit the analysis performed by this
command to specific start and end points, using the "-from" and "-to" options. Use the "-rise_from"
and "-fall_from" options to limit the analysis to endpoints with established high or low starting states.
Use the "-rise_to" and "-fall_to" options to limit the analysis to destination points with high or low
ending states. The analysis can be further limited to clocks using the "-from_clock" and "-to_clock"
options, or to specific edges of the clock using the "-rise_from_clock", "-fall_from_clock", "-
rise_to_clock", and "-fall_to_clock" options. Additionally, the "-through" option can be used to restrict
analysis to paths which go through specified pins or nets. Use the "-rise_through" and "-fall_through"
options to limit the analysis to intermediate points with high or low ending states. Use "-npaths" to
limit the number of paths to report. If you do not specify this option, only the single worst-case path
is provided. Use the "-less_than_slack" option to limit output to all paths with slack less than the
specified value, up to the number specified by "-npaths". Use "-nworst" to limit the number of paths
reported for each unique endpoint. If you do not specify this option, the number of paths reported for
each destination node is bounded only by the "-npaths" option. If this option is used, but "-npaths" is
not specified, then "-npaths" will default to the same value specified for "-nworst". Use the "-
pairs_only" option to filter the output further, restricting the results to only unique combinations of
start and end points. Use the "-detail" option to specify the desired level of report detail. "-summary"
generates a single table listing only the highlights of each path (and is the same as "-summary"
option, which this replaces). "-path_only" reports the path from the source to the destination without
any detail about the clock path. Instead, the clock network delay is shown as a single number. This is
the default behavior. "-path_and_clock" extends the arrival and required paths back to the launch and
latch clocks. "-full_path" will continue tracing back through generated clocks to the underlying base
clock. The "-show_routing" option displays detailed routing information in the path. Lines that were
marked as "IC" without the option are still shown, but only as a placeholder. The routing elements for
that line are broken out individually and listed before the line. The "-false_path" option reports only
those paths that are normally hidden by false_path assignments or clock to clock cuts. Like the
default report, this option only reports constrained paths. The "-data_delay" option reports only those
paths that are constrained by set_data_delay. Without this option, such paths are excluded from the
report. The return value of this command is a two-element list. The first number is the number of
paths found in the analysis. The second is the worst-case slack, in terms of the current default time
unit. The "RF" column in the report output uses a two-letter symbol to indicate the rise/fall transition
that occurs at that point in the path. Possible "RF" values are: Value Description -------
------------------------------- (empty) Unknown transition R Rising output F Falling output RR Rising
input, rising output RF Rising input, falling output FR Falling input, rising output FF Falling input,
falling output The "Type" column in the report uses a symbol to indicate what type of delay occurs at
that point in the path. Possible "Type" values are: Value Description -------
------------------------------------------------------- CELL Cell delay COMP PLL clock network
compensation delay IC Interconnect delay iExt External input delay LOOP Lumped combinational loop
delay oExt External output delay RE Routing element (only for paths generated with the -
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
481
3. TCL Commands and Packages
UG-20144 | 2021.12.13
show_routing option) uTco Register micro-Tco time uTsu Register micro-Tsu time uTh Register micro-
Th time The values of the "-from", "-to", and "-through" 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 the help for use_timing_analyzer_style_escaping for
details.
project_close
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
482
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-false_path Report only paths that are cut by a false path assignment
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
483
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
Description The command groups the most timing critical paths to identify the most timing critical entities and
source files. Use the "-setup", "-hold", "-recovery", or "-removal" options to specify which kind of
analysis should be performed. The report can be directed to the Tcl console ("-stdout", default), a file
("-file"), the Timing Analyzer graphical user interface ("-panel_name"), or any combination of the
three. You can limit the analysis performed by this command to specific start and end points, using
the "-from" and "-to" options. Use the "-rise_from" and "-fall_from" options to limit the analysis to
endpoints with established high or low starting states. Use the "-rise_to" and "-fall_to" options to limit
the analysis to destination points with high or low ending states. The analysis can be further limited to
clocks using the "-from_clock" and "-to_clock" options, or to specific edges of the clock using the "-
rise_from_clock", "-fall_from_clock", "-rise_to_clock", and "-fall_to_clock" options. Additionally, the "-
through" option can be used to restrict analysis to paths which go through specified pins or nets. Use
the "-rise_through" and "-fall_through" options to limit the analysis to intermediate points with high
or low ending states. Use "-npaths" to limit the number of paths to report. If you do not specify this
option, 1000 worst-case paths are provided. Use the "-less_than_slack" option to limit output to all
paths with slack less than the specified value, up to the number specified by "-npaths". Use "-nworst"
to limit the number of paths reported for each unique endpoint. If you do not specify this option, the
number of paths reported for each destination node is bounded only by the "-npaths" option. If this
option is used, but "-npaths" is not specified, then "-npaths" will default to the same value specified
for "-nworst". Use the "-pairs_only" option to filter the output further, restricting the results to only
unique combinations of start and end points. The "-false_path" option reports only those paths that
are normally hidden by false_path assignments or clock to clock cuts. Like the default report, this
option only reports constrained paths. The values of the "-from", "-to", and "-through" 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 the help for
use_timing_analyzer_style_escaping for details.
Example Usage report_timing_by_source_files -setup -npaths 1000 -panel_name {Report Timing by Source Files}
The following table displays information for the report_timing_tree Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-fall_from <names> Valid sources (string patterns are matched using Tcl string
matching)
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
484
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-fall_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-fall_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-fall_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-fall_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-from <names> Valid sources (string patterns are matched using Tcl string
matching)
-from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-intra_clock Only report paths whose launch and latch clock are the
same
-less_than_slack <slack limit> Limit the paths reported to those with slack values less than
the specified limit.
-nworst <number> Specifies the maximum number of paths to report for each
endpoint. If unspecified, there is no limit. If nworst is
specified, but npaths is not, npaths defaults to the same
value as nworst
-pairs_only When set, paths with the same start and end points are
considered equivalent. Only the worst case path for each
unique combination is displayed.
-rise_from <names> Valid sources (string patterns are matched using Tcl string
matching)
-rise_from_clock <names> Valid source clocks (string patterns are matched using Tcl
string matching)
-rise_through <names> Valid through nodes (string patterns are matched using Tcl
string matching)
-rise_to <names> Valid destinations (string patterns are matched using Tcl
string matching)
-rise_to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
-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)
-to_clock <names> Valid destination clocks (string patterns are matched using
Tcl string matching)
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
485
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Reports the worst-case paths and associated slack grouped by design entity. Each entity level
indicates the worst-case slack and number of paths at that level. Use the "-setup", "-hold", "-
recovery", or "-removal" options to specify which kind of analysis should be performed. Use the "-
panel_name" option to direct the report to the Timing Analyzer graphical user interface. You can limit
the analysis performed by this command to specific start and end points, using the "-from" and "-to"
options. Use the "-rise_from" and "-fall_from" options to limit the analysis to endpoints with
established high or low starting states. Use the "rise_to" and "fall_to" options to limit the analysis to
destination points with high or low ending states. The analysis can be further limited to clocks using
the "-from_clock" and "-to_clock" options, or to specific edges of the clock using the "-
rise_from_clock", "-fall_from_clock", "-rise_to_clock", and "-fall_to_clock" options. Additionally, the "-
through" option can be used to restrict analysis to paths which go through specified pins or nets. Use
the "rise_through" and "fall_through" options to limit the analysis to intermediate points with high or
low ending states. Use "-npaths" to limit the number of paths to report. If you do not specify this
option, only the single worst-case path is provided. Use the "-less_than_slack" option to limit output
to all paths with slack less than the specified value, up to the number specified by "-npaths". Use "-
nworst" to limit the number of paths reported for each unique endpoint. If you do not specify this
option, the number of paths reported for each destination node is bounded only by the "-npaths"
option. If this option is used, but "-npaths" is not specified, then "-npaths" will default to the same
value specified for "-nworst". Use the "-pairs_only" option to filter the output further, restricting the
results to only unique combinations of start and end points. The values of the "-from", "-to", and "-
through" 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 the help for use_timing_analyzer_style_escaping for details.
The following table displays information for the report_ucp Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
-panel_name <name> Sends the results to the panel and specifies the name of the
new panel
-stdout Send output to stdout, via messages. You only need to use
this option if you have selected another output format, such
as a file, and would also like to receive messages.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
486
3. TCL Commands and Packages
UG-20144 | 2021.12.13
report_ucp
delete_timing_netlist
project_close
Description Use this command to specify operating conditions different from the initial conditions used to create
the timing netlist. When a timing model is not specified, the slow model is used. Voltage and
temperature options must be used together. These two options are not available for all devices. The
get_available_operating_conditions command returns the list of available operating conditions for
your device. Use the -speed option to analyze the design at a different speed grade of the selected
device. Use the -grade option to analyze the design at a different temperature grade. This option is
provided to support what-if analysis and is not recommended for final sign-off analysis. By default,
delay annotation is skipped if previously performed. Use -force_dat to rerun delay annotation.
Example Usage #do report timing for different operating conditions one by one
foreach_in_collection op [get_available_operating_conditions] {
set_operating_conditions $op
update_timing_netlist
report_timing
}
#set aggregated report timing for all operating conditions when corner aggregation is enabled
set_operating_conditions [get_available_operating_conditions]
report_timing
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
487
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Values entered did not match any valid operating
conditions. Available operating conditions are: <string>
Description Checks if the timing netlist exists. Returns 1, if the timing netlist exists. Returns 0, otherwise.
-dynamic_borrow Use time borrowing values that are correct for the current
clock constraints
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
488
3. TCL Commands and Packages
UG-20144 | 2021.12.13
Description Updates and applies SDC commands to the timing netlist. The update_timing_netlist command
expands and validates generated clocks, warns about sources in the design that require clock
settings, identifies and removes combinational loops, and warns about undefined input/output delays.
Most Tcl commands (e.g., report_timing) automatically update the timing netlist when necessary. You
can use the update_timing_netlist command explicitly to control when updating occurs, or to force a
full update using the -full option. The update_timing_netlist command can also be used to control
time borrowing behavior. Time borrowing is a technique whereby certain flip-flops in certain device
families are allowed to have signals that arrive late (thus improving upstream slack), at the expense
of downstream slack. The amount of time borrowing allowed at each flip-flop is hardware-dependent.
By default, optimal time borrowing values are computed at the end of the Fitter (Finalize) stage (if
enabled by your compilation settings), and these are the values you will see in the timing reports. To
turn off time borrowing support, use the -no_borrow option. This is not recommended, as it may
result in significantly pessimistic timing results. If you have changed clock constraints after compiling
your design, pre-computed optimal time borrowing values may no longer be valid. Time borrowing will
be turned off for the changed clocks, resulting in pessimistic timing. To get optimal results once again,
run update_timing_netlist with the -recompute_borrow option. This may take significant time on large
designs, but the results will be saved and available the next time you run update_timing_netlist
without any time borrowing options. The time borrowing optimization algorithm has a few limitation -
for example, it never borrows any time on sources of cross-clock transfers, sources of paths with
set_max_delay or set_max_skew constraints, or in any clock domain containing at least one level-
sensitive latch. If your design is correctly constrained, you may overcome these limitations and get
better timing results with the -dynamic_borrow option, which calculates time borrowing amounts
based on your actual clock constraints (rather than optimizing for highest FMax within each clock
domain). Note that -dynamic_borrowing is not recommended for overconstrained designs.
delete_timing_netlist
project_close
Description Use Timing Analyzer-style escaping. (Timing Analyzer-style escaping is enabled by default. The values
used to create a collection, whether explicitly using a collection command or implicitly as a value
specified as a "-from", "-to", or similar option to various SDC and report commands, are a Tcl list of
wildcards. This includes a single name with an exact match. The value must follow standard Tcl
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
489
3. TCL Commands and Packages
UG-20144 | 2021.12.13
substitution rules for Tcl lists and "string match" as described below, unless using Timing Analyzer-
style escaping (default). For special characters such as '$', the character must be escaped using a
single '\' character to prevent Tcl from interpreting the word after '$' as a Tcl variable, such as: Clk\
$Signal. A '\' character itself must be escaped with another '\' as in the '$' case, must be escaped
again for the Tcl list, and must be escaped yet again for Tcl "string match." The final result is eight '\'
characters, such as: Clk\\\\\\\\Signal. Using Tcl "list" eliminates one level of escaping, since it will
escape any '\' characters automatically for the Tcl list, such as: [list Clk\\\\Signal] Using '{' and '}'
characters also eliminates the need for one or two levels of escaping, since '{' and '}' prevent string
substitution in the contents, such as: [List {Clk\\Signal}] {{Clk\\Signal}} The
use_timing_analyzer_style_escaping option, which is on by default, allows the user to specify a name
containing '\' characters with only two '\' characters in all cases, such as: Clk\\Signal. The extra '\'
characters required for Tcl list string substitution and "string match" are added automatically by the
Timing Analyzer. To disable Timing Analyzer style string escaping, call
"use_timing_analyzer_style_escaping -off" before adding any timing constraints or exceptions.
delete_timing_netlist
project_close
The following table displays information for the write_sdc Tcl command:
Tcl Package and Belongs to ::quartus::sta on page 393
Version
Description Generates an SDC file with all current constraints and exceptions. When you use the -expand option,
derive_clocks, derive_pll_clocks, derive_lvds_clocks and derive_clock_uncertainty macros are be
expanded to corresponding sdc assignments before they are written to a file. If you do not use the -
expand option, these macros are preserved. Use the -valid_exceptions option to generate an SDC file
that contains only valid timing exceptions. Run the report_exceptions command with the -valid option
to see all the valid timing exceptions in your design.
report_timing
write_sdc my_sdc_file.sdc
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
490
3. TCL Commands and Packages
UG-20144 | 2021.12.13
delete_timing_netlist
project_close
3.1.30. ::quartus::stp
The following table displays information for the ::quartus::stp Tcl package:
Tcl Package and Version ::quartus::stp 1.0
Description This package contains the set of Tcl functions for acquiring Signal Tap data from the Intel
device.
quartus_stp
quartus_stp_tcl
The following table displays information for the close_session Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
Description Saves the current session to the existing Signal Tap File (.stp).
#capture data to log named log1, timeout after 5 seconds if no trigger occurs
if { [catch {run -instance auto_signaltap_0 -signal_set signal_set_1 -trigger trigger_1 -
data_log log_1 -timeout 5} err_msg} {
# Timeout event is thrown as TCL exception
puts "ERROR: $err_msg"
}
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
491
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_OK 0 INFO: Session has been saved in Signal Tap File and closed
TCL_ERROR 1 ERROR: Can't open Signal Tap File for writing. Make sure
Signal Tap File exists, has write permission, and is not
currently being used by another program.
TCL_ERROR 1 ERROR: Session has not been opened. Make sure a session
is open before attempting to close it.
The following table displays information for the export_data_log Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
-filename <export file name> The file name of the exported file
-signal_set <signal set> Name of signal set that defines data log
Description Exports the specified data log from the current open session into another file in different format. If a
data log is not explicitly specified, the last active one is used. The supported file formats are Comma
Separated Value file (.csv), Value Change Dump file (.vcd), and Table file (.tbl).
#capture data to log named log1, timeout after 5 seconds if no trigger occurs
if { [catch {run -instance auto_signaltap_0 -signal_set signal_set_1 -trigger trigger_1 -
data_log log_1 -timeout 5} err_msg} {
# Timeout event is thrown as TCL exception
puts "ERROR: $err_msg"
}
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
492
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Error occured when the specified data log was
exported to a file.
TCL_ERROR 1 ERROR: Instance, signal set, or trigger does not exist. Make
sure the instance, signal set, and trigger exist in the Signal
Tap File.
TCL_ERROR 1 ERROR: Session has not been opened. Make sure a session
is open before attempting to close it.
The following table displays information for the open_session Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
Description Opens a session from the specified Signal Tap File (.stp).
#capture data to log named log1, timeout after 5 seconds if no trigger occurs
if { [catch {run -instance auto_signaltap_0 -signal_set signal_set_1 -trigger trigger_1 -
data_log log_1 -timeout 5} err_msg} {
# Timeout event is thrown as TCL exception
puts "ERROR: $err_msg"
}
TCL_OK 0 INFO: Session has been opened from Signal Tap File
TCL_ERROR 1 ERROR: Can't open Signal Tap File for reading. Make sure
the Signal Tap File exists and has read permission.
TCL_ERROR 1 ERROR: Signal Tap File contains syntax error. Make sure the
Signal Tap File is formatted correctly before opening. Intel
recommends that you do not manually edit Signal Tap Files,
but use the Signal Tap dialog boxes in the Quartus Prime
GUI.
The following table displays information for the run Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
Syntax run [-h | -help] [-long_help] [-bridge <bridge> ] [-data_log <data log> ] [-
device_name <device name> ] [-hardware_name <hardware name> ] [-instance
<instance> ] [-signal_set <signal set> ] [-timeout <timeout> ] [-trigger <trigger> ]
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
493
3. TCL Commands and Packages
UG-20144 | 2021.12.13
-bridge <bridge> Bridge to use instead of the one specified in the stp file
-device_name <device name> Device to use instead of the one specified in the stp file. Tcl
command, get_device_names, can be used to obtain the
valid hardware names
-hardware_name <hardware name> JTAG programming hardware to use instead of the one
specified in the stp file. Tcl command,
get_hardware_names, can be used to obtain the valid
hardware name
-signal_set <signal set> Name of signal set that defines data acquisition
Description Starts data acquisition with the specified conditions in the session and saves data into the specified
data log within the timeout period.
#capture data to log named log1, timeout after 5 seconds if no trigger occurs
if { [catch {run -instance auto_signaltap_0 -signal_set signal_set_1 -trigger trigger_1 -
data_log log_1 -timeout 5} err_msg} {
# Timeout event is thrown as TCL exception
puts "ERROR: $err_msg"
}
TCL_ERROR 1 ERROR: Instance, signal set, or trigger does not exist. Make
sure the instance, signal set, and trigger exist in the Signal
Tap File.
TCL_ERROR 1 ERROR: Session has not been opened. Make sure a session
is open before attempting to close it.
TCL_ERROR 1 ERROR: Trigger did not occur in timeout period. Make sure
trigger conditions are valid and/or increase timeout period.
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
494
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the run_multiple_end Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
Description Defines the end of a set of "run" commands. This command is used when multiple instances of data
acquisition are started simultaneously. Add "run_multiple_start" before the set of "run" commands
that specify data acquisition. Add this command after the set of commands. If "run_multiple_end" is
not included, the "run" commands do not execute.
TCL_ERROR 1 ERROR: Run multiple instances has not been started. Use
run_multiple_start before using run_multiple_end.
TCL_ERROR 1 ERROR: Session has not been opened. Make sure a session
is open before attempting to close it.
The following table displays information for the run_multiple_start Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
Description Defines the start of a set of "run" commands. This command is used when multiple instances of data
acquisition are started simultaneously. Add this command before the set of "run" commands that
specify data acquisition. Add "run_multiple_end" after the set of commands. If "run_multiple_end" is
not included, the "run" commands do not execute.
continued...
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
495
3. TCL Commands and Packages
UG-20144 | 2021.12.13
TCL_ERROR 1 ERROR: Session has not been opened. Make sure a session
is open before attempting to close it.
The following table displays information for the stop Tcl command:
Tcl Package and Belongs to ::quartus::stp on page 491
Version
3.1.31. ::quartus::tdc
The following table displays information for the ::quartus::tdc Tcl package:
Tcl Package and Version ::quartus::tdc 1.0
Description This package contains the set of Tcl functions for obtaining information from the Timing
Analyzer.
qpro
quartus
continued...
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
496
3. TCL Commands and Packages
UG-20144 | 2021.12.13
quartus_fit
quartus_map
quartus_pow
quartus_sta
quartus_syn
The following table displays information for the is_place Tcl command:
Tcl Package and Belongs to ::quartus::tdc on page 496
Version
Description Returns true when called from Fitter during the placer. (Only supported in Quartus Prime Pro Edition)
The following table displays information for the is_plan Tcl command:
Tcl Package and Belongs to ::quartus::tdc on page 496
Version
Description Returns true when called from Fitter during the plan. (Only supported in Quartus Prime Pro Edition)
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
497
3. TCL Commands and Packages
UG-20144 | 2021.12.13
The following table displays information for the is_post_route Tcl command:
Tcl Package and Belongs to ::quartus::tdc on page 496
Version
Description Returns true when called from Fitter after router has completed or when post-fitting delays are
annotated. (Only supported in Quartus Prime Pro Edition)
3.1.32. ::quartus::uno
The following table displays information for the ::quartus::uno Tcl package:
Tcl Package and Version ::quartus::uno 1.0
quartus_syn
The following table displays information for the uno::write_verilog Tcl command:
Tcl Package and Belongs to ::quartus::uno on page 498
Version
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
498
3. TCL Commands and Packages
UG-20144 | 2021.12.13
2021.12.13 21.4 • Updated for latest Tcl commands and packages support.
2021.10.04 21.3 • Updated for latest Tcl commands and packages support.
2021.03.29 21.1 • Updated for latest Tcl commands and packages support.
2020.12.14 20.4 Initial release of Tcl Commands and Packages reference chapter.
Send Feedback Intel Quartus Prime Pro Edition User Guide: Scripting
499
UG-20144 | 2021.12.13
Send Feedback
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel
Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any ISO
products and services at any time without notice. Intel assumes no responsibility or liability arising out of the 9001:2015
application or use of any information, product, or service described herein except as expressly agreed to in Registered
writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying
on any published information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
UG-20144 | 2021.12.13
Send Feedback
Related Information
• Intel Quartus Prime Pro Edition User Guide: Getting Started
Introduces the basic features, files, and design flow of the Intel Quartus Prime
Pro Edition software, including managing Intel Quartus Prime Pro Edition
projects and IP, initial design planning considerations, and project migration
from previous software versions.
• Intel Quartus Prime Pro Edition User Guide: Platform Designer
Describes creating and optimizing systems using Platform Designer, a system
integration tool that simplifies integrating customized IP cores in your project.
Platform Designer automatically generates interconnect logic to connect
intellectual property (IP) functions and subsystems.
• Intel Quartus Prime Pro Edition User Guide: Design Recommendations
Describes best design practices for designing FPGAs with the Intel Quartus
Prime Pro Edition software. HDL coding styles and synchronous design
practices can significantly impact design performance. Following recommended
HDL coding styles ensures that Intel Quartus Prime Pro Edition synthesis
optimally implements your design in hardware.
• Intel Quartus Prime Pro Edition User Guide: Design Compilation
Describes set up, running, and optimization for all stages of the Intel Quartus
Prime Pro Edition Compiler. The Compiler synthesizes, places, and routes your
design before generating a device programming file.
• Intel Quartus Prime Pro Edition User Guide: Design Optimization
Describes Intel Quartus Prime Pro Edition settings, tools, and techniques that
you can use to achieve the highest design performance in Intel FPGAs.
Techniques include optimizing the design netlist, addressing critical chains that
limit retiming and timing closure, optimizing device resource usage, device
floorplanning, and implementing engineering change orders (ECOs).
• Intel Quartus Prime Pro Edition User Guide: Programmer
Describes operation of the Intel Quartus Prime Pro Edition Programmer, which
allows you to configure Intel FPGA devices, and program CPLD and
configuration devices, via connection with an Intel FPGA download cable.
• Intel Quartus Prime Pro Edition User Guide: Block-Based Design
Describes block-based design flows, also known as modular or hierarchical
design flows. These advanced flows enable preservation of design blocks (or
logic that comprises a hierarchical design instance) within a project, and reuse
of design blocks in other projects.
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel
Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any ISO
products and services at any time without notice. Intel assumes no responsibility or liability arising out of the 9001:2015
application or use of any information, product, or service described herein except as expressly agreed to in Registered
writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying
on any published information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
A. Intel Quartus Prime Pro Edition User Guides
UG-20144 | 2021.12.13
Intel Quartus Prime Pro Edition User Guide: Scripting Send Feedback
502