4.SDC---TCL基础知识

文章目录

    • 1.Tcl变量
    • 2.TCL 列表
    • 3.Tcl表达式与运算符
    • 4.Tcl的控制流语句
      • 4.1 列表遍历---Iterating over lists
      • 4.2 决策---Decision making
      • 4.3 循环---Loops
      • 4.4 Tcl过程---Tcl Proceduresc

puts "Hello, World!";#这是一条注释
puts {Hello, World!}
  • 这里的每条语句都会向标准输出设备打印"Hello,World!"。用空格分隔的单词被视为是语句中的多个参数。
puts Hello World!

将给出一个错误,指示无法处理参数。错误信息为:cannot find a channel named ‘Hello’


  • TCL具有多种语言结构,它们是:
    • 变量
    • 列表
    • 表达式与运算符
    • 控制流语句
    • 过程

1.Tcl变量

set abc"1234";#这里set是命令,abc是变量,1234是分配给变量的值

如果需要对变量求值,则需要使用美元($)符号。例如,puts $abc将会打印1234。
set $def(1) 4567;这里def是数组变量,索引被设置为1
set $def(test) 5678;这里索引是test

puts $def(1):#有效命令
puts $def(test);#有效命令
puts $def; 无效命令
  • 如果要尝试利用另一个命令设置变量,则应将该命令括在方括号中。方括号中的任何内容都会在使用前求值。然而,大括号内的方括号中的内容不进行求值
set x [set y 100];  #将x的值设置为100
set x {[set y 100]}; #将x的值设置为[set y 100]

2.TCL 列表

  • TCL中的列表是对象的集合。像任何列表一样,可以对列表进行添加,对列表进行索引,并在列表中进行搜索。
# The following creates a list
set gates [list AND OR NOT NAND NOR]
set gates {{AND} {OR} {NOT} {NAND} {NOR}]
set gates [split “AND.OR.NOT.NAND.NOR” “.”]

# To add another item to a list, use lappend
set gates [lappend gates XOR]

# To search within a list, use lsearch. This returns the matching indices of the list
# Returns 2, which is the index in the list
puts [lsearch $gates NOT];

# Returns -1, since there is no match found
puts [lsearch $gates XNOR];

3.Tcl表达式与运算符

  • Tcl中使用expr命令来对表达式求值。
set x 10;
# Both statement will return the value of 30
expr $x + 20
expr {$x + 20}
  • 两条expr命令将返回相同的值。但是,Tcl建议表达式使用大括号(braces),因为这有助于程序更快地执行。
    4.SDC---TCL基础知识_第1张图片
    4.SDC---TCL基础知识_第2张图片

4.Tcl的控制流语句

  • Tcl控制流语句由以下种类的结构组成:
    • 列表遍历—Iterating over lists
    • 决策—Decision making
    • 循环—Loops
    • 子程序—Subroutines

4.1 列表遍历—Iterating over lists

  • 为了遍历列表,Tcl提供了foreach结构。

set gates [list AND OR NOT NAND NOR XOR]
set index 1
foreach element $gates {
puts “Gate $index in the list is $element”
incr index; #This increments the index
}


This will generate the output as:
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 XOR
  • Tcl的foreach为用户提供了同时遍历多个列表的独特功能。

set allgates {}
foreach gatelist1 {AND OR XOR} gatelist2 {NAND NOR XNOR} {
lappend allgates $gatelist2 $gatelist1
}
puts $allgates

这段语句将在变量allgates中存储以下值"NAND AND NOR OR XNOR XOR"。可以看到,这个遍历程序可以让来自不同列表的项目混合在一起。


4.2 决策—Decision making

  • Tcl提供if-elseif-else结构来提供决策能力。
if { $frequency < 330 } {
puts "Chip will function well, but slower than expected"
} elseif { $frequency > 330 } {
puts “Chip will not function"
} else { puts “Chip will function optimally" }

  • It is important to use the braces {} carefully. Each segment has its own pair of braces.

4.3 循环—Loops

  • 当程序想在一个条件下循环和终止时,可以使用Tcl提供的for和while语句。它还提供了两个额外的结构"break"和"continue"。Break用于提前结束循环,而continue则用于停止执行当前循环的代码,并重新评估循环条件。在遍历列表时请注意,break和continue也可以与foreach一起使用。
for <initial value> <condition> <next step> {
<statement body>
}
while <condition> {
<statement body>
}

4.4 Tcl过程—Tcl Proceduresc

  • Tcl过程使用proc来编写。使用return语句从过程中返回值。
proc sum {addend1 addend2} {
set value [expr {$addend1 + $addend2}]
return $value
}
# Calling the procedure
set x [sum 5 10]
puts $x # Will print 15

4.SDC---TCL基础知识_第3张图片


你可能感兴趣的:(SDC,TCL,SDC)