Cadence の Encounter Digital Implementation Shell をソースとするスクリプトを TCL で作成しています。多数の TCL proc を再帰的に実行し、突然、「ネストされた評価が多すぎます (無限ループ?)」と言ってコードを終了します。エラーが発生した 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).....' 割り当ての直前まで、スクリプトに従ってすべてが行われます。
メモリ割り当ての問題はありますか? (スクリプトは負荷共有機能で実行されています)
私を助けてください!!