FLOORPLAN:后端
作好floorplan要掌握哪些知识技能服务器
遇到floorplan问题,大体的debug步骤和方法有哪些app
如何衡量floorplan的QAdom
以上是驴神提的五大点问题。鄙人狠狠地反驳了驴神的提问。后端实现工做是一个不可分割的总体,最终能收获什么样的果实,在你种下种子的那一刹那就已经注定了;至于中间的浇水施肥打药,那都是循序渐进的工做了。整个后端过程就是一个混沌过程,floorplan是输入,gds和netlist是输出,中间是一团笼罩着混沌过程的迷雾。可是做为一个后端熟手、老司机,理应作到眼中有码心中无码,当你完成你的floorplan的时候,中间的迷雾在心中自动消散,最后能获得什么样的结果大体就有数了。ide
言归正传,floorplan做为后端工做的起始点,是后段工做最关键的节点;floorplan的质量,直接决定了这个design的上限。那么floorplan要作哪些事情呢?除了画个框框,摆摆memory,画画powermesh,还有规划placement blockage (hard/soft/partial), route guide (by layer/by percentage), cell guide (region/fence), 加physicalcell, 作一些preplace等等。作floorplan, 首先须要有良好的艺术鉴赏眼光!一个好的floorplan,必定是一个美的floorplan!只有每个细节都显示出美感的floorplan,才会是一个好的floorplan!工具
当咱们从头开始作一个floorplan的时候,必定要意识到,floorplan直接决定了placement的质量,决定了route的质量;io的位置、memory的位置、cellguide这些,都是种子,是给EDA工具的种子,基于这些种子,工具才能作出一个placement结果;一样,当placement 肯定的时候,route 的结果也基本决定了。因此在作floorplan 的时候,一个合格的工程师应该要掌握设计的数据流向,和工艺的基本特性。那么floorplan的一些重要步骤应该注意哪些事项呢,简单的说:post
IO/IP的规划。首先要熟读IO/IP的application note,掌握各个IP/IO的使用方法,有没有特殊的绕线需求,有没有特殊的place需求;对于顶层design,要了解IO的power domain对各类特殊cell的要求;对于blocklevel,若是须要自行决定io pin的位置,那么能够经过innovus的editPin功能很轻易的完成设置;ui
Memory位置的摆放。Memory 的摆放严重影响到 placement 和 routing 的质量。首先应该根据设计的数据流对 memory 位置进行粗调,而后应该根据 routing 的估算和drc的要求来进行微调。Memory 的位置对齐,出pin的方向,以及 channel 的宽度都是须要精细计算的;所以熟练使用 innovus 的floorplan toolbar的相关功能能够极大的提升咱们作floorplan的效率;debug
Placement blockage的设置。根据设计工艺的特色,DRC的要求,在memory/IP/power domain周围盖上hard placement blockage是常见作法;在channel里面根据timing的需求和绕线资源的计算,每每也要加上soft 或者 partial blockage;设计
Cell guide的设置。根据设计的数据流,咱们有时候会但愿约束一些module摆放到特定的位置;innovus提供了三种不一样的约束: guide/region/fence, 来知足不一样的需求。Guide的使用每每须要对design特别了解,而且通过不少尝试和分析才能获得较好的结果;
Power mesh的规划。记住一个原则:永远优先选用细而密的 power mesh 而不是粗而稀的 power mesh;
在完成floorplan以后,先用innovus检查一遍是否有违规的地方;
要对floorplan质量进行评估,最好的办法就是直接跑一遍place+route。
若是floorplan没有问题,就能够正式进入到APR阶段。EDA工具发展到如今这个阶段,后端工程师的方法学也在不断更新。传统的后端方法里面,place/cts/route 泾渭分明,丁是丁卯是卯;可是在innovus最新的early clock flow里面,place阶段就把cts/route通通尝试了一遍;而useful skew的使用,和innovus cts engine的进化,使得user几乎再也不须要去debug clock tree structure,再也不须要设置一大堆ignorepin/floating pin/exclude pin/stop pin之类(工程师要失业了!?);传统地看clock tree skew的评价标准,在今天基于useful skew的工具方法学下面也再也不适用了。所以,正如前文所述,place/cts/route 历来没有像今天这样紧密的结合在一块儿,造成一个密不可分的总体。
经过innovus的early clock flow+useful skew的使用,咱们能比之前达到更高的frequency,而整个设计方法也变得更加简单。那么在这么智能化的工具面前,咱们工程师还能够作些什么来帮助提升设计质量呢?
适当的cell guide。如前文所述,适当的cell guide至关于种下了一颗优质的种子,使得最后能结出丰硕的果实;
适当的path group。尽管innovus一般不须要设置不少path group,可是对于少数critical path,适当的path group 设置也是有益处的;
适当的over constraint。由于earlyclock flow的使用,工具在 placement 阶段就能看得史无前例的清晰;所以一个适当的over constraint能帮助工具取得一个最好的QoR,过犹不及。
那么既然如今工具这么智能,QoR这么好,是否是咱们工程师就能够把流程脚本往服务器一丢,而后等着看 post route 结果就行啦呢?No!永远不要中止对中间结果的检查:
不停追踪log file,有没有什么异常发生;
检查每一步的结果,包括但不限于:run time, timing, route over flow / violations, drv vioaltions, clock tree latency, derate / uncertainty setting, crosstalk delay.