在TCL中,我正在编写一个返回时钟深度的过程。 但由于我有几个时钟,我想命名var:depth_ $ clk
proc find_depth {} {
foreach clk $clocks {
…
set depth_$clk $max_depth
echo $depth_$clk
}
}
但我明白了:
Error: can't read "depth_": no such variable Use error_info for more info. (CMD-013)
答案 0 :(得分:1)
你的问题就在这一行:
echo $depth_$clk
问题是$
的语法仅在后面解析一组有限的字符,因为它们是变量名的一部分; $
不是其中的一部分。相反,您可以将set
命令与一个参数一起使用; $
对此来说是有效的语法糖,但该命令允许您使用复杂的替换。
echo [set depth_$clk]
真正的正确的做法是切换到使用关联数组。这是对代码的一个更大的改动,但是你可以做更多的事情,因为你已经对数组元素名称中的替换有了适当的访问权限:
proc find_depth {} {
foreach clk $clocks {
…
set depth($clk) $max_depth
echo $depth($clk)
}
}
答案 1 :(得分:0)
echo ${depth}_$cell
这也有帮助。 谢谢!