Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 12/13/2021

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents execute_flow (::quartus::flow)

The following table displays information for the execute_flow Tcl command:

Tcl Package and Version

Belongs to ::quartus::flow

Syntax execute_flow [-h | -help] [-long_help] [-analysis_and_elaboration] [-check_ios] [-check_netlist] [-compile] [-dont_export_assignments] [-eco <value> ] [-export_database] [-finalize] [-generate_functional_sim_netlist] [-implement] [-import_database] [-incremental_compilation_export] [-incremental_compilation_import] [-quick_elaboration] [-signalprobe]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-analysis_and_elaboration Option to run Analysis and Elaboration
-check_ios Option to run I/O assignment analysis
-check_netlist Option to run Check and Save Netlist
-compile Option to run a full compilation
-dont_export_assignments Option not to export assignments to file. By default, this command exports assignments before running command-line executables.
-eco <value> Option to run a Fitter ECO compilation
-export_database Option to export a version-compatible database
-finalize Option to run algorithms to prepare design for programming.
-generate_functional_sim_netlist Option to generate a functional simulation netlist
-implement Option to run compilation up to route stage and skipping all time intensive algorithms after.
-import_database Option to import a version-compatible database
-incremental_compilation_export Option to export a design partition into a Quartus Prime Exported Partition (QXP) file
-incremental_compilation_import Option to import one or more Quartus Prime Exported Partition (QXP) files into the design partitions of the current project
-quick_elaboration Option to run Quick Elaboration
-signalprobe Option to run a Signal Probe compilation

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

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
should specify the name of the partition to be exported. The value of
(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
whether routing should be exported when a post-fit netlist is

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:


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"
Example Usage
# To run quartus_map, quartus_fit, quartus_sta, quartus_asm
# or other executables based on options. (Refer to "Using 
# Compilation Flows," "Compiling Designs," and "Specifying 
# Compiler Settings" in Quartus Prime online Help for more 
# information.)
execute_flow -compile 

# To determine if compilation was successful or not
# and print out a personalized message.
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"

                # To perform a full compilation
                execute_flow -compile
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful
TCL_ERROR 1 ERROR: Can't run multiple flows simultaneously. Wait for current flow to complete.
TCL_ERROR 1 ERROR: Flow doesn't exist: <string>. Make sure the specified flow exists.