Synopsys工具中命令中filter的妙用

在S家的后端设计工具里,包括DC、ICC、ICC2、PT , 大体的命令都是相通的。并且主要命令的命名和分类都是有一定的相似性的(但是要注意:尽管在相同的命令下,由于输入和参数配置的差异,命令的结果可能会有不同,尤其是在delay计算方面)。
简单总结如下

命令组解释举例
get_*得到目标的返回值get_cells .get_pins
report_*返回目标的属性,内容的详细报告report_timing, report,report_power_domain

这里,一起来关注一下get_* 命令家族,并且了解一下通用的选项filler
先一起看一下这类命令的选项描述。
在这里插入图片描述
既然是一个命令组,当然会有一些类似点,这个命令家族一般有如下的选项设计:

$cmd -filter -quiet -nocase -exact -OTHER_OPTION patterns

通用的选项细节描述如下

选项描述
-filter使用某种属性来做进一步过滤
-quiet安静的运行,不打印可能出现的warning
-nocase关闭patterns的大小写敏感
-exact需要对patterns进行完全匹配

后三个选项比较好理解,这里一起来仔细看一下filter这个选项。
filter 简单地说,是在当前的get_* 命令下的一个二次过滤的选项。具体可以使用什么样的过滤方式方法,是基于这个命令所属于的类(class) 的,这个命令组的命名方式,一般是get_$class ,譬如说 get_cell 所对应的类(class) 就是 cellget_clocks 所对应的类(class) 就是 clock 。所以,所有filter可以操作的范围就是这个class里边的数据/属性。
下图是cellattribute的摘录
在这里插入图片描述
用户可以根据这个attribute列表的具体细节来对cell来进行二次过滤,一个举例如下

得到所有full name中包含 lace的器件

# get all *lace* cell 
get_cells -filter "full_name=~*lace*" 

通过运行,会得到所有名字为*lace* 的cell,返回值如下:
在这里插入图片描述
这里使用条件运算符**=~** 是一个模糊匹配,place也是*lace*的模糊匹配的结果,这里就被正确的返回出来了。
再看一个稍微复杂一点的例子

得到所有的buffer cell,
但是cell名字一定是包含*lace*字符串的

# get all *lace* buffer 
get_cells -filter "full_name=~*lace* && ref_name=~*BUF*"

另外一个很常用的filter例子是:

得到数据库里所有的std-cell
然后计算它们的面积总和

get_cells -hier -filter "mask_layout_type==std"
set area 0
foreach_in_collection c [get_cells -hier -filter "mask_layout_type==std"] {
	set area [expr [get_attribute $c area] + $area]
}
puts  "Total std-cell area is $area"

这个执行结果如下
std_cell_area
什么,这还不够厉害,还有更彪悍的操作?

得到所有面积大于3 area_unit的
buffer/invert

get_cells -filter "area>3 && number_of_pins==2"

运行结果如下
在这里插入图片描述
这么复杂的操作,最好验证一下,先来看一下面积
在这里插入图片描述
没有问题,都是大于3的器件
再来看一下pin的数目
在这里插入图片描述
也都正确,都是两个pin
最后来看一下,是不是都是buffer/invert
在这里插入图片描述
完美,所有的结果都被验证正确无误。
到这里,想必同学们都有了一种体会了吧。这里的 get_attribute-filter 有着天人合一的感觉,一个是query 一个是 status。通过这种按需查找的方法。数据库里的东东基本上都会被你摸个遍了。
这里再来看一个命令嵌套的组合拳

面积大于3 并且
有两个以上的pin的非SPARE cell 的器件
它们的output pin

 get_pins -of [get_cells -filter "area>3 && number_of_pins>2"] -filter "pin_direction==out && full_name!~*SPARE*"

嵌套,就是无休无止的嵌套,就是要在浩如烟海的数据大海中,找到你要的那根针!灵活使用这些命令,理论上讲不存在命令行里找不到的那根针。
吼吼,数据浩如烟海,命令是披荆斩棘利器,最重要的还是坐在屏幕前的那个富有创新力的你!祝好运,早日TO。晚安!
如果觉得艾思的文章不错,扫描下面的二维码,锁定这个技术小窗口,随时随地接受最新的技术分享。
在这里插入图片描述

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Synopsys工具是一种用于电子设计自动化的软件工具。它提供了各种功能,帮助设计工程师完成芯片设计、验证和优化工作。这些工具包括CAD、仿真器、布局与布线工具等,可以加速和改进电子芯片设计的过程。 脚本是一种编程语言,用于自动化处理和控制Synopsys工具。它可以通过编写脚本来实现一系列的操作,如设置工具参数、运行仿真、进行设计分析等。脚本的好处是可以减少重复的繁琐工作,提高效率,并且可以对多个工具进行集成操作。 模板是指预定义的脚本框架,用于帮助设计工程师快速开始开发自己的脚本。模板提供了一些常见功能的示例代码,包括工具命令的调用、设计文件的读取与转换、数据处理与分析等。设计工程师可以根据需求,修改和扩展这些模板,以满足自己的具体设计需求。 使用Synopsys工具、脚本和模板可以带来很多好处。首先,它们可以大大提高芯片设计的效率和质量,减少了手动操作的错误。其次,他们可以帮助设计工程师快速理解和上手Synopsys工具的使用方法。此外,脚本和模板还可以增强工程师之间的协作,因为他们可以共享和复用一些已经开发好的脚本和模板,避免重复劳动。 总之,Synopsys工具、脚本和模板是在电子设计自动化领域非常重要的工具和技术,它们的使用能够显著提高芯片设计的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值