Floorplan
要做好fp需要掌握哪些知识和技能?
通常遇到fp问题大致的debug步骤和方法有哪些?
如何衡量fp的QA?
通常FP是做PR 最关键也最具技术含量的一个环节。相对于后续的PR步骤,工程师对fp有着很大的自主权,但同时对工程师专业知识的广度和深度都有着较高要求。如果你需要负责一个有一定规模的芯片的顶层FP设计,那么你需要具备以下方面的知识。
- 网表层次结构和dataflow:一般情况下同一hierarchy下的memory在做FP时是放在一起的,它们的位置并没有硬性的规定,但是memory的位置会影响到stdcell的摆放,进而影响到最后timing的收敛,所以fp的designer需要了解整个design的dataflow,知道模块间的数据流向和交互,以此为依据来推算出每个模块所对应的memory的摆放位置。此外对于规模较大的FP,顶层FPdesigner还需要做一些模块切分,划分出一些规模较小的sub-block,以此来缩短整个芯片的设计周期。这也要求designer对网表结构,模块规模有较深的认识。
- timing constraint (SDC):SDC里定义了时钟的名字,源头和频率,所以designer必须了解SDC才能分辨出design中哪个clock和相关的memory是最关键的,哪些是相对比较容易满足timing要求的,再据此来安排FP的摆放。
- 芯片封装类型,以及所使用到的IO和 IP的工作特性:顶层FP的设计还需考虑到芯片所选用的封装类型(比如flipchip或wirebound),不同的封装形式对IO的要求也是不同的。另外一些特殊IP(比如一些模拟器件)也会有一些特殊的物理设计需求,比如它的位置由于封装的原因可能是固定的,不能随便安放;它pin上的金属线连接有特定的电阻和电容要求等。所以在做FP之前,必须熟读IPvender提供的user guide。
- 芯片所用工艺对FP 的特殊要求:不同的工艺对FP的要求也是不同的。在以前比较老旧的工艺节点上,特殊的FP要求并不多。但进入先进工艺节点后,尤其是进入FinFET工艺后,foundry对FP有许多特殊要求,比如cell不能随便翻转,需要加TAP CELL, BOUNDARY CELL,需要创建一些特殊的row或者layer等。所以必须对相关工艺节点的知识有充分的了解。
- UPF和low power的相关知识:如果你做的是一个带UPF的low power design,那么你还必须掌握一些low power的知识和技术。比如power switch一般都是FP designer来创建,power switch的数量,分布和连接都需要designer通过分析和多次迭代尝试来得到。
- Power分析的相关知识:对于FP来说,供电网络(PGnetwork)的创建也是一个难点,用哪几层金属做PG连线,用多大的pitch,多宽的线宽,什么样的连接方式都不是一口就能答上来的问题。PG线太宽会减少signal route的资源,太窄会有IR drop和EM的问题。所以FP designer还需要和做power分析的人合作来确定一个合适的PG网络。
由于FP所涉及的因素和环节比较多,很难总结出debug fp问题的一些通用的方法和流程。我的建议是可以在早期就做一些FP的DRC check,还有IO ring的单独的LVS,让潜在的问题尽量在早期暴露出来,避免时间上的浪费。另外也是在早期去做一些power分析,检查电源网络是否满足IR drop和EM的要求。
衡量一个FP的好坏并没有一个固定的标准,一般来说能使得后面的PR流程顺利进行下去,能满足timing,DRC,power要求的FP都是一个成功的FP。当然,也有一些固定的指标我们是可以去考量的,比如说尽量少的面积浪费(节约成本),尽量多的block reuse(减少人力成本)等。此外,对于同一个design,如果你做出的FP和其他人相比能更快的达到timing和DRC收敛,那么我们会认为你的FP的QA高于其它FP。
Placement
要做好placement需要掌握哪些知识和技能?
通常遇到placement问题大致的debug步骤和方法有哪些?
如何衡量placement的QA?
相比FP,Placement更多的是对EDA工具能力的考验。所以,对工具的掌握也就成了最重要的一个技能。Designer需要知道工具有哪些命令或者变量是可以优化timing的,哪些命令可以优化power。当然designer也需要清楚design的特性才能更好地使用工具,精准地找到对应的命令和flow。比如你需要知道你的design难点在哪里,是timing还是congestion,针对不同的困难你所需要的flow也不同。
通常遇到的placement的问题都和timing或者congestion有关。Timing violation较大时,可以先报出WNS对应的timingpath并逐行分析,看看有没有不合理的cell delay或者net delay。如果有,再分析是由什么原因引起的,是FP不合理造成的还是工具行为不合理造成的,然后再做出相应的调整。如果是FP引起的,还需要调整FP再重新跑placement。如果遇到congestion严重的情况,一方面可以调整工具的一些选项或命令,另一方面也有可能需要调整FP。
衡量placement的结果也是基于PPA三个指标,timing、power合理,没有congestion的问题,我们就认为placement的结果能够接受,可以接着进行后续的PR步骤。
- 合理的timing WNS和TNS
- 合理的congestion overflow
- 合理的cell density (std utilization一般不能增加太多)
CTS
要做好CTS需要掌握哪些知识和技能?
通常遇到CTS问题大致的debug步骤和方法有哪些?
如何衡量CTS的QA?
做CTS需要了解和考虑的要点:
- 工具做CTS的主要feature和命令
- 时钟结构,主时钟及频率,最快时钟及频率
- Library中clock buffer/inverter 的特性
- Clock需要用到的NDR rule
- 如何做func mode和scan mode的CTS
做CTS遇到问题的时候大多数情况下designer都需要用工具报出clock path,看看CTS的问题具体发生在哪个节点,然后还需trace clock structure,看看时钟树的连接关系,找出问题原因。
衡量CTS QA的因素:
- 较短的clock latency
- 较小的clock skew
- 较少的clock buffer/inverter 数量
ROUTE
要做好route需要掌握哪些知识和技能?
通常遇到route问题大致的debug步骤和方法有哪些?
如何衡量route的QA?
做ROUTE需要了解和考虑的要点:
- 工具做ROUTE的主要feature和命令
- Design所用到的工艺的物理特性
- Design中是否有特殊绕线要求的net存在
- 如何尽量避免noise的影响
常见的route问题:
- 大量routingDRC:可能是routing congestion引起的,可以通过查看congestion map来检查,如果是由于congestion引起,可能需要修改fp,或改变placement流程来改善congestion情况。
- 如果大量DRC都是发生在同一cell类型上,可能是这个类型的cell的layout出现问题
- 有可能是不恰当的routing设置引起大量的DRC。
衡量route QA:
- DRC 数量越少越好
- Noise越小越好
- Total Routing length 较短
DRC
要做好DRC需要掌握哪些知识和技能?
通常遇到DRC问题大致的debug步骤和方法有哪些?
解决DRC问题主要要了解相关工艺的design rule,只有这样才能真正理解DRC violation的意义和原因。
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/gY2PM0Zuiy-hpnlsWtSQeA
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。