Design Introspection and Editing
Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。
Design Introspection
Tessent Shell 的 Introspection 命令用于检查设计数据模型中的设计对象。通过这些命令可以访问工具内部的数据结构,可以使你灵活的使用Tcl脚本,并把所有的计算密集型过程放在工具的后台执行。
或者说是对设计数据进行检索,然后使用 Tcl 脚本使定制的设计流程自动化
这些命令作用于对象规范(object specifications),返回值是集合(collections)
【简单来说,Design Introspection 就是获取设计的一些信息,对设计进行编辑等。】
Object Specification Format
Object Specification 列出了特定命令所作用的设计对象(如module、pins、nets等)。
Object Specification 可以是对象的名称、Tcl中的list的名称或者是集合(collection)的名称。
对于用唯一ID的设计对象,如instances,IDs 也可以作为对象名称。
add_schematic_objects命令的几种有效的 Object Specification 的如下所示:

所有作用于用户指定对象的 Tessent Shell 命令都可以将 Object Specification 作为参数。
Collections
Collections 是对Tcl的一个拓展,专门用于Tessent Shell,Tcl本身的命令(如foreach、puts)等无法识别collections。
collection 表示的是一组设计对象。(设计对象的数量可以是0)
Design Introspection 相关的命令会返回设计对象的 collections。对象保存在工具内部的数据结构中,工具返回 string handle 到 collection中。string handle 由 @ 和数字 ID 构成,例如@1。
换句话说,完整数据仍然是保留在工具内部的数据结构中,collections 中的内容类似一个指针。这样 Tcl 接口不会因数据量太大而过载。
在 tessent shell 中直接使用 Design Introspection 相关命令会显示 collection 中前 50 个元素的名称(即设计对象的名称),因为名称比collections 的 ID 更加有用。但是,在非交互模式下(例如执行dofile)名称是不会显示的。

只有在 Termial 直接使用 Design Introspection 命令的时候才会显示设计对象的命令,其他情况下读取到的都是 string handle。

如果想要获取 collection 中的设计对象的一些具体信息,就需要配合管理 collection 的其他命令,如下所示:

使用get_instances和get_name_list命令返回的内容就是对象的 collections,如下所示:

在该示例中,第一条命令返回了名称的 collection。对象保存在工具内部的数据结构中,工具返回 string handle 到 collection 中。这个时候,puts 命令并不会输出内容。
下面的这个示例中,get_instances 命令创建的 collection 被保存在变量 instCollection 中(这意味着 collection 被引用)。

当你unset变量instCollection、给变量 instCollection 赋新值或者是Tcl变量引用的集合超范围的时候,Tessent Shell 就会删除该collection。
在下面这种情况中,get_pins 命令创建的 collection 被传递给 get_attribute_value_list 命令。这个 collection 也被引用,但是 Tessent shell 会在get_attribute_value_list返回值的时候删除该collection。

此外,collection可以引用不存在的对象(使用编辑命令(如delete_pins)删除的对象)。对象被删除之后,内部属性“is_valid”会被设置为false。所有将collection指针作为输入的命令都会自动忽略属性“is_valid”为false的对象。
Collections的持续时间
当Collections被保存在变量中或者是别传递到命令的时候,collection被引用。当collection被不再被引用的时候,工具会自动将其删除。
不能对collection使用Tcl list之外的其他Tcl自身的命令(如foreach等),因为这些命令不会引用collection。
Collections内容的Transcript
get_name_list命令可以返回collection中名称的列表,配合puts等命令就可以将其内容输出到日志文件中。
Tessent Shell提供了一些命令对 collection 进行创建、管理和查询,部分命令如下表所示:

get_* 这一类命令返回的是 collection,不是使用 TCL 的命令对其进行操作,但是 ger_*_list 返回的就是普通的 list,这个时候是可以使用标准的 TCL 命令对其进行操作的。
Syntax
常用的 collection 相关的命令的语法
foreach_in_collection itr_var collection {
body}
Examples

&spm=1001.2101.3001.5002&articleId=140323445&d=1&t=3&u=ca67c446fd6b409abeef0b2cb46e4769)
3609

被折叠的 条评论
为什么被折叠?



