在TCL中列出的集合

use*_*429 1 collections list tcl

嗨,我想知道如何在tcl中将集合转换为列表。我得到的输出是以集合的形式,但是我想将其更改为list。

小智 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)

上面应该将您的收藏转换为列表。