题记:14 年在某展结识了永庆,永庆一身书香气,如生在古代应是温润如玉的偏偏公子。最近老驴在追着萝卜夜以继日地拉磨,感谢永庆及时援助。
Floorplan:
要做好floorplan需要掌握哪些知识跟技能?
通常,遇到floorplan问题,大致的debug步骤跟方法有哪些?
如何衡量floorplan的QA?
要做出一个好的floorplan,需要了解芯片的封装,电源网络的供电方式,芯片的架构,芯片各个部分之间的信号交互状况,芯片clock结构,SI分析,ESD保护,Latch-up防护,需要对数字和模拟电路都有一定的理解,需要对工艺非常熟悉,了解工艺各种drc rule,充分发挥所选工艺的优势,以最小的代价做出最好的PPA.
Floorplan的debug:
- timing: 是否有因为floorplan不当导致的插入大量buffer 造成的violated path
- routing:是否存在因为资源分配不均匀导致的congestion, 比如narrow channel,long narrow floorplan。
- power: 检查IR存在问题的点是否是因为距离source太远
- area: 看design有没有比较多的面积浪费
- drc: 尽早检查芯片的baselayer drc, 主要看IP、IO之间的drc, 这些地方一旦出问题就必须重头来。
一个好的floorplan首先要能实现芯片设计的各个指标,做到尽量好的PPA。在此基础上需要对后续的设计环节(比如CTS,route)友好,最小化成本,包括减小面积,减少芯片后续的附加成本,比如不带来额外的封装或者电路板成本,减少迭代次数,缩短研发周期。
Placement:
要做好placement需要掌握哪些知识跟技能?
通常,遇到placement问题,大致的debug步骤跟方法有哪些?
如何衡量placement的QA?
了解自己的design 特点;熟练运用PR tool place 相关的command 和option 。
placement debug:
- timig: 看critical path上面是否有大量的buffer 插入,如果place 之后看到的critical path上插入了大量的buffer,则可以认为place的结果是有问题的。
- overflow: 检查overflow分布。
- module分布: 看同一module下的cell是否放在一起,主要的module有没有被打散。
- density map: 检查place之后的design 是否存在density 过高或者过低的区域。
- pin density map: 检查pindensity 的分布情况,对于判断congestion 有帮助。
- 检查 register的分布情况
- 检查place之后density变化,std cell增加是否合理
好的placement需要做到:
- timing 收敛,并且为后续cts和route timing变坏留有margin
- overflow小
- density高
- 对后续的步骤(cts,route)友好
CTS:
要做好CTS需要掌握哪些知识跟技能?
通常,遇到CTS问题,大致的debug步骤跟方法有哪些?
如何衡量CTS的QA?
只做过block level的cts,下面的内容只适用于block level cts。
熟悉SDC的语法和内容;熟悉design clock 结构;熟悉clock buffer 的特点;熟悉tool的cts 相关命令和设置。
CTS debug 的方法:
- track clock tree.
- 检查clock latency,global skew,clock net drv.
- 检查setup/holdtiming的WNS&TNS.
好的CTS应该一下这些特点:
- clock latency尽量短
- global skew较小
- clock buffer/inverter面积尽量小
- clock buffer/inverter不能太集中,会导致dynamic IR变坏
- 在timing critial的情况下,能够合理借用usful skew来收敛timing
- 对routing友好
Route:
要做好Route需要掌握哪些知识跟技能?
通常,遇到Route问题,大致的debug步骤跟方法有哪些?
如何衡量Route的QA?
要对所选工艺比较了解,有多少metal 可以用,各层metal 的电阻,pitch 等等;需要知道所选的library 里哪些cell(包括memory和stdcell)对routing resource要求比较高;需要对自己的design 特点比较了解;需要评估design 用到的IP 对routing 的影响;需要对tool 的route 相关的功能比较了解。
route常见的问题是: short,detour,SI
- short: 是debug route 面对的最主要的问题,也是PR 过程中非常重要的一个环节。debug short 首先要定位short 的位置,常见的有Macro 出pin 点附近,这种情况可能需要加一些placement constraint,或者是调整macro 的位置;如果short 发生在channel 里,很可能需要调整floorplan;如果是clock net route 利用resource 太多造成的short,可能需要改变cts 的策略,比如说降低NDR rule 使用的比率;如果是power mesh 太密引起的short,可能需要重新研究power plan 的策略;如果是design 局部density 太高造成的short,可能需要回到place,加一些constraint,限制local density; 如果是short集中在某些module,可能需要对这些module 加上padding;如果是某些类型的cell 容易造成大量的short,可能需要对这些cell 加padding,甚至要回到综合,减少甚至禁止这些cell; 如果是整个design density 过高造成的大面积的short,就需要增加面积;如果整个design density 不高,但是看到大面的short,在确定power plan 没问题的前提下,可能需要求助于前端设计工程师帮忙分析design 的特点,必要的时候可能要修改design,或者增加metal 层数。
- detour 的问题不像short 那么明显,只有通过route 之后的timing report 才能发现,如果route 之后看到critical path 上面增加了大量buffer,或者有很大的transition,就要怀疑detour的可能性,解法和short 类似。
- SI要等到routeOpt 之后才能从timing report 里看到,如果发现比较严重的SI,要看是clock net 上面还是data net 上面。如果是clock net 上面的,可能需要回到cts,使用NDR rule 来route clock net,必要的时候加上routing,如果是data net,可以适当调整对线长和max\_transition 的控制,或者通过调一些route 相关的option 来减轻SI 对data net 的影响。
好的route 结果:
- 没有short和drc
- 尽量少的detour
- SI对timing的影响尽量小
- design的utility不能太低,减少浪费
DRC:
要做好DRC需要掌握哪些知识跟技能?
通常,遇到DRC问题,大致的debug步骤跟方法有哪些?
如何衡量DRC的QA?
做DRC要对工艺非常熟悉,至少要了解芯片制造的基本步骤和原理,对常用的电路元器件的电路图和版图都要比较精通,还需要熟悉drc rule的语法以及内容,要能够熟练使用physical verification工具。
DRC的debug方法:
- 在项目早期,要把fullchip 相关的一些rule 刷干净,比如ICOVL,clampcell 和tcd cell,各种IO 和IP 之间的base layer rule都要尽早clear,这些东西一旦需要改动就需要重头来,伤筋动骨。
- 如果是新工艺,需要提早拿一个小的block反复刷drc,把各种没见过的drc都研究清楚,找到解决方案,尽量集成到flow里面去。
- power mesh的drc也要尽早刷,要在项目早期就有一个比较clean的power plan solution.
- 项目后期drc的主要bottleneck 在TOP,top drc 主要的思路是逐渐收敛,先把看到的drc分类,按照大类找到解决方案(比如power mesh相关的,dummy metal相关的,filler cell相关的),快速迭代,尽快收敛。这个过程中工程师需要想方设法加快迭代速度,因为随着IC制造工艺越来越先进,drc的runtime已经逐渐成为了TO之前的bottleneck.
TO之前,DRC基本上是需要clean的,没有太多商量的余地,所以对于做drc工程师来说,主要是尽早发现,尽快解决。
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/PBLfxKjGWb9on3GT4ZpD0g
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。