Intel® Quartus® Prime Pro Edition User Guide: Design Compilation

ID 683236
Date 4/03/2023

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

Document Table of Contents

2.4.3. Viewing Synthesis Dynamic Report

The dynamic report feature allows you to interact with a full report that displays only a few items in the GUI. This feature is off by default, and you can enable it through the synth_rpt_enable_dynamic_report QSF. Currently, you can view dynamic reports only for the Registers Removed During Synthesis report.

In the following report, you can observe that the compiler removed 12984 registers during synthesis. However, after 2780 registers, the remaining registers are truncated from the report due to the GUI threshold. With the dynamic report feature, you can retrieve details of these remaining registers without recompiling your design using the updated GUI threshold.

Figure 50. Sample Registers Removed During Synthesis Report

Within one compilation, the compiler stores all items from the report in a dynamic SQLite database under <project_directory>/dynamic_report/registers_removed.sqlite. After design synthesis, you can access the SQLite database through Tcl commands to extract a summary of the SQLite database (for example, data column and total size of the items), query from the database using SQL commands (for example, SELECT and WHERE), and retrieve the desired number of truncated lines from the report.

  • If you recompile after generating the SQLite database, contents are rewritten to the same database. If you turn off the QSF during recompilation, the SQLite database retains the information from the previous compile.
  • If your design does not contain registers to be removed during synthesis, the compiler does not generate the Registers Removed During Synthesis report. Hence, the dynamic_report directory and the SQLite database are also not generated.

Executing Tcl Commands

You can execute the dynamic_report Tcl commands in one of the following ways:

  • Include Tcl commands in a Tcl script and run it using quartus_syn -t <name>.tcl.
  • Execute a single command directly from your terminal as quartus_syn --tcl_eval <tcl command> .
  • Execute a single command from the GUI by launching your project in the Intel® Quartus® Prime software and navigating to View > Tcl Console on the menu. In the Tcl Console window, type your Tcl command.

The result is the same irrespective of the method you use to execute your dynamic_report Tcl command.

Note: When you execute a dynamic_report Tcl command, the Tcl command attempts to open the corresponding SQLite database immediately for further action. The path to open the database is absolute. So, you must ensure that your current directory is where your design is located and not in the dynamic_report directory. Otherwise, an error displays indicating the path to the SQLite database is incorrect or an issue with opening the SQLite database.

The following table lists some example dynamic_report Tcl commands with various options:

Table 17.   dynamic_report Tcl Command Examples
dynamic_report Command Option Description Tcl Command Example
-help Provides detailed help for the dynamic_report Tcl command, including currently supported report values, options, and error values. dynamic_report -help
-long_help Provides long help for the dynamic_report Tcl command with examples and possible return values. dynamic_report -long_help
-report <report name> Targets the report that <report name> specifies. For the Registers Removed During Synthesis report, use "registers removed".
Note: The -report option is mandatory as the Tcl command takes further action based on the report name. Absence of the -report option or using an unsupported value for <report name> results in an error.
dynamic_report -report "registers removed"
-summary Generates a summary of the specified report, such as the table name, total size, and column names, which help query from the SQLite database. dynamic_report -report "registers removed" -summary
-query <sqlite query> Accepts an entire SQLite query as an option to retrieve the desired result from the database. For example, -query "SELECT * FROM <table> WHERE <column> = <...>"

If the query command is incorrect or incomplete, an error message displays with details.

The result of this query is sent to an output file under the <project directory>/dynamic_report directory in ASCII format by default.

dynamic_report -report "registers removed" -query "SELECT * FROM 'Registers Removed During Synthesis' WHERE reason = 'Stuck at VCC due to stuck port data_in'"
-dump_all Dumps all items in the report.

The result of this query is sent to an output file under the <project directory>/dynamic_report directory in ASCII format by default.

dynamic_report -report "registers removed" -dump_all
-dump_lines <unsigned integer> Dumps first <unsigned integer> of lines in the report. An error message displays if the value specified for <unsigned integer> is not an unsigned integer or not in the range of 1 and 999999999.

The result of this query is sent to an output file under the <project directory>/dynamic_report directory in ASCII format by default.

dynamic_report -report "registers removed" -dump_lines 250
-filename <file_name> Specifies an output file name for the results dumped by -query, -dump_all, and -dump_lines options.

-filename is optional. If you do not specify a file name, the compiler names the output file as <report name>.ascii. An error message displays if the file name is empty or contains special characters or spaces.

Note: With the -filename option, you can use the -html or -xml option to generate the output file in HTML or XML format, respectively.
dynamic_report -report "registers removed" -dump_all -filename "my_result"
Attention: The options -summary, -query, -dump_all, and -dump_lines are mandatory but exclusive, which means that the dynamic_report Tcl command requires only one option. If you include multiple options within a single dynamic_report Tcl command, an error message displays requesting you to specify a single option.