tcl:如何在 tcl 中将 foreach_in_collection 重新构建为 proc

问题描述 投票:0回答:1

由于某种原因,我需要在 tcl 中将 foreach_in_collection (SDC 命令)重建为“foreach”。

这是快照代码:

proc set_disable_timing { argv } { body ... }
proc get_cells { argv } { body ... }

这里有一个过程“foreach_in_collection”,我尝试像 foreach 一样构建:

proc foreach_in_collection {item collection script } {
  foreach collection $collection_list {
     uplevel [list set $item $collection]
     uplevel 1 $script
  }
}

我的源文件包含如下代码

set all_cells [get_cells -hier my_cell*]
foreach_in_collection cell $all_cells {
   set_disable_timing $cell
}

但是 tcl 报告无效命令“-hier” 如何解决问题

foreach syntax tcl sta
1个回答
0
投票

看起来就是你想要的

proc foreach_in_collection {item collection script } {
  upvar x $item
  foreach x $collection {
     uplevel $script
  }
}

x
设置为 foreach_in_collection 中的值时,
cell
也会在调用 foreach_in_collection 的上下文中设置为相同的值。

然后当您

uplevel $script
时,即使用正确的值调用set_disable_timing。

© www.soinside.com 2019 - 2024. All rights reserved.