TCL在EDA工具中的拓展与应用
通过对Design Object的分析,了解和学习DC获取电路并进行解析的方法
常见指令
get_ports
语法格式:get_ports portsName
指令功能:返回design中对应的port object
如何查看deign当中有没有一个叫做CLK的port?
get_portsCLK{CLK}
如何查看deign当中有没有一个port叫做SPI?
get_ports SPI
No object Found!
查看design当中所有的port(*可以统配任何字符)
get_port *
{A B C D CLK OUT[0] OUT[1]}
假设port名字交{CLKA CLKB OUTA OUT B INA INB},如何得到所有C开头的port?
get_ports C*
{CLKA CLKB}
get_cells
语法格式:get_cells cellsName
指令功能:返回design中对应的cell的instance name object
查看是否有一个叫U4的cell
get_cells U4
{U4}
查看所有cell
get_cells *
{U1 U2 U3 U4}
查看以3结尾的cells
get_cells *3
{U3}
get_nets
语法格式 :get_nets netsName
指令功能:返回design中net的object
查看INV开头的net
get_nets INV*
{INV0 INV1}
查看所有net
get_nets *
{A B C D CLK BUS0 BUS1 INV0 INV1 OUT[0 OUT[1]]}
查看有多少个net
llength [get_object_name [get_nets *]]
sizeof_collection [get_nets *]
get_pins
语法格式:get_pin pinsName
指令功能:返回design中pin的object
查看叫Z的pin
get_pins */Z
{INV0/Z INV1/Z}
查看Q开头的pin
get_pins */Q*
{ENCODER/Q0 ENCODER/Q1 REGFILE/Q[1] REGFILE/Q[0]}
数据类型
数据类型:”object(对象)“及其“属性”
说明:
object使tcl的一个重要拓展
常见对象有四种cell、net、port、pin
每种object有他的属性
任何一个属性都可以用get_attribute得到
list_attribute -class *可以得到object的属性
部分属性可以用set_attribute来设置
Cell object
属性ref_name:用来保存器map到reference cell名称
get_attribute[get_cell -h U3] ref_name
{INV}
Pin object
属性owner_net:用来保存与之相连的net的名称
get_attribute [get_pins U2/A] owner_net
{BUS0}
Port object
属性direction:用来保存port方向
get_attribute [get_ports A] direction
{in}
get_attribute [get_ports OUT[1]] direction
{out}
Net object
属性 full_name:用来保存net的名称
get_attribute [gets_nets INV0]
{INV0}
get_object_name [get_nets INV0]
{INV0}
get_attribute INV0 full_name
Error:No attribute found
理解属性以后,就可以完成更多的任务:
get_* -f:-f这个option可以用来过滤属性,以得到我们想要的object
得到所有方向是input的port
get_ports * -f "direction==in"
{A B C D CLK}
得到所有方向是output的pin
get_pins * -f "direction==out"
{U1/Q0 U1/Q1 U2/Z U3/Z REGFILE/Q[0] REGFIEL/Q[1]}
得到所有ref_name是INV的cell
get_cells * -f "ref_name==INV"
{U2 U3}
网友评论