热度 11| ||
目前在试着通过tcl脚本语言把后端的命令用proc包装起来。
后端中encounter中命令好多是默认,不需要修改的,或者是自定义不变的数据,如果每次在调试脚本参数的时候带上他们真的是又多看着又眼花。这时候使用proc命令给他包装起来,起一个名字,下次就直接修改参数岂不是爽歪歪!
举个例子:
floorPlan -site MV -d 600 600 20 20 20 20 #这是一个设置边缘大小与间距的命令,可以用复制粘贴,
也可以proc
proc fp {a b c } {
puts[floorPlan -site MV-d $a $b $c $c $c $c]
}
这样使用命令 'fp 600 600 30' = 'floorPlan -site MV -d 600 600 20 20 20 20',就简单很多啦
可是encounter/innovus里面有好多命令后带有{},而{}里面又有$a等变量的时候,就会使$失效,导致命令无法执行。
这里可以试试把{}改成‘’‘’,同样是引用,‘’‘’不会使特殊符号失效,亲测有用
kangkang005: 也可以用list命令替换{},达到同样的效果
kangkang005: set x 1; set y 2;
set coords {$x $y};
puts $coords; #=>输出$x $y
花括号{}阻止了括号里面的变量替换,导致只能输出变量名而不是变量。
可以用list命令进行 ...
kangkang005: 有时候也可以用{*}命令代替proc命令
set cmd [list floorPlan -site MV -d]
{*}$cmd 600 600 20 20 20 20 等同于 floorPlan -site MV -d 600 600 20 20 20 20 ...
kangkang005: {*}语法说明见参考链接:https://wiki.tcl-lang.org/page/%7B%2A%7D
将列表变量展开成多个元素