关于时钟树详尽,诸位后端工程师应该都很熟习,作念好一个模块/一个chip的时钟树,对整个方法 的功耗和Timing影响都是繁密的。一个优秀的后端工程师,也不会仅仅单纯的遗弃几个TAP点,来器具 字据source group来我方分点作念Tree,这么只会跑flow 作念树的工程师在靠近器具搞不定的复杂时钟结构 的时候,只可安坐待毙,导致绕线完返修,损失许多技艺在signoff阶段,对时序和功耗硬修,致使导致 流片delay,今天咱们就来字据方法告戒来匡助全球作念出更好韩国伦理片,更竣工的时钟树!
图片韩国伦理片
当先咱们要昭着作念树的最终观念—天然是为了PPA的栽培,其实不作念树可不不错?天然不错!当你 现时的模块规模相比小,且没啥时序风险和PV,PI风险的时候,致使不错不作念树。然而时钟结构复杂/时 序功耗自己就有风险的模块就弗成了,树作念的不好将会导致ecoRoute完signoff阶段的时序收不下来,功 耗很差,致使根底没法不休,导致终末回退版块,老老诠释且归作念树!那小编合计就王人备莫得必要了, 咱们以innovus为例,来匡助全球快速作念到对树的不休,从而对CTS有更深的长入,而非只会跑flow看结 果。
其实关于CTS这个要领,咱们不错把从运行时钟结构到最终的时钟树结构分为三个阶段,况且在这三 个阶段永诀去存对应的Database,以简短分析究竟是哪一步出问题了?
第一部分—分点,这一部分主要靠器具去完成,器具会识别后端工程师提供的source group(这个字据 工程师成就的tap点来定组),并将团结skew group下source group底下的对应tap点(不错是 MUX,BUFF,INV,ICG等等)的OutPutPin的generate clk视为不异的时钟结构,进而器具会 clone主Gating下除Sink点之外的蓝本时钟旅途上的逻辑单位和时序单位,并将整条Path包含Sink点挂 到离其最近,时序更优的Tap点下,这一分点酿成运行树的历程,在Innovus下通过以下大叫达成:
图片
关于复杂的时钟结构,即多个分频时钟,倍频CRG子时钟,器具没办法很好的去分点省略说莫得过多的 洽商时序,而是单纯洽商距离,对Sink点进行暴力切分,导致Common Path的长度相配的短,共同路 径由source port到clone gating变成只好source port到主 ICG,这有可能会使得不同分点下的两个Sink 的local skew偏大,进而影响postCTS后的timing。这种情况咱们不错通过分点完后我方手动ec挂点/分 点前在Spec经管文献添加preserve port来罢休器具的分点效果。
第二部分—Cluster解DRV,这一部分也主要靠器具去完成,在动手这要领之前,工程师需要检测关于 部分Net有么有成就dont touch,有莫得成就ideal net,以免CTS详尽后发现部分CK Cell的 transition过大,一回首发现是DRV莫得惩处,这一部分引起latency增大的原因其实主如若因为 Placement摆放CK cell位置的不对理,使得时钟旅途发生了detour,加多了Net delay和部分本不错不 存在的解transiton的INV。这一部分碰到问题的主要惩处办法为:1.检查place阶段是不是有些Sink的 局部density过大/过小,导致器具在修DRV的时候拉扯较远/莫得位置摆放INV;2.手动ec,将终末一级 INV的Fanout Sink获胜挂到最近一级Clone的gating上,再解DRV(铭刻带个强驱动的BUFF整个挂, 不然可能会因为clone gating的outputload短暂增大而导致transition解的不好,传递到下几级,导 致latency增大)
第三部分—Full阶段长树,这一部分器具会字据你的Spec经管来对Sink之间的Skew进行均衡,在 innovus中咱们一般通过ccopt\_design来进行长tree和OPT同步的操作,骨子上innovus在ccopt阶段初 期,当先会笃定placement的信息,其中包括density和DRC的关系信息的check,然后在准备阶段, innovus会刷新一遍IO的skew,并判断各个skewgroup之间的关系,哪个是主clk,哪个是generate clk,是否存在复制关系?在判断完skewgroup的复制关系后,innovus会进行early global route,进行 快速绕线,以判断有莫得绕线风险,况且检查检查NDR以及track的完整性等等。
图片
ai 文爱是以基于以上器具的三个阶段操作,后端APR工程师们需要明确分点作念树的阶段方针是什么?1.降 低latency,以与其他模块的时钟树串起来对王人;2.缩小local skew,以减少后期fix timing劳动量,缩小 timing风险;3.加多common path的delay,观念亦然为了缩小latency和local skew;4.减少CK cell的 数目,有益于缩小面积和功耗。在这里,小编基于平素方法给出几种作念短树的latency和作念小skew的方 法:
加多TAP点的数目,这个要领固然不错有用的缩小skew和latency,然而会带来功耗劳动以及面积 浪费,况且跟着TAP点加多到一定数目,收益其实会沉稳不休。是以这个要领后端工程师最佳确立 在律例数目TAP点确切修不下来delay和skew的时候再使用。修改target来优化器具的分点和balance长树,内容主要包括(注: 修改要在clk spec坐褥后,即 generate spec后分点前)图片
加多new skrewgroup以及generated clk来指导器具解drv和长tree(这个主要优化latency,skew 变化并不大),以图一的CLK结构为例子,Fast Clk下MUX的ZN端不错成就generate CLK,并以这个 为source,成就一个新的skew group.图片
Size up时钟旅途上的icg以及buffer/inv,logic等instance,这么不错加多驱动,缩小transition,进 而缩小latency(这种面目不仅会优化latency,skew也会由一定的优化),比如D4的DCCKBUF换 成D8的BUFF,H12的BUFF换成H9的BUFF等等。不错通过提树/推树的xxx ps的要领,来作念长作念短树,Place阶段推树/cts阶段成就insertation delay 都有益于树的作念短(这个要领主要影响的是balance长tree阶段),这个时时不错针对cluster阶段 latency不大,然而balance长tree阶段短暂树长变长的path,举例图片
修改Space中的CK Pin的类型,有些不影响Timing的前提下把Pin成就成为stop ignore through pin(这个要领主要影响的是balance长tree阶段)一些ec操作,一般是器具分点/解DRV有问题的时候,才需要工程师去手动,比如再行挂点, presever pin,手动clone icg挂点等等掌持了以上这些内容韩国伦理片,念念必诸位ICer将会对CTS有更深的长入,CTS的达成其实跟着模块时钟复杂 的变化会有更多其他要领去缩小Latency以及Skew,举例转机flowPlan,与前端盘问修改RTL代码 的时钟结构,修改详尽时候map的lib cell,引入Mesh Cell等等。然而悉数的一切,都是为了芯片 有个更好的PPA,这么才能让你和全球的加班莫得空费!我是处芯积律,感谢全球阅读。
作家:处芯积律著作开始:处芯积律 本站仅提供存储服务,悉数内容均由用户发布,如发现存害或侵权内容,请点击举报。