电子说
今天突然想聊一聊route相关的问题,讲一讲NDR是什么,我也梳理总结一下我对NDR的认识。
NDR是non default rule的缩写,它指的是在绕线的时候给某些net制定的特殊的绕线规则。现在工具在绕线之前需要制定一个default rule,默认所有net都按default rule来绕。
比如我们规定某一层的线宽、线间距等,tool就会按照这个规则,加上自己的绕线算法,最后得出符合要求的绕线。
而对于指定了NDR的net,tool就会额外照顾一下,因为NDR的rule和default rule有所区别,route的最终结果就会有所不同,相应的会影响芯片的各项性能。
举个例子,我们可以指定某一条net,上了一条简单的NDR——让他在M3的绕线更宽一些,tool就会在绕线的时候首先保证我们的线宽,因为pitch(线间距)的约束,原本可能在它旁边track上的线就不能这么绕了,也就是说这条NDR使这根线占用了更多绕线资源,但好处是得到了更宽的线,显然对timing、EM等会有好处。NDR的含义很广,不止width,还有pitch、space、绕线的layer等的改变都属于NDR。
NDR最重要的用途,就是以牺牲绕线资源的代价改善timing性能。对于CTS的时钟线,timing要求比较高,如果用default rule较难满足做出比较好的时钟树,因此我们一般都会给时钟线上NDR,主要有以下几个方面:1.增大线宽,这样能有效减小net上的RC值,线上delay就会变小。2.增大线间距,这样就能减小crosstalk的影响,并且我们还会给一些CTS线加上shielding net(就是一段地线,用以消除串扰影响)。3.绕线层尽量高,理由同上,因为高层layer本身width、pitch就会更大。而且clock net会分为trunk以及leaf,一般leaf就是指连到flip-flop CP pin最后一段net,trunk指除了leaf外的clock net。Trunk和leaf会用不同的NDR,trunk的相对会更严一点,leaf的会更接近default rule。
对于signal线,我们很少会上NDR,最多也就是在ECO的时候修timing或EM来加一点NDR。一般情况下NDR都会用在CTS阶段。
需要注意的是,用户指定的NDR对于tool来说不能保证100%遵守。比如说有时候我们规定trunk在高层绕,但是因为绕线资源的限制,某些trunk net不能完全在高层来走,还是要在低层走一段。一般我们会要求满足NDR的比率要到一定范围才行。
全部0条评论
快来发表一下你的评论吧 !