此设计示例提供了一个 Tcl 程序,可返回与通配符模式匹配的顶层实例名称。将此程序复制并粘贴到 Tcl 脚本中,然后调用此程序。
此程序在列表中返回实例名称。如果没有与通配符模式匹配的顶层实例名称,此程序将返回一个空列表。实例名称以任意顺序返回。如果希望以特定顺序(如按字母顺序)返回实例名称列表,请使用 lsort 命令对其进行适当排序。
例如,如果设计中的顶层实例名称为 foo1、foo2、foo3、bar1、bar2 和 bar3,调用
get_top_level_instances_matching *2
程序后,将返回 { foo2 bar2 }
。
proc get_top_level_instances_matching { wildcard } { # 编写一个变量,用于容纳与通配符匹配的顶层实例 catch { array unset names_to_return } array set names_to_return [list] # 名称集合中的名称均为设计中的层次 foreach_in_collection name_id [get_names -filter * -node_type hierarchy] { # short_full_path 选项以 instance|instance|... 的形式 # 获取名称 # 无论“显示节点名称的实体名称” # 设置开启还是关闭,仅使用实例 set short_full_name [get_name_info -info short_full_path $name_id] # 将层次结构拆分成列表,在层次分隔符 | 处 # 进行拆分 set short_full_pieces [split $short_full_name "|"] # 获取顶层实例名称 - 列表中的第一项 set top_level_instance [lindex $short_full_pieces 0] # 如果顶层实例名称与通配符匹配,将其保存, # 以便在程序结束时返回 if { [string match $wildcard $top_level_instance] } { set names_to_return($top_level_instance) 1 } } return [array names names_to_return] }