• 注册
  • 查看作者
  • 想要彻底掌握数字IC后端实现中placement各种技巧,看这个足够了!

    数字IC后端实现中placement各种技巧总结

     

    大家应该也都知道最近小编在忙项目,而且是相当的忙,到处救火。所以如果有问题未来得及回复的,望见谅。等忙好了一定加大火力,继续做更多的分享。

    正因为是救火,项目中存在一堆烂七八糟的问题。而解决这些问题虽然需要消耗较多的时间,但能够增长更多的经验。数字后端实现本身没有太多技术含量,真心不难,更多的是经验的积累。数字后端工程师的价值在于碰到一个比较奇怪的难题时,你是否具备高效解决这种疑难杂症的能力。

    吾爱IC社区之前推送过数字后端设计实现中floorplan的绝密经验。今天将做一个placement方面的经验分享。

     

    placement之前的check items

     

    • 检查placement blockage是否正确添加,以及确认blockage的类型

    • 整理dont use list

    • 设置好dont_touch的cell

    • 确保时钟clock已经被设置为 ideal network

    • FIX住所有的Macro和预先想place好的cell

    • 检查 pin access

       

    Pre-placement

     

    • Spare cell 或者Metal ECO cells比如ECOCAP CELL

      Spare cell和ECO cell 各自的应用场景及其各自的优缺点希望大家能够非常清楚,留给各位思考

    • Magnet placement,比如Isolation cell以及level-shifter cell的magnet placement

    • 预先插DECAP CELL

    • 在模块级的接口port出插入port buffer

     

     

    Placement

     

    这个阶段是将设计中的所有标准单元摆放到core区域中。整个placement过程可以基于以下几种因素来进行,不同的条件下placement的结果和质量,也是不一样的。placement的好坏,直接决定了时钟树的质量和绕线,最终体现为影响芯片的性能。

     

    • Timing Driven

      Timing Driven顾名思义就是指基于时序驱动进行的placement。大部分的设计都是需要做timing driven的placement优化。

       

    • Congestion Driven

      Congestion Driven是指基于congestion做优化的placement。可能初学者会觉得place阶段还没绕线,如何做congestion优化呢?那是因为place过程tool会通过global route来估算design中的绕线情况,从而根据估算的congestion状况来进行placement的优化。

     

     

    • Power Optimization

      随着工艺节点越做越小,芯片的规模也越来越大。芯片的功耗问题显然更为重要。在28nm及其以下工艺,没有做功耗优化和做low power的芯片,绝对是不好意思拿出去流片的。即使流片了,估计也没人用。EDA tool都支持power优化的placement。

          功耗优化的方法有很多。简单的有place_opt 带上power选项来进行功耗的优         化。也有CCD结合saif来进行功耗的优化方法。这些都在小编之前在星球上推       送的“基于28nm工艺ARM Cortex-A35的数字后端实现教程”介绍过。

       Cortex-A53后端实现

    Placement详细步骤

     

    • Initial placement (Coarse placement)

      这个步骤就是通常我们所说的Coarse placement。将标准单元粗略摆放好,此时不考虑overlap问题。

       

    • Legalization

      有了第一步的coarse placement后,这步需要将粗略摆放好的cell,进行legalization操作,将所有的标准单元放置在row上,并且保证所有的cell处于legal的状态,即不存在overlap或者不在对应的row上。

       

    • Removing existing buffer trees

           这步是将design中已经存在的buffer tree 移除。

     

    • High Fan-out Net Synthesis (HFNS)

      这个步骤需要将design中高扇出的点(时钟信号,reset信号等除外),进行解high fanout操作,优化时序。所以用来做placement的constraint,请务必将其中那些不必要的ideal network移除。

       

    • Iterations of timing/power optimizations

      这个过程主要有cell sizing, moving, net spitting, gate cloning, buffer insertion和area recovery这些小步骤组成。

       

    • Scan-chain re-ordering

      scan chain reordering并不是每个design中都要做的,视不同的情况而定。这个过程主要是用来缓解绕线资源紧张问题。

     

     

     

     

    • TIE cell insertions

      将设计中的1‘b0和1’b1,通过Tie cell连接起来。

       

     

    Placement目标

     

    • PPA最优化

    • global congestion和local congestion合理

    • 避免高pin density区域和hot spot区域

    • Timing DRCs满足要求

    • 利用率最优化

     

    一个好的placement结果,时钟树做起来是非常轻松的。反之一个cell分布不符合数据流向的placement,时钟树质量会大大折扣,因为整个tree可能会被”不明的妖怪“拖长,从而影响timing signoff和项目进度。整个tree变长,意味着clock tree的级数更多,power更大,同时受OCV效应影响就更深,timing就变得更不可收敛。

     

    Timing 优化技术

     

    • 细分group path

    • 为critical timing group设置更高weight权重

    • 将timing driven的effort设置high

    • 使用少量低阈值的cell,比如LVT,甚至ULVT

    • 调整critical range

     

    Congestion 优化技术

     

     

    在整个数字后端实现过程中,congestion一直是个大问题,大挑战。对于一个design,想把PPA做到极致,往往是存在一定难度的,都是需要通过很多次的迭代实验出来的。而一个比较资深的数字后端工程师可能需要的迭代次数会比较少,而且每次的实验都能够做到心中有数。因此,有必要介绍下几种常用的解congestion的方法。

     

    • placement cell density和local congestion的控制

    • Congestion driven placement (根据不同需求设置medium或者high effort)

    • blockage的利用

    • keepout margin的利用

     

    What if the design has different power domains?

     

     

    现在的设计基本上都是要做power domain和voltage domain的。它的placement flow和普通的placement flow是类似的。之前在数字后端实现floorplan篇介绍过Feed-Through和channeless的概念。利用Feed-Through可以节省很多channel,一方面节省了芯片的面积,另外一方面改善了绕线问题。

     

    所以,现在很多大规模的芯片设计实现,我们经常要用到不同的模块之间使用channeless的技术。使用这项技术可能存在以下几方面的问题:

     

    • 前端工程师集成

      由于采用channeless后,前端集成时需要将那些有特殊要求的信号做特殊处理。比如PD1中的某部分接口出来的走线,需要穿过PD2,再到PD4,最后达到top的core区域。集成时就需要将那些特殊信号额外添加在PD2和PD4的模块中去。

     

    • Feed-Through信号的处理

      实现时对于feedthrough信号中那些是时钟信号需要特别注意,需要定义好时钟,千万别漏长时钟树。同时对于时钟树质量要求比较高的时钟,还需要做shielding处理。

          另外,还需要跨VA的信号处理。比如有一个信号从一个AON的domain到一个         可以powerdown的domain,需要特别留意这样信号的处理。

     

    如何qualify placement

     

    • 检查cell的legalization

      检查所有的cell是否均已摆放好,并且是leagal的。

       

    • 检查 congestion, density 和pin density map的合理性

      placement做完,需要查看place后的congestion map,cell density map以及pin density map。这样可以提前控制风险。如果map特别差,如果继续做时钟树综合和绕线,其实就是在浪费资源。

       

    • Timing QOR

      主要查看placement后setup的WNS和TNS。这里当然还涉及到ICC/ICC2和PT之间的timing correlation问题。

       

     

    • Timing DRC 检查

      主要检查max transition,max cap,max fanout 等timing drc是否存在违例

       

    • 检查dont touch 和dont use list

          检查设计中规定的dont touch cell是否被工具优化掉,以及检查工具在优化的         过程中是否引入foundary厂指定的dont use cell

     

    小编知识星球简介:

    在这里,目前已经规划并正着手做的事情:

    • ICC/ICC2 lab的编写

    • 基于ARM CPU的后端实现流程(已经发布)

    • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)

    • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程(准备中)

    • 时钟树结构分析(规划中)

    • 低功耗设计实现(规划中)

    • 定期在星球布置作业题(星球已经支持布置作业功能)

    在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

    反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有十三星球成员,感谢这四十三位童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车

     

    相关文章推荐

    从数字IC后端设计实现看先进工艺7nm实现的各种挑战

    数字后端设计实现后期碰到这些问题,如何做ECO?

    我是如何在五年内实现年薪60万?

    教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告

    这些低功耗设计实现经验,你真的懂了吗?

    深度解析Create_clock与Create_generated_clock的区别

    IR Drop分析之Redhawk分析流程

    CRPR能补偿crosstalk吗?

    原来电路最高工作频率是这么算出来的(STA基础篇)

    数字后端面试问答No.1-3(每日三问)

    教你轻松调DCT和ICC之间Timing与Congestion的一致性

    数字芯片设计实现中修复setup违例的方法汇总

     

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

     

  • 0
  • 0
  • 0
  • 2.6k
  • 请登录之后再进行评论

    登录
  • 单栏布局 侧栏位置: