Synopsys_TCL

本文详细介绍了TCL在EDA工具中的四个主要操作:获取端口、单元、网表和引脚信息的语法及功能,以及如何使用get_attribute和选项如-f和-of来查询对象属性和连接关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tcl在EDA工具中的扩展与应用

综合软件当中TCL的常见指令


1.获取端口信息

语法格式: get_ports portsName
指令功能:返回design中对应的ports object

1.如何查看design当中有没有一个port叫做CLK?
命令 get_ports CLK

{CLK}

2.我们想查看design当中所有的port (*可以通配任何字符
Shell>2. get_ports *
{A B C D CLK OUT[0] OUT[1]}
3.假设我们有port名字叫 {CLKA CLKB OUTA OUTB INA INB}
如果我们想得到所有C开头的port 怎么做?
命令 get_ports C*
{CLKA CLKB}


2.获取单元信息

语法格式: get_cells cellsName
指令功能:返回设计中对应的cell的instance name object(指的是例化名字)

回顾几个概念:
 什么是reference name(ref_name)?
{ENCODER INV REGFILE} 
 什么是instance name?
{U1 U2 U3 U4}
1.我们想查看design当中有没有一个cell叫做U4?
Shell> get_cells U4
{U4}
2.我们想查看design当中以3为结尾的cells
Shell> get_cells *3
{U3}

3.获取网表信息

语法格式: get_nets netsName
指令功能:返回design中net的object

查看design当中有没有一个net以INV开头?
命令 get_nets INV*
{INV0 INV1}

我们想查看design当中所有的nets
命令 get_nets *
{A B C D CLK BUS0 BUS1 INV0 INV1 OUT[0] OUT[1]}
我们想查看design当中有多少个net?
Shell> llength [get_object_name [get_nets *]]
11
Shell> sizeof_collection [get_nets *]
11
注意两条指令的区别噢!

3.获取引脚信息
 

语法格式:get_pins pinsName
指令功能:返回design中pin的object

查看design当中有哪些pin的名字叫做Z?
Shell> get_pins */Z (/之前的*代表它属于哪个单元的pin)
{INV0/Z INV1/Z}
查看design当中有哪些pin的名字以Q开头?
Shell> get_pins */Q*
{ENCODER/Q0 ENCODER/Q1 REGFILE/Q[1] REGFILE/Q[0]}

4.常见属性


任何一个属性都可以用get_attribute得到,
list_attribute –class * 可以得到所有object 的属性,
 部分属性可以用set_attribute来设置。


(1)Cell object


属性 ref_name : 用来保存其map到的reference cell名称
Shell> get_attribute [get_cells –h U3] ref_name
{INV}
 

(2)Pin object


属性 owner_net : 用来保存与之相连的net的名称
Shell> get_attribute [get_pins U2/A] owner_net
{BUS0}

(3)Port object


属性 direction : 用来保存port 的方向
Shell> get_attribute [get_ports A] direction
{in}
Shell> get_attribute [get_ports OUT[1]] direction
{out}
 

(4)Net object


属性 full_name : 用来保存net的名称
Shell> get_attribute [get_nets INV0] full_name
{INV0}
Shell> get_object_name [get_nets INV0]
{INV0}

(5)get_* -f 


-f 这个option可以用来过滤属性,以得到我们想要的object
例子-1:
想得到所有方向是input的port
Shell> get_ports * –f “direction==in”
{A B C D CLK}
例子-2:
想得到所有方向是output的pin
Shell>get_pins * -f “direction ==out”
{U1/Q0 U1/Q1 U2/Z U3/Z REGFILE/Q[0] REGFILE/Q[1]}
例子-3:
想得到所有ref_name 是INV的 cell
Shell>get_cells * -f “ref_name == INV”
{U2 U3}


(6)get_* [object]-of


-of 这个option可以用来得到与你指定object相连接的object
object的连接关系:
--port object <-> net object
>get_nets –of [get_port A]
A
--net object <-> port object / pin object
> get_net –of [get_pin U2/A]
BUS0
--pin object <-> net object
> get_pin -of [get_net INV1]
U3/Z
--cell object <-> pin object
>get_pins –of [get_cell U4]
{U4/D0 U4/D1 REGFILE/Q1 REGFILE/Q2}

以上内容均来自哔站的邸老师
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值