• 注册
  • 查看作者
  • 教你轻松调DCT和ICC之间Timing与Congestion的一致性

    转眼间,小编的公众号已经运营了一个月了,粉丝数量也有六百了。在此感谢各位的支持,小编一定会不忘初心,砥砺前行,不断分享更多干货。希望下个月本公众号粉丝数能够翻一翻,希望各位多帮忙转发宣传下,感谢还是感谢!小编开通赞赏功能后,也获得了六位童鞋的赞赏,很是激动,感谢你们(虽然没多少钱,仍然很有成就感)!

    前天小编推送了数字芯片设计实现中修复setup违例的方法汇总,这篇文章提到了based DCT的综合来优化时序。由于DCT和ICC所调用的Timing engine不一样,因此经常会出现时序的不一致性问题。比如做DCT综合后,多少的setup违例是可以接受的,可以拿去做数字后端布局布线?如果DCT综合出来没有时序问题,ICC/ICC2中时序就一定是OK的吗?吾爱IC社区的小编希望通过今天的分享,让大家快速掌握如何Fine-tune DCT和ICC之间Timing和Congestion一致性等问题。值得注意的是,今天所讨论的topic是基于PT和ICC间的timing correlation是比较一致的情况。

    在研究DCT和ICC timing congestion correlation问题时,最基本的东西需要准备好,小编整理了下一些相关需要检查的key points以及可以改善的地方。当你发现DCT和ICC之间timing congestion不一致时,可以有个明确的方向,从而帮助你快速完成设计实现。

    • 逻辑库是否一致这点很简单,就是DCT和ICC中用到的target_library(std cell ,memory,IP等)的db和ICC中用到的db是否同一个版本。对于比较先进的工艺,Foundary和Vendor可能会经常update他们的library,特别是前期的版本,各种版本的差异性会比较大。
    • 物理参考库是否一致综合创建library所用的reference library 和Tech file 是否与ICC中跑flow用的一致

    create_mw_lib  -technology   tech.tf   -mw_reference_library  $ref_libr

    • 估算net delay的Tluplus文件是否设好且与ICC用的一致set_tlu_plus_files  -max_tluplus  $cmax_tluplus  -tech2itf_map  $mw_star_map
    • clock uncertainty和timing derate 是否设置合理

    这个设置是调correlation的核心。具体要设多少,没有一个定论,每个 design情况都不太一样。这里值得提的是derate的设置。DCT和ICC中有必要按照signoff的要求来设置吗?如果是先进工艺,foundary往往都要求最后 signoff时对cell_delay,net_delay 设置一个derate值,而且还要分别对 launch,capture的data path,clock path 设置derate。由于DCT中只做一个timing的优化和初步的placement,所以建议综合时按照signoff的标准来设derate值,而ICC中考虑runtime和复杂性,ICC中可以相应做一个简化即可。

    • set_delay_estimation_options是否已设置

    set_delay_estimation_options

    -max_unit_horizontal_capacitance_scaling_factor 1.03

    -max_unit_vertical_capacitance_scaling_factor 1.03

    -max_unit_horizontal_resistance_scaling_factor 1.03

    -max_unit_vertical_resistance_scaling_factor 1.03

    • ignore_layer是否设置正确这个设置直接会影响到DCT中congestion的估算和优化力度

    set_ignored_layer -min M2

    set_ignored_layer -max M6

    • dont_use ,dont_touch 的cell前后要一致
    • max_cell_density_threshold 变量是否设置合理对于高性能的design,需要将max_cell_density_threshold设的高点,比如0.85。这样tool在做初步placement时逻辑分布会相对紧凑些,从而改善timing。但是设置的值太高了,可能会引起congestion的问题,如下图所示。所以如果DCT中的Timing优化的很好,而congestion比较严重,此时肯定不能拿去做P&R,而是想办法优化下congestion。
    • set_congestion_options -max_util 0.7
    • based congestion的cell keepout margin或者route guide是否设置一致这步也是为了解决DCT中或者ICC中看到的congestion而做出的优化设计congestion的措施。通过对某些局部区域中的cell 设置keepout margin来改善congestion以及通过对某些区域设置signal route guide来优化局部的congestion。很多从事数字IC设计实现的工程师会觉得congestion优化本来就是在布局布线阶段来做的,与综合无关。其实不然,我们今天提到的综合其实已经是物理综合,而不仅仅是逻辑综合。因此,讨论DCT和ICC的一致性问题,本身就包含Timing和congestion的问题。
    • 其他的一些option比如max_transition, max_cap,控制ICG placement的一些option等。

    最后,小编列举数字IC设计实现中常见的几种情况,供大家参考和思考。

    1.DCT中setup(为何只谈setup?如果你要谈hold,那不是瞎扯嘛)没有或者有很小的violation,ICC中timing有比较大的setup violation

    这种情况很有可能就是DCT中timing计算偏乐观,或者预留的timing margin不够等因素导致的。限于篇幅,这里不详细阐述。

    2.DCT中setup没有violation,ICC中也看不到setup violation

     

    这种情况有问题没?需要重新做综合吗?需要重新fine-tune icc的flow吗?估计不少数字工程师会觉得没问题,因为他们觉得setup都没问题了,肯定没问题了。可是小编告诉你,这里一定有问题。一方面DCT综合出来的结果,很有可能不是最优的,比如。另外一方面ICC/ICC2的flow肯定也不是最优的。ICC/ICC2中没有setup violation的database都好意思拿去抽RC,修hold(最终定版),这是不可取的。

    一个资深工程师的价值不在于你会些什么,而在于同样的东西,你是否可以研究的比别人深入,理解的比别人更透彻,是否可以做的比别人更好。在数字IC设计中,衡量设计的好坏无非就是IC设计中的三要素Performance,Power,Area(PPA)。在同样的性能下,你能否做到功耗比别人做的低,能否做到面积比别人的小。这才是你的价值所在。

    3.DCT中setup有很大的violation(比如400ps),ICC中timing差不多是满足时序要求

    这种情况显然是DCT中约束过于严格,导致setup时序存在较大的违例。DCT中约束过于严苛,会导致过度优化,综合出一个较大的门级电路,最终体现就是面积更大。

    4.DCT中setup有很大的violation,ICC中setup也有较大的violation

    这种情况留给各位思考吧

     

    好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱IC社区(52-ic.com)也正式上线了。吾爱IC社区(52-ic.com)是一个专业交流和分享数字IC设计与实现技术与经验的IC社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

    打赏的朋友,请长按下方二维码,识别小程序进行打赏,欢迎砸钱过来!小编晚饭能不能加个鸡腿,全靠它了,呵呵!

    作者微信:

    吾爱IC微信交流群:

  • 0
  • 3
  • 0
  • 177
  • 0
    好文章!666,学习了
  • 0
    感谢关注吾爱IC社区。敬请期待数字后端设计实现更多干货分享
  • 0
    膜拜
  • 单栏布局 侧栏位置: