lijiasen.xy的个人空间 https://blog.eetop.cn/1778649 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

tcl中使用proc定义命令过程时{}的使用

热度 11已有 3646 次阅读| 2021-7-19 10:30 |个人分类:小技巧|系统分类:芯片设计

目前在试着通过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等变量的时候,就会使$失效,导致命令无法执行。

这里可以试试把{}改成‘’‘’,同样是引用,‘’‘’不会使特殊符号失效,亲测有用


点赞

发表评论 评论 (8 个评论)

回复 kangkang005 2021-8-24 15:06
也可以用list命令替换{},达到同样的效果
回复 lijiasen.xy 2021-8-24 15:24
kangkang005: 也可以用list命令替换{},达到同样的效果
list?能举个使用的例子吗
回复 kangkang005 2021-8-24 15:43
set x 1; set y 2;
set coords {$x $y};
puts $coords; #=>输出$x $y
花括号{}阻止了括号里面的变量替换,导致只能输出变量名而不是变量。

可以用list命令进行变量替换:set coords [list $x1 $y1]; #输出=> 1 ,1
或者还可以使用“”双引号替换:set coords "$x1 $y1"; #输出=> 1 ,1
回复 lijiasen.xy 2021-8-24 15:45
kangkang005: set x 1; set y 2;
set coords {$x $y};
puts $coords; #=>输出$x $y
花括号{}阻止了括号里面的变量替换,导致只能输出变量名而不是变量。

可以用list命令进行 ...
回复 kangkang005 2021-8-24 15:50
有时候也可以用{*}命令代替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
回复 lijiasen.xy 2021-8-24 15:54
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 2021-8-24 16:04
{*}语法说明见参考链接:https://wiki.tcl-lang.org/page/%7B%2A%7D
将列表变量展开成多个元素
回复 lijiasen.xy 2022-4-2 13:55
kangkang005: {*}语法说明见参考链接:https://wiki.tcl-lang.org/page/%7B%2A%7D
将列表变量展开成多个元素
我今天看了一下这个网站,真是一个宝藏网站,例子很多,真的非常不错

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 8

    总排名
  • 6

    关注
  • 73

    粉丝
  • 34

    好友
  • 124

    获赞
  • 177

    评论
  • 1083

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 22:14 , Processed in 0.017744 second(s), 16 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部