Quartus® Prime专业版用户指南: 设计编译

ID 683236
日期 4/01/2024
Public
文档目录

1.7.6. 查看综合动态报告

动态报告功能允许您与完整报告进行交互,在GUI中该报告仅显示少数几个项目。默认情况下该功能被关闭,但是您可以通过synth_rpt_enable_dynamic_report QSF将其启用。目前,您查看动态报告功能仅能看到Registers Removed During Synthesis报告。

在以下报告中,您可以观察到在综合期间编译器删除了12984个寄存器。但是,在2780个寄存器之后,由于GUI阈值,剩余的寄存器被从报告中截断。通过动态报告功能,您可以检索这些剩余寄存器的详细信息,而无需使用更新的GUI阈值重新编译您的设计。

注: 您可以通过Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis) > Number of Removed Registers Reported in Synthesis Report选项来修改报告中已删除寄存器的数量。
图 68. 综合期间被删除寄存器的样本报告

在一次编译中,编译器将从报告来的所有项目都存储在<project_directory>/dynamic_report/registers_removed.sqlite下的动态SQLite数据库中。设计综合后,您可以通过Tcl命令访问 SQLite数据库,以提取SQLite数据库的总结(例如,数据列和项目总大小)、使用SQL命令(例如,SELECTWHERE)从数据库中进行查询,以及从报表中检索所需数量的截断行数。

注:
  • 如果您在生成SQLite后进行重新编译,则内容被写入相同数据库。如果你在重新编译期间关闭QSF,则SQLite数据库保持从之前编译来的信息。
  • 如果综合期间您的设计中不包含需要删除的寄存器,那么编译器不会生成Registers Removed During Synthesis报告。因此,dynamic_report目录和SQLite数据库也不会生成。

执行Tcl命令

您能够以如下方式之一执行 dynamic_report Tcl 命令:

  • 在Tcl脚本中包含Tcl命令,并使用quartus_syn -t <name>.tcl运行该命令。
  • 直接从终端执行单个命令,如quartus_syn --tcl_eval <tcl command>
  • 通过在 Quartus® Prime软件中启动您的工程,从GUI执行单个命令,然后在菜单上浏览到View > Tcl Console。在Tcl Console窗口中,键入您的Tcl命令。

无论您使用何种方法执行dynamic_report Tcl命令,结果都相同。

注: 当您执行dynamic_report Tcl命令时,Tcl命令会尝试立即打开相应的SQLite数据库以进行进一步的操作。打开数据库的路径是绝对的。因此,您必须确保当前目录是您的设计所在的位置,而不是dynamic_report目录中的位置。否则,将显示一个错误,指示SQLite数据库的路径不正确或打开SQLite数据库时出现问题。

下表列出了一些的 dynamic_report Tcl命令示例和各种选项:

表 18.   dynamic_report Tcl命令实例
dynamic_report命令选项 描述 Tcl命令实例
-help 提供dynamic_report Tcl命令的详细帮助,包括当前支持的报告值、选项和错误值。 dynamic_report-help
-long_help dynamic_report Tcl命令提供“long help”,并提供实例和可能的返回值。 dynamic_report -long_help
-report <report name> 定位 <report name=""></report> 指定的报告。对于Registers Removed During Synthesis报告,请使用“registers removed”。
注: -report选项是必需的,因为Tcl命令会根据报告名称执行进一步的操作。缺少-report选项或对 <report name> 使用不支持的值会导致错误。
dynamic_report -report "registers removed"
-summaryk 生成指定报告的摘要,例如表格名称、总大小和列名称,这些有助于从SQLite数据库查询。 dynamic_report -report "registers removed" -summary
-query <sqlite query> 接受查询整个SQLite是从数据库中检索所需的结果的其中一个选项。例如,-query "SELECT * FROM <table> WHERE <column> = <...>"

如果查询命令不正确或不完整,则错误消息中会显示详细信息。

默认情况下该查询结果会以ASCII格式被发送到<project directory>/dynamic_report目录下的输出文件中。

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 转储报告中的所有项目。

默认情况下此查询的结果将以ASCII格式被发送到<project directory>/dynamic_report目录下的输出文件中。

dynamic_report -report "registers removed" -dump_all
-dump_lines <unsigned integer> 转储报告中命令行的首个 <unsigned integer=""></unsigned> 。如果对 <unsigned integer=""></unsigned> 指定的值不是一个无符号整数或者不在1到999999999范围内,就会显示错误消息。

默认情况下此查询的结果将以ASCII格式发送到<project directory>/dynamic_report目录的输出中。

dynamic_report -report "registers removed" -dump_lines 250
-filename <file_name> -query-dump_all-dump_lines选项的转储结果指定输出文件名。

-filename为可选。如果未指定文件名,则编译器将输出文件命名为 <report name>.ascii。如果文件名为空或者包含特殊字符或空格,则显示错误消息。

注: 通过使用-filename选项,您可以使用-html-xml选项来分别生成HTML格式或XML格式的输出文件。
dynamic_report -report "registers removed" -dump_all -filename "my_result"
注意: 强制选择-summary-query-dump_all-dump_lines选项,但这些选项具有排他性,即,dynamic_report Tcl命令只需要其中一个选项。如果在单个dynamic_report Tcl命令中包含多个选项,则会显示一条错误消息,要求您指定单个选项。