小智 8
通常,我们在从使用 TCL 的某些工具(例如来自 Synopsys 的设计编译器)转储/查询数据时使用集合。这些集合看起来像列表,但普通列表命令无法访问这些集合。要访问它们,您需要使用“foreach_in_collection”命令并需要使用 get_object_name(或等效命令)并需要构建 get_object_name 输出的列表(lappend)。从此列表中,您可以使用所有 TCL 列表操作。
foreach_in_collection 和 get_object_name 是工具特定的命令,在 TCL 中找不到,它们只能通过工具界面运行。
希望这可以帮助。
小智 6
用户很可能在谈论 Synopsys Tcl“集合”——由像 Synopsys 这样的 EDA 供应商提供的扩展,以支持其 Tcl API 中的对象列表。
我迟到了,但这个简单的过程是你大部分时间都想要的。请注意,由于您要将集合映射到对象“名称”列表,因此此映射会丢失信息:
proc col2list { col } {
set list ""
foreach_in_collection c $col { lappend list [get_object_name $c] }
return $list
}
Run Code Online (Sandbox Code Playgroud)
小智 5
假设您正在使用一些synopsys工具:
set MyList [get_object_name $MyCollection]
Run Code Online (Sandbox Code Playgroud)
上面应该将您的收藏转换为列表。