placement之前的check items
检查placement blockage是否正确添加,以及确认blockage的类型整理dont use list设置好dont_touch的cell确保时钟clock已经被设置为 ideal networkFIX住所有的Macro和预先想place好的cell检查 pin accessPre-placement
Spare cell 或者Metal ECO cells比如ECOCAP CELLSpare cell和ECO cell 各自的应用场景及其各自的优缺点希望大家能够非常清楚,留给各位思考Magnet placement,比如Isolation cell以及level-shifter cell的magnet placement预先插DECAP CELL在模块级的接口port出插入port bufferPlacement
这个阶段是将设计中的所有标准单元摆放到core区域中。整个placement过程可以基于以下几种因素来进行,不同的条件下placement的结果和质量,也是不一样的。placement的好坏,直接决定了时钟树的质量和绕线,最终体现为影响芯片的性能。
Timing DrivenTiming Driven顾名思义就是指基于时序驱动进行的placement。大部分的设计都是需要做timing driven的placement优化。Congestion DrivenCongestion Driven是指基于congestion做优化的placement。可能初学者会觉得place阶段还没绕线,如何做congestion优化呢?那是因为place过程tool会通过global route来估算design中的绕线情况,从而根据估算的congestion状况来进行placement的优化。数字后端实现时congestion比较严重,你hold得住吗?
Power Optimization随着工艺节点越做越小,芯片的规模也越来越大。芯片的功耗问题显然更为重要。在28nm及其以下工艺,没有做功耗优化和做low power的芯片,绝对是不好意思拿出去流片的。即使流片了,估计也没人用。EDA tool都支持power优化的placement。功耗优化的方法有很多。简单的有place_opt 带上power选项来进行功耗的优 化。也有CCD结合saif来进行功耗的优化方法。这些都在小编之前在星球上推 送的基于28nm工艺ARM Cortex-A35的数字后端实现教程介绍过。
基于Physical Aware的动态功耗优化实现方案
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-orderingscan chain reordering并不是每个design中都要做的,视不同的情况而定。这个过程主要是用来缓解绕线资源紧张问题。Scan chain reordering 怎么用你知道吗?
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 rangeCongestion 优化技术
在整个数字后端实现过程中,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之间的correlation问题。教你轻松调DCT和ICC之间Timing与Congestion的一致性
Timing DRC 检查主要检查max transition,max cap,max fanout 等timing drc是否存在违例检查dont touch 和dont use list检查设计中规定的dont touch cell是否被工具优化掉,以及检查工具在优化的 过程中是否引入foundary厂指定的dont use cell