Quartus® II Tcl 示例:非默认全局赋值

author-image

作者

查看设计中的全局赋值,从而了解任何赋值是否与默认设置不同,此操作非常有用。例如,如果设计的性能不符合预期,可以查看是否意外更改了设置的默认值。

此示例创建了一个自定义报告面板,其中列出了项目的非默认全局赋值设置。从 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 中、在系统命令提示符下还是在脚本中启动编译,脚本都会在每次编译结束时自动运行。