为什么PrimeTime修timing时,带physical aware还不如不带physical aware
Physical awre的概念的提出,其实时间也很早了,印象中应该有七八年的时间了。
当时笔者曾试图通过脚本语言来实现这个概念,取得了一些不错的进展。后来synopsys也在工具里增加了这个功能,并且也不断的完善起来,这些脚本也就荒废了。
Physical aware的提出,其实也是为了解决业界的一个痛点。那就是在timing eco阶段,因为PrimeTime无法知道具体的物理信息,(绕线,局部的density,blockage,hard macro), 这就导致了eco做完之后的结果和PrimeTime估计的结果差别很大,无形中增加了很多反复。通常,timing eco的时间占用了物理实现阶段的很大一部分时间。这在时间就是金钱的芯片行业,这是很难容忍的。
目前比较新版的PrimeTime对physical awre的支持变得更为直接和方便了。特别是如果你用的是icc2,你甚至可以直接指定icc2的design database。
来感受下:
set_eco_options-physical_icc2_lib icc2_lib_path-physical_icc2_blocks icc2_blocks
当然也可以用传统的lef+def的形式读取物理信息,就是这样的形式了:
set_eco_options-physical_tech_lib_path tech_LEF_files-physical_lib_path LEF_files-physical_design_path DEF_files-physical_constraint_file physical_constraint_file-physical_lib_constraint_file spacing_urle_file_list
哪个更简洁方便,一目了然
Timing Signoff工具知道了物理信息,那么它的效果肯定会更好吗?
应该讲,在大多数情况下,效果是好的。
比如加buffer,工具可以在绕线的中途,选择合适的位置来加。尽量利用原有的绕线,所以估算的timing结果与eco之后timing的结果会更为一致。又比如,在修hold的时候,工具不会在density已经很高的地方,不停的加hold buffer,最终导致绕线出了问题。
不过正如标题所说的,有时候,带physical awre还真不如不带physical awre。
设想这样一种情况, desgin局部denstiy很高。那么工具在修hold或者max_tran的时候, 就会非常 “智能” 的把hold buffer放到这个区域周边。
图1:形状区域为high density区域。
而这个区域又恰巧是一些摆放非常紧密的cell,他们相互之间的连线因为非常短,所以驱动非常弱。这就导致了新加的buffer的距离远超原来的绕线,加上原来的驱动太弱,导致delay比PrimeTime预估的大很多,甚至会出现比较严重的transition问题。
如果出现用physical aware来修timing,而eco的结果与预估的结果偏差很大的这种反常现象,首先应当考虑是否有density过高的区域。
我曾在在项目中遇到上述这个问题,通过关闭physical aware(即physical_mode改为none),取得了比较好的效果。由于没有physical信息,工具会直接在pin的位置插入。在high density区域插入cell,会引起大量cell的移动,但是移动范围比较小,尚在可承受范围内。
这个现象也反映了PrimeTime在估算delay时,目前还有一定的局限性。也就是无法估算重新绕线后的新的cap值,而只是对原来net分割之后的电容值进行重新分配。
通常在非常先进工艺下(<=16nm),cell的density不会太高(这是由pin density所决定),出现该现象的概率很低。所以如果你是用的这类工艺,可以放心的使用physical aware这个feature。
如果是比较老的工艺情况下(往往density可以做的很高),就需要注意避免此类情况:
在PR阶段,就尽量避免局部density过高。通常会有变量来控制这个值。
避免过弱驱动的cell的使用(可能带来功耗提升,谨慎评估)
适当减少可插入buffer的位置范围(变量:eco_insert_buffer_search_distance_in_site_rows)
如果已经进入eco阶段,可以尝试关闭phyiscal_aware, 可能有惊喜。(建议流程中physical aware默认开启)
关于physical awre的相关问题,欢迎留言讨论。
欢迎关注:
为什么PrimeTime修timing时,带physical aware还不如不带physical aware相关推荐
- vue+axios请求时设置request header请求头(带上token)
vue+axios请求时设置请求头(带上token) 1.在vue中,向后台发送请求,不管是get或post,url要带上userId,headers要带上token值(本地存储的token,wind ...
- 好文分享 行到艰难处 方是修心时
行到艰难处,方是修心时 打磨再打磨,抱朴守拙做减法, 真正有用的人脉不是在于你认识多少人,而是在于多少人认识你. 所以,减少无效社交,打磨好你的产品和能力才是创业的关键.
- 女大学生修电脑时被植入偷窥软件,一举一动被“直播”;Deepmind 发布 AlphaGo 教学工具...
(点击上方蓝字,快速关注我们) 参考:开源中国.solidot.cnBeta.腾讯科技.半岛晨报等 0.Deepmind 发布 AlphaGo 教学工具 Google 旗下的 AI 子公司 Deepm ...
- 计算机主机拆解的注意事项,修电脑时的注意事项_机箱_机箱电源评测-中关村在线...
刚才我们从寻求帮助与帮助人的两方面分别进行了阐述,内容或深或浅,没有指责任何一方的意思,如果你认为这种现象并不存在的话,那么恭喜你,你生活在一个健康向上的朋友圈里.如果你认为上述情况可能会发生在你身边 ...
- 学校计算机专业春联大全带横批,关于学校的春联带横批.doc
关于学校的春联带横批 关于学校的春联带横批 篇一:有关学校的春联 1. 上联:扬帆起航让海蓝浸润生命 下联:踏浪逐日在彼岸引吭高歌 横批:海阔天空 2. 上联:教诲如涓涓细流点点滴滴终成沧海 下联:引 ...
- php 网址尾部带斜杠和不带区别,URL路径中带正斜杠/与不带的区别
简单理解:不带斜杠的URL结尾通常被服务器识别成独立文件,当它去查找这个文件缺失的时候,就会重定向到带斜杠的URL,这个时候带斜杠的URL,可以理解成为是目录. 解读URL结尾斜杠的产生: 举例: - ...
- 1.深度好文:带缓冲I/O 和不带缓冲I/O的区别与联系
首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用.系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其 ...
- 带缓冲的IO和不带缓冲的IO
文件操作中有两套函数,一套是C库中的 fopen().fread()-,还有一套是linux的系统调用 open().read()- 虽然都是实现文件操作,但它们之间还是有一些不同.或许在网上 ...
- 计算机清灰后无法联网,修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的!...
原标题:修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的! 电脑由硬件与软件组成,二者相辅相成,任何一个出现了问题都会影响电脑的正常使用,对于软件故障,我们查查资料就能解决,而对于硬件故障, ...
最新文章
- 20180917-1每周例行报告
- 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
- 使用 vue + thinkjs 开发博客程序记录
- springboot打包时加入本地jar打包
- 2021的第一个offer来自mbzuai
- 前端学习(2640):懂代码之登录页login.vue存入用户信息
- 系统结构图 数据结构_数据结构图简介
- 动态BGP和静态BGP的含义与区别
- Python的安装与配置
- python菜鸟教程基础入门
- ei会议论文录用但不参加会议_ei会议论文还能在报纸杂志发表吗?
- IL汇编语言介绍(译)
- css 动效彩旗飘扬
- BERTILO发“富”啦,来元代艺数get你的专属「招财兔」!
- 职场上的“打工者心态”,正在悄悄毁掉你
- VideoCapture详解
- 世界多国尝试弃用美元 滥用霸权、转嫁危机恐将自食其果
- python中面向对象的缺点_python中的面向对象和面向过程
- 解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
- 广义回归神经网络(GRNN) 讲解的较好的博客