0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Net Delay在整个路径延时的占比是什么情况呢?

冬至子 来源:RTL2GDS 作者:老本 | Benjamin 2023-06-27 14:07 次阅读

绕线延时(Net Delay)是怎么计算出来的呢?Net Delay在整个路径延时(Path Delay)的占比又是什么情况呢?针对关键路径,工具会如何降低Net Delay呢?下面我们就来逐步阐述。

Net Delay占比多高?

Path Delay = Cell Delay + Net Delay

你可能好奇Net Delay所占的比重如何?这个跟工艺和设计是相关的,但是总体上的趋势是,随着工艺尺寸缩小,Net Delay占比越来越高。下面是Net Delay占比的分布图,统计对象是基于12nm工艺的一个SoC设计中的100万条路径。可以看出,很大一部分的Path中的Net Delay占比超过20%。

图片

Net Delay 计算公式

为了计算Net Delay,我们需要先提取出电容电阻,如果已经有真实的绕线(route)或者预估的绕线(global route),那么只需要根据route在不同层(layer)的分布就可以提取出相对准确的寄生参数值,下图是在log中显示每一层的layer的单位电阻和电容值的实例,这些值的源头是Foundary提供 TLUPlus /ITF文件(本文以ICC为例,其他EDA工具会有较大差异,具体在PnR教程中会讲解):

图片

但是,问题来了,在综合(Synthesis)阶段,如果没有绕线的长度信息,也没有stdcell的位置信息,是怎么得到电阻电容值的呢?这就是Wire Load Model在起作用了。

Wire Load Model

下图是标准单元库.lib中定义的一种Wire Load Model,名字是“ZeroWireload”,它是根据net的扇出(fanout)来预估长度(length),然后再根据所定义的单位长度的电阻(0.00001),以及单位长度电容(1)来计算net的寄生RC参数。不过图中的例子比较理想化,都是设成了0,完全不考虑net delay。在实际项目中,必要时,可以自己定义Wire Load Model,尽量在综合阶段将Net Delay的影响考虑进去。

图片

Elmore Delay 模型

既然已经有了寄生的RC信息,那怎么计算Net Delay呢?

对于单输入单输出的net,假设不考虑net之间的耦合电容(即不考虑噪声的影响),并且也不存在电阻性的反馈回路的情况,可以用Elmore Delay模型来计算Net Delay,如下图:

图片

根据Elmore Delay公式,各节点的delay可以表示为:

图片

如果把绕线用分布式RC模型来表示,如下图:

图片

那么,Net Delay可以进一步化简为:

图片

原因是Cwire只能往前看到Rwire/2的电阻,Cload往前能看到Rwire的电阻。

AWE模型和Arnoldi模型

AWE(Asymptotic Waveform Evaluation)和Arnoldi都是是更高级的对RLC网络延时进行瞬态响应匹配近似的方法。当然,AWE本身也有一阶模型,结果与Elmore类似,但是误差也较大(与SPICE模型相比),可能达到74%,二阶AWE模型的误差可以减少到22%,四阶AWE的近似结果和SPICE模型的结果误差已经很小了。AWE模型的优点是容易实现,缺点是数值不稳定,而Arnoldi模型会更加稳健,在目前EDA工具Postroute阶段应用比较多。

Net Delay的优化

前面讲到Net Delay占整个Path的比重很大一部分已经超过20%了,如何去优化这一部分Net Delay呢?

根据Net Delay的计算公式,减少R*C的值就能优化Net Delay。由于高层金属通常会比底层金属的单位长度RC更小,所以把路径上的net更多地绕在高层金属上,可以把关键路径优化得更好。具体到PnR工具的实现上,通常会有一个“Layer Promotion”的功能。

另外,对于高速的net,尤其是clock net,一般会特殊对待,给它们设置NDR(Non-Default-Rule),让它们用更大的宽度(width)和间距(space),甚至加上shielding隔离它们,以保证这些高速的net不会被其它的net影响。当然设置NDR是有代价的,它们会占用更多的绕线资源,并不是越严格越好,常见的设置是,对clock net设置2倍宽度2倍间距(2w2s)的NDR。其实高速的net用更宽的rule还有一个DFM的原因,就是这些net的电子迁移(Electro-Migration,EM)导致的绕线缺陷机率比普通net要高。在PnR教程中会详细介绍EM,以及如何避免、修复EM的违例的问题。

总结

对于Net Delay,需要了解它在整个Path Delay占的份量,熟悉Wire Load Model,Elmore Delay,AWE,Arnoldi等概念。有些在后端的面试中也经常被问到。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EDA工具
    +关注

    关注

    4

    文章

    252

    浏览量

    31283
  • SoC设计
    +关注

    关注

    1

    文章

    141

    浏览量

    18667
  • DFM
    DFM
    +关注

    关注

    8

    文章

    447

    浏览量

    27590
  • 电阻电容
    +关注

    关注

    1

    文章

    38

    浏览量

    9297
  • 耦合电容
    +关注

    关注

    2

    文章

    134

    浏览量

    19523
收藏 人收藏

    评论

    相关推荐

    这个是什么情况

    `这个是什么情况。。`
    发表于 09-11 22:36

    请问如何使用sigmastudio的delay延时??

    大家好!我用的是ADAU1701 和 ADAU1452 开发板,我希望模拟输出的两个通道的声音一个先出一个后出,那么sigmastudio上面要把delay模块放在哪里?是放在模拟输入一进来
    发表于 08-10 06:39

    请问AD7682什么情况下要接0V什么情况下要接VREF/2V

    问题一:AD7682有一个引脚为COM,手册上说明的是这个引脚可以接0V或者VREF/2V,所有的通道都可以参考这个共模点。那么什么情况下要接0V什么情况下要接VREF/2V?这个
    发表于 08-19 07:25

    什么情况选用PCI板卡,什么情况选用PXI?

    搭测控系统时,什么情况选用PCI板卡,什么情况选用PXI?
    发表于 03-31 20:59

    STM32中断里使用SysTick_delay延时引起了哪些问题

    STM32中断里使用SysTick_delay延时引起了哪些问题?如何去解决
    发表于 11-16 09:12

    使用半主机模式的printf()函数会出现什么情况

    使用微库的printf()函数该如何去实现?使用半主机模式的printf()函数会出现什么情况
    发表于 11-30 07:57

    浅析RT-Thread Studio编译Flash和RAM后的使用情况

    1.添加编译后Flash 和RAM使用情况,按如下设置添加如下字段-print-memory-usage后编译如下
    发表于 03-11 17:01

    请问异步电机什么情况下会进入回馈制动

    请问异步电机什么情况下会进入回馈制动?求解
    发表于 03-16 10:15

    请问sigmastudio中如何对ADAU1452使用delay延时

    大家好,我想问的是sigmastudio中如何对ADAU1452使用delay延时?在上图中可以看到,我使用了delay延时,但是从两
    发表于 11-29 08:07

    【STM32单片机-库函数】SysTick延时delay

    : SysTick延时函数头文件 /* --------------------------------------------------------- */#ifndef _DELAY_H_#define _DELAY
    发表于 11-24 19:06 12次下载
    【STM32单片机-库函数】SysTick<b class='flag-5'>延时</b>—<b class='flag-5'>delay</b>

    MSP432(Keil5)——3.delay延时驱动

    本次示例中的延时函数采用了系统内部的systick时钟,学习了正点原子的延时函数写法。如果你移植出来不是标准的延时,那么就是你的时钟频率设置的不对,我的是48MHz。delay
    发表于 12-14 18:56 4次下载
    MSP432(Keil5)——3.<b class='flag-5'>delay</b><b class='flag-5'>延时</b>驱动

    STM32上进行Delay延时的方法

    1、使用SYStick专门的延时。void delay_us(uint32_t us){ static uint32_t delay_flag = 0; delay_flag = 1;
    发表于 12-24 19:39 2次下载
    STM32上进行<b class='flag-5'>Delay</b><b class='flag-5'>延时</b>的方法

    C语言 | 延时函数(Delay

    github:https://github.com/MichaelBeechanCSDN:https://blog.csdn.net/u011344545“nop”函数对于延时很短,要求在us
    发表于 01-13 13:38 14次下载
    C语言 | <b class='flag-5'>延时</b>函数(<b class='flag-5'>Delay</b>)

    Systick定时器延时原理与HAL_Delay()延时函数的使用

    代码的书写过程中经常用到延时,这里主要讲述一下HAl延时,HAL库之HAL_Delay()函数在72M主频,STM32CUBEMX自动生成情况下,默认为
    的头像 发表于 04-26 09:09 1.2w次阅读

    什么情况下要进行电能质量检测?

    什么情况下要进行电能质量检测?
    发表于 09-08 14:20 534次阅读