查看设计中的全局赋值,从而了解任何赋值是否与默认设置不同,此操作非常有用。例如,如果设计的性能不符合预期,可以查看是否意外更改了设置的默认值。
此示例创建了一个自定义报告面板,其中列出了项目的非默认全局赋值设置。从 Quartus II 软件 4.1 版(::quartus::report 包 2.0 版)开始,可以使用创建自定义报告面板的命令。此示例使用 cmdline Tcl 包处理命令行参数。
load_package report package require cmdline set options {\ { "project.arg" "" "Project name" } \ { "revision.arg" "" "Revision name" } } array set opts [::cmdline::getoptions quartus(args) $options] project_open $opts(project) -revision $opts(revision) load_report set panel_name "Non-Default Global Settings" set panel_id [get_report_panel_id $panel_name] # 如果已有面板,必须先删除再创建。 if { -1 != $panel_id } { delete_report_panel -id $panel_id } set panel_id [create_report_panel -table $panel_name] # 新报告面板的列标题 add_row_to_table -id $panel_id \ { "Assignment" "Default Value" "Design Value" } foreach_in_collection asgn [get_all_quartus_defaults] { foreach { section_id name default_value } $asgn { break } set current_value [get_global_assignment -name $name] # 如果值不同,在表中添加一行。 if { ! [string equal -nocase $current_value $default_value] } { add_row_to_table -id $panel_id \ [list $name $default_value $current_value] } } save_report_database project_close
在系统命令提示符下,可以运行包含如下所示代码的脚本:
quartus_sh -t script.tcl -project myproject -revision myrevision
改进示例代码
改进代码的一种方法是在每次编译结束时自动运行代码。要完成此操作,请在项目中添加新的赋值,并更改处理命令行参数的方式。
赋值名称为 POST_FLOW_SCRIPT_FILE。有关此赋值的更多信息,请参阅脚本自动执行示例。假设脚本名为 script.tcl,请在 Quartus II 设置文件 (.qsf) 中添加以下赋值:
set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:script.tcl
由于使用 POST_FLOW_SCRIPT_FILE 赋值运行脚本,必须更改脚本开头用于打开项目的命令。使用三个预定义位置参数运行脚本:流、项目和修订版名称。在此示例中,不需要使用 cmdline 包。
修改脚本开头,如下所示:
load_package report foreach { flow_name project revision } $quartus(args) { break } project_open $project -revision $revision
无论在 Quartus II GUI 中、在系统命令提示符下还是在脚本中启动编译,脚本都会在每次编译结束时自动运行。