@
一、TCL语言和synopsys TCL语言入门
基本目标:
1.掌握常用TCL基本指令(至少要看得懂)
2.掌握常用synopsys TCL常用指令,包括信息与属性的获取以及过滤
3.重点关注TCL正则匹配与文本处理方法,能够写出简单的文本处理脚本
1.1 TCL基本指令
置换:变量置换$、命令置换[]、反斜杠置换\
变量赋值与输出:set、puts
其他:\t、\n、""、{}、#
set X 1.2
set Y 1.3
puts "[expr $X + $Y]"
#结果为2.5
puts "\[expr $X + $Y\]"
#结果为[expr 1.2 + 1.3]
puts "\[expr \$X + \$Y\]"
#结果为[expr $X + $Y\]
puts {\[expr \$X + \$Y\]}
#结果为[expr \$X + \$Y\]
数组:使用array指令获取数组信息
set cell_1(ref_name) "bufx2"
set cell_1(full_name) "top/cell_1"
set cel1_1(pins) "A B C"
puts $cell_1(ref_name)
#结果为bufx2
arry size cel1_1
#结果为3
arry names cel1_1
#结果为ref_name full_name pins
列表:concat、lindex、llength、lappend、lsort
set list1 {bufx1 bufx2 bufx4}
set list2 {ivtxl ivtx2 ivtx4}
concat $list1 $list2
#输出结果为bufx1 bufx2 bufx4 ivtxl ivtx2 ivtx4
llength $list1
#输出结果为3
llength [concat $list1 $list2]
#输出结果为6
lindex $list1 1
#输出结果为bufx2
lindex $list1 [expr [llength $list1] - 1]
#输出结果为bufx4
lappend list1 bufx5
#输出结果为bufx1 bufx2 bufx4 bufx5
set list3 {4 1 2 3 2 1}
lsort -real $list3
#按数字大小排序,输出结果为1 1 2 2 3 4
lsort -unique $list3
#按唯一性输出1 2 3 4
控制流:if、foreach、break、continue、while、for
Tips:脚本语句的'{'一定要写在上一行,因为如果不这样,TCL 解释器会认为if命令在换行符处已结束,下一行会被当成新的命令,从而导致错。
if
foreach……break
foreach……continue
while
for
过程函数:proc
Tips:指令global,可以在过程内部引用全部变量
proc proc_name {argument} {
......
return return_value
}
正则匹配:
\w,用来匹配一个字母、数字、下划线
\d ,用来匹配一个数字
\s表示空格
. 表示任意一个字符
正则匹配-量词
正则匹配-锚位
捕获变量
文本处理
1.2 synopsys TCL常用语言
1.信息获取
#语法
get_ports 端口名称
get_cells 单元名称
get_nets 网表名称
get_pins 管脚名称
获取信息的时候可以搭配通配符*去获取想要的信息,以get_ports指令为例子:
get_ports * #返回所有的端口名称
get_ports I* #返回所有的以I开头的端口名称
get_ports *1 #返回所有的以1结尾的端口名称
2.属性获取
get_attribute [get_cells 单元名] ref_name
#单元对象 的 ref_name 属性:用来保存其映射到参考单元的名称
get_attribute [get_nets 网表名] full_name
#网表对象 的 full_name 属性:用于保存网表名称
get_attribute [get_pins 单元/引脚] owner_net
#引脚对象 的 owner_net 属性:用来保存与之相连的网表名称
get_attribute [get_ports 单元名] direction
#端口对象 的 direction 属性:用来保存端口的方向
3.属性过滤和对象连接
get_ports 端口名 -f "过滤条件"
#“-f”可以用来过滤属性,以得到我们想要的object
get_nets -of [get_ports 端口名]
#“-of”可以用来得到指定object相连接的object
二、STA基本概念
2.1 时序弧(Timing Arc)与线延迟、单元延迟
时序弧用来描述,两个节点延时信息的参数。通常分为Net delay(线延迟)和Cell delay(单元延迟)。其中Cell delay(单元延迟)内部有两种延迟,分别为 Transition delay(翻转延迟)和Logic gate delay(