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相关推荐

  1. vue+axios请求时设置request header请求头(带上token)

    vue+axios请求时设置请求头(带上token) 1.在vue中,向后台发送请求,不管是get或post,url要带上userId,headers要带上token值(本地存储的token,wind ...

  2. 好文分享 行到艰难处 方是修心时

    行到艰难处,方是修心时 打磨再打磨,抱朴守拙做减法, 真正有用的人脉不是在于你认识多少人,而是在于多少人认识你. 所以,减少无效社交,打磨好你的产品和能力才是创业的关键.

  3. 女大学生修电脑时被植入偷窥软件,一举一动被“直播”;Deepmind 发布 AlphaGo 教学工具...

    (点击上方蓝字,快速关注我们) 参考:开源中国.solidot.cnBeta.腾讯科技.半岛晨报等 0.Deepmind 发布 AlphaGo 教学工具 Google 旗下的 AI 子公司 Deepm ...

  4. 计算机主机拆解的注意事项,修电脑时的注意事项_机箱_机箱电源评测-中关村在线...

    刚才我们从寻求帮助与帮助人的两方面分别进行了阐述,内容或深或浅,没有指责任何一方的意思,如果你认为这种现象并不存在的话,那么恭喜你,你生活在一个健康向上的朋友圈里.如果你认为上述情况可能会发生在你身边 ...

  5. 学校计算机专业春联大全带横批,关于学校的春联带横批.doc

    关于学校的春联带横批 关于学校的春联带横批 篇一:有关学校的春联 1. 上联:扬帆起航让海蓝浸润生命 下联:踏浪逐日在彼岸引吭高歌 横批:海阔天空 2. 上联:教诲如涓涓细流点点滴滴终成沧海 下联:引 ...

  6. php 网址尾部带斜杠和不带区别,URL路径中带正斜杠/与不带的区别

    简单理解:不带斜杠的URL结尾通常被服务器识别成独立文件,当它去查找这个文件缺失的时候,就会重定向到带斜杠的URL,这个时候带斜杠的URL,可以理解成为是目录. 解读URL结尾斜杠的产生: 举例: - ...

  7. 1.深度好文:带缓冲I/O 和不带缓冲I/O的区别与联系

    首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用.系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其 ...

  8. 带缓冲的IO和不带缓冲的IO

      文件操作中有两套函数,一套是C库中的 fopen().fread()-,还有一套是linux的系统调用 open().read()-   虽然都是实现文件操作,但它们之间还是有一些不同.或许在网上 ...

  9. 计算机清灰后无法联网,修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的!...

    原标题:修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的! 电脑由硬件与软件组成,二者相辅相成,任何一个出现了问题都会影响电脑的正常使用,对于软件故障,我们查查资料就能解决,而对于硬件故障, ...

最新文章

  1. 20180917-1每周例行报告
  2. 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
  3. 使用 vue + thinkjs 开发博客程序记录
  4. springboot打包时加入本地jar打包
  5. 2021的第一个offer来自mbzuai
  6. 前端学习(2640):懂代码之登录页login.vue存入用户信息
  7. 系统结构图 数据结构_数据结构图简介
  8. 动态BGP和静态BGP的含义与区别
  9. Python的安装与配置
  10. python菜鸟教程基础入门
  11. ei会议论文录用但不参加会议_ei会议论文还能在报纸杂志发表吗?
  12. IL汇编语言介绍(译)
  13. css 动效彩旗飘扬
  14. BERTILO发“富”啦,来元代艺数get你的专属「招财兔」!
  15. 职场上的“打工者心态”,正在悄悄毁掉你
  16. VideoCapture详解
  17. 世界多国尝试弃用美元 滥用霸权、转嫁危机恐将自食其果
  18. python中面向对象的缺点_python中的面向对象和面向过程
  19. 解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
  20. 广义回归神经网络(GRNN) 讲解的较好的博客

热门文章

  1. vs2013运行c语言出现:无法查找或打开 PDB 文件问题解决
  2. c语言有效字符序列称为,C语言选择题库.docx
  3. 微积分知识点回顾与总结(八):重积分
  4. 通用能力-数量关系专项练习(2)
  5. S-function的使用
  6. 64匹马8个跑道需要多少轮才能选出最快的四匹
  7. 如何做一个好的BI总监
  8. Redis 位图数据结构介绍
  9. 用层次分析法建模解决交通问题论文
  10. python 删除文件、清空目录的方法总结