装修公司网站模板下载,多商户海外商城源码下载,网络营销的含义和特点,网络服务器性能一、概述 Tcl 语言的全称 Tool Command Language#xff0c;即工具命令语言。这种需要在 EDA 工具中使用的相当之多#xff0c;或者说几乎每个 EDA 工具都支持 Tcl 语言#xff0c;并将它作为自己的命令shell。 静态时序分析中多用的 Synopsys Tcl 语言#xff0c…一、概述 Tcl 语言的全称 Tool Command Language即工具命令语言。这种需要在 EDA 工具中使用的相当之多或者说几乎每个 EDA 工具都支持 Tcl 语言并将它作为自己的命令shell。 静态时序分析中多用的 Synopsys Tcl 语言主要服务于 IC设计其他的FPGA厂商比如 Xilinx的 .ucf文件 .xdc文件也都是 Tcl 语言编写这与 Synopsys 半导体公司的 Tcl 语言基本相同。所以这里对Tcl进行一个简单的学习。 Tcl是1988年加州大学伯克利分校的John K.Ousterhout 开发的脚本语言。与编译语言不同编译语言是在执行前将语言解析并编译成机器代码的而Tcl是一种解释语言其每一条语句被依次解析并立即执行。因此该语言在脚本中遇到第一个错误就会立即停止。 Tcl支持一些基本语义。每条Tcl语句以换行符或者分号结束。如果一条语句跨越多行然后在下一行继续执行则应该在行尾加反斜杠。每条语句及参数都被视为字符串。一个双引号或大括号包含的多个单词的字符串被认为是单个单元。以“#”开始的语句认为是Tcl的注释。
puts Hello World; # 这是一条注释
puts {Hello World}; Tcl具有多种语言结构它们是 变量列表表示符与运算符控制流语句过程 二、Tcl变量 Tcl变量是ASCII字符串。数字也用ASCII字符来表示。变量使用 set 命令来分配。例如
set abc 1234 ; #这里set是命令abc是变量1234是分配给变量的值 如果需要对变量求值则需要用到 $ 符号。例如
puts $abc #打印结果为1234 如果索引与变量名一起使用则可将变量视为数组。索引不一定是整数它也可以是一个字符串。例如
set def(1) 4567; #这里def是数组变量索引被设置为1
set def(test) 5678; #这里索引是test 数组的索引“1”被设置为4567注意值4567不会显示在双括号中。在Tcl中“4567”和4567相同因为它们都被视为字符串。要获取数组中使用的索引值请使用命令 array names 。例如array names def 将返回值1和test 。要对数组变量求值可以使用相同的原理但是需要指定索引。我们考虑如下的例子
puts $def(1); #有效命令
puts $def(test); #有效命令
puts $def; #无效命令 由于$在变量求值时有着特殊意义所以要打印此符号必须在前面加\。例如
puts {I have a \$bill}
三、Tcl列表 Tcl中的列表是对象的集合。和任何列表一样你可以对列表进行添加对列表进行索引并在列表中进行搜索。以下是几个例子
#以下创建列表
set gates{list AND OR NOT NAND NOR}
set gates{{AND}{OR}{NOT}{NAND}{NOR}
set gates{split AND.OR.NOT.NAND.NOR.}#要将另一个项目添加到列表中使用lappend
set gates{lappend gates XOR}#要在列表中搜索使用lsearch.它将返回列表中匹配的索引
#返回2
puts {lsearch $gates NOT};#返回-1表示没有匹配的项
puts {lsearch $gates XNOR};
四、Tcl 表达式和运算符 Tcl中使用 expr 命令来对表达式求值。我们考虑如下的例子
set x 10;
#以下返回值都是30
expr $x20
expr {$x20} Tcl一般推荐表达式使用大括号因为这有助于程序更快地执行。 由于表达式求值与运算符关系密切所以Tcl语言为逻辑运算符和算术运算符提供了全面支持。下表给出了所支持的运算符 五、Tcl的控制流语句 Tcl控制流语句由以下种类的结构组成 列表遍历决策循环子程序 5.1 列表遍历 为了遍历列表Tcl提供了 foreach 结构
set gates {list AND OR NIT NAND NOR XOR}
set index 1
foerach element $gate {
puts Gate $index in the list is $element
incr index; #index 自动加1
} 输出如下
Gate 1 in the list is AND
Gate 2 in the list is OR
Gate 3 in the list is NOT
Gate 4 in the list is NAND
Gate 5 in the list is NOR
Gate 6 in the list is XOR5.2 决策 Tcl提供了 if-elseif-else 结构来提供了决策能力。我们考虑如下例子
if {$frequency 330}{puts Chip will function well,but slow than expected
}
elseif {$frequency 330}{puts Chip will not function
}else {puts Chip will funciton optimally}
5.3 Tcl循环 当程序想在一个条件下循环和终止时可以使用Tcl提供的 for 和 while 语句。它提供了两个额外的结构 “break” 和 “continue” 。Break 用于提前结束循环而 continue 用于停止执行当前循环的代码并重新评估循环条件。
5.4 Tcl过程 Tcl过程用 proc 来编写。使用 return 语句从过程中返回值。
六、其他Tcl命令