文档详情

synopsy的Tcl脚本语言学习笔记.doc

发布:2025-06-12约1.85万字共27页下载文档
文本预览下载声明

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

显示全部
相似文档