加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 控制流
    • 控制流 if
    •  
    • 循环指令 -foreach
    •  
    • 循环控制指令 -break
    •  
    • 循环控制指令 -continue
    •  
    • 循环控制指令 -while
    •  
    • 循环控制指令 -for
    •  
    • 过程函数
    • 过程函数 -proc
    •  
    • 全局变量和局部变量
    •  
    • 正则匹配
    • 正则匹配指令 -regexp
    •  
    • 捕获变量
    •  
    • 实例讲解
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

《数字集成电路静态时序分析基础》笔记②

2020/11/29
109
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

网络课程《数字集成电路静态时序分析基础》的笔记

地址:https://www.iccollege.cn/portal/courseDetail/193.mooc

控制流

控制流 if

  • 语法格式:
if {判断语句}{
脚本语句
}elseif{判断语句}{
脚本语句
}else{
脚本语句
}
  • 注意,上例中脚本语句得'{'一定要写在上一行,因为如果不这样,TCL 解释器会认为 if 命令在换行出已经结束,下一行会被当成新的命令,从而导致错误

  • 例题:判断一个列表{0 1 2 3 4}的长度是大于 3,还是等于 3,还是小于 3?

 

循环指令 -foreach

语法格式:foreach 变量 列表 循环主体

功能:从第 0 个元素开始,每次按顺序取得列表的一个元素,将其赋值给变量,然后执行循环主体一次,直到列表最后一个元素

 

 

循环控制指令 -break

  • 语法格式:break 功能:结束整个循环过程,并从循环中跳出

 

循环控制指令 -continue

  • 语法格式:continue 功能:仅结束本次循环

 

循环控制指令 -while

  • 语法格式:while 判断语句 循环主体功能:如果判断语句成立(返回值非 0),就运行脚本,直到不满足判断条件停止循环,此时 while 命令终端并返回一个空字符串

 

循环控制指令 -for

  • 语法格式:for 参数初始化 判断语句 重新初始化参数  循环主体功能:如果判断语句返回值非 0 进入循环,执行循环主体后,再重新初始化参数。然后再次判断,直到判断语句返回值为 0,循环结束

 

过程函数

过程函数 -proc

  • 语法格式:proc 函数名 参数列表 函数主体功能:类似 C 语言中的函数。即用户自定义的功能,方便多次调用

 

全局变量和局部变量

  • 全局变量:在所有过程之外定义的变量局部变量:在过程中定义的变量,只能在过程中访问,退出过程会被自动删除指令 global,在过程内部引用全局变量

 

正则匹配

  • 定义:正则表达式是一种特殊的字符串模式,用来匹配符合规则的字符串正则表达式的 w,用来匹配一个字母、数字、下划线正则表达式的 d,用来匹配一个数字

 

正则匹配 - 量词

  • wwwddd 这种写法过于繁琐,可以使用量词表示,常用量词有三种

  • *和+的区别:包不包含 0 和 1

  • ?,0 或 1

 

正则匹配 - 锚位

  • 锚位,用来知识字符串中的开头和结尾的位置,使我们能够匹配到正确的字符

 

正则匹配 - 其他字符

  • 常用的其他字符还有 s 和 .s 表示空格

  • . 表示任意字符,不确定具体使什么字符就可以用 . 表示。例如一直字符串为"XXX 空格 XXX 空格 XXX"(X 为未知字符)。用 .+s.+s.+就可以匹配

正则匹配指令 -regexp

  • 语法格式:regexp?switches?exp string?matchVar? ?subMatchVar subMatchVar...?功能:在字符串中使用正则表达式匹配 switches:-nocase 将字符串的大写都看成小写 exp 正则表达式 string 用来表示进行匹配的字符串 matchstring 表示用正则表达式匹配的所有字符串 sub1 表示正则表达式中的第一个子表达式匹配的字符串 sub2 表示正则表达式中的第一个子表达式匹配的字符串

 

实例讲解

  • 如何匹配字符串"abc456"

如何匹配一个以数字开头并且以数字结尾的字符串

 

捕获变量

  • 通过()可以捕获字符串,例如捕获字符串"Snow is 30 years old"中的 30?

  • 一次捕获多个字符串,例如将"Snow is 30 years old"中的 Snow 和 30 一次捕获

 

文本处理

主要掌握三个指令 open、gets、close

  • open
    • 语法格式 open 文件 打开方式(r 读,w 写)功能 打开文件

    gets

    • 语法格式 gets fileid 变量名功能 gets 读 fileid 标识的文件的像遗憾,并把该行赋给变量,并返回该行的字符数(文件尾返回 -1)

    close

    • 语法格式 close fileid 功能 关闭文件

 

实例讲解

  • 读入整个文件过程

  • 一个完整的写入文件过程

  • 现有文本 file.txt 其内容如下。请编写 TCL 脚本求出所有 slack 值之和吧

set num 0
set INFILE [open file.txt r]
while {[get $INFILE line]>=0}{
if{[regexp {^Slacks+=s+(-?d+.?d+)} $line total slack]}{
set num [expr $sum +$slack]
}
}
close $INFILE
puts $sum

相关推荐

电子产业图谱