synopsy的Tcl脚本语言学习笔记.doc
TCL脚本语言学习
〔1〕当输入的命令较长时,可以使用反斜线\将一行命令分割为几行,例如:
settarget_library\
/home/fzz/synopsys/library/slow.db
上面的命令等价于settarget_library/home/fzz/synopsys/library/slow.db
〔2〕缩略语命令:Synopsys的命令可以缩略到非模糊的形式,但是在脚本文件中应该少使用缩略命令,因为脚本文件在某些Synopsys的工具或者TCL中的命令易于发生变化,这种变化因为缩略而变得模糊。
〔3〕可以使用Synopsys中的“history”命令列举或者执行出先前使用过所有命令,例如:
dc_shellhistoryinfo5
该命令将列举出最近执行过的5跳指令
dc_shellhistoryredo4
该命令将执行在当前dc_shell中执行过的命令中的第4条指令,这里面redo后面的数据如不是有效的,那么将重复执行最后输入的命令。例如
dc_shellhistoryredo-4,?-4无效,将重复执行最后输入的有效指令
也可以采用快捷键的方式,输入“!!”命令,重新执行命令。例如:
dc_shell!!
settarget_library/home/fzz/synopsys/library/slow.db
/home/fzz/synopsys/library/slow.db
能够重复执行某条指令可以使用
Dc_shell!5
(4)以命令行方式获得help
使用-help命令获得帮助
Dc_shellecho–help
同样可以使用for命令获得help的所有命令,输入方式如下:
dc_shellhelpfor*
也可以获得特殊的命令组的所有命令的列表,通过输入命令集合的名字,例如:
dc_shellhelpprocedures
使用man命令
也可以使用man命令获取Synopsys中获得帮助的相应命令,例如:
dc_shellmanquery_objects
(5)CommandStatus
命令状态时命令返回值,所有的命令都返回一个一个字符串或者null,默认时命令状态值返回控制窗口,例如:
dc_shellsettotal_cells0,这里定义了一个新的变量
0
dc_shellincrtotal_cells
(6)Quoting引用
使用quotingdisable一些特殊字符的含义〔例如:[],$and;〕
dc_shellseta5;setb10
10
dc_shellecho{[expr$b-$a]}evaluatesto[expr$b-$a]
[expr$b-$a]evaluatesto5
双引号标示特殊的较弱的quoting,使用举例如下:
dc_shellSetA10;setB4
4
dc_shellecho“Ais$A;Bis$B.\nNetis[expr$A-$B].”
chapter2Tcl根底
Variables变量
dc_shellsetbuf_name1si_10K/B1I
1si_10K/B1I
dc_shellseta1
1
dc_shellsetb2.5
Tcl中所有的变量都是字符串,Tcl不识别变量是整数或者实数的变量
dc_shellsetb10
10
dc_shellincrb
11
dc_shellincrb-6
5
Incr的默认增加值是1,如果增加的不是整数值,那么那么会报错,例如:
dc_shellsetb2.4
2.4
dc_shellincrb
Error?…
为了查找一个变量是否存在,可以使用tcl的infoexists命令,例如说,为了查看变量total_cells是否存在,键入:
dc_shellinfoexiststotal_cells
如果变量存在,那么infoexists返回1,否那么,返回0。
为了查看变量是否与特定的类型相匹配,使用Tcl的脚本infovars命令,例如
dc_shellinfovarstotal_c*
total_cells
数值变量的精度
数值变量的精度依赖于给变量所赋的值,如果使用小数点,那么数值变量成为浮点数,否那么成为整数。整数变量可以看作是是十进制,八进制或者十六进制。
?为了不产生不可预测的结果,在使用时,应该注意精度问题。例如,在下面的例子中,除法操作产生不同的结果:
dc_shellseta10;setb=4.0;setc4
2.5