我正在用 TCL 编写一个脚本,该脚本来源于 Cadence 的 Encounter Digital Implementation Shell。它递归地执行许多 TCL 过程,然后突然退出代码说 - '嵌套评估太多(无限循环?)'。我找到了出错的proc,并检查了作为参数传递的变量。所有数值都是正常的。
我附上了 proc 出错的部分。(整个脚本是 1000 行以上,所以只提这部分)。
for {set i 1} {$i<=[llength $xcoord_sinks_for_clone($clone_to_regroup_ref)]} {incr i} {
set abs_dist_list($i) ""
set count 0
foreach clone $new_clone_index_ref2 {
set dist($i) [expr [distance [lindex $xcoord_sinks_for_clone($clone_to_regroup_ref) [expr $i-1]] [lindex $xcoord_clones [expr $clone_to_regroup_ref-1]] [lindex $ycoord_sinks_for_clone($clone_to_regroup_ref) [expr $i-1]] [lindex $ycoord_clones [expr $clone_to_regroup_ref-1]]]-[distance [lindex $xcoord_sinks_for_clone($clone_to_regroup_ref) [expr $i-1]] [lindex $xcoord_clones [expr $clone-1]] [lindex $ycoord_sinks_for_clone($clone_to_regroup_ref) [expr $i-1]] [lindex $ycoord_clones [expr $clone-1]]]]
set dist_abs($i) [expr abs($dist($i))]
lappend abs_dist_list($i) $dist_abs($i)
incr count
}
set sorted_dist_abs($i) [lsort -real $abs_dist_list($i)]
lappend min_dist [lindex $sorted_dist_abs($i) 0]
}
我能够查明错误的位置。一切都根据脚本进行,直到 foreach 循环中的“set dist($i).....”分配之前。
是否存在一些内存分配问题?(该脚本在负载共享设施上运行)
请帮帮我!!