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

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

1.6.2.1. 使用Tcl命令编写常规任务脚本

以下示例列举了如何使用get命令的不同功能轻松编写一些常规任务的脚本,例如基于属性的对象过滤、基于名称的搜索或遍历(traversing)对象关系:

检索顶层输入端口(在原理图中突出显示)

在某些情况下,您可能需要顶层端口列表。例如,为了确保所有输入端口都受到set_input_delay的约束,您必须检索设计中的所有端口并使用 dni::get_ports tcl命令,根据direction进行过滤,如下所示:
dni::get_ports -filter direction==input

tcl命令将输入端口集合返回设计中,例如PI_1PI_2PI_3。您可以使用返回的集合来传递或链接到其他get_object命令中。要访问集合的成员,请使用集合迭代器,例如,foreach_in_collection。例如:

foreach_in_collection p [dni::get_ports -filter direction=input] { puts $p }
port::top::PI_1port::top::PI_2port::top::PI_3

检索inst_1实例

在您的设计中,可以按名称搜索特定对象(例如,实例)。要查找实例,请使用 dni::get_cells tcl命令,如下所示:
dni::get_cells inst_1

tcl命令将inst_1实例返回设计中。您可以使用返回的实例传递或链接到其他get_object命令中。例如:

foreach_in_collection p [dni::get_cells inst_1] { puts [dni::get_property -name name -object $p] }
inst_1

检索inst_1in_1实例端口

在连接遍历(traversal)期间,您可能希望找到某个实例的特定实例管脚。在这种情况下,请使用 dni::get_pins 命令的-of_object接口来遍历实例到实例的管脚关系,如下所示:
dni::get_pins -of_objects [dni::get_cells inst_1] -filter name==in_1

Tcl命令将inst_1实例的in_1实例端口返回到设计中。您可以使用返回的实例端口传递或链接到其他get_object命令中。例如inst_1实例的in_1实例端口返回到设计中。您可以使用返回的实例端口传递或链接到其他get_object命令中。例如:

foreach_in_collection p [dni::get_pins -of_objects [dni::get_cells inst_1] -filter name==in_1] { puts $p }
inst_port::top::inst_1|in_1

检索inst_1|out1实例的网络

在连接追踪期间,您可能希望遍历连接到实例的所有网络。在这种情况下,请使用 dni::get_nets 命令的-of_objects接口 来遍历连接到实例的网络。例如:

dni::get_nets -of_objects [dni::get_cells inst_1|out_1]

tcl命令将inst_1|out1实例网络返回到设计中。您可以使用返回的实例端口集传递或链接到其他命令中。例如:

foreach_in_collection p [dni::get_nets -of_objects [dni::get_cells inst_1|out_1] ] { puts $p }
inst_port::top::inst_1|out_1|Net_7inst_port::top::inst_1|out_1|Net_6inst_port::top::inst_1|out_1|Net_8

列出net对象类型上可用的属性

tcl接口允许您通过 dni::list_properties tcl命令访问对象原理图。您可以使用此命令列出任何对象类型的可访问属性,如下所示:
dni::list_properties -type net
name parent_name number_of_ports ports net_bus_name source_file source_line is_user_declared