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

    文章

    264

    浏览量

    31708
  • SoC设计
    +关注

    关注

    1

    文章

    148

    浏览量

    18759
  • DFM
    DFM
    +关注

    关注

    8

    文章

    461

    浏览量

    28134
  • 电阻电容
    +关注

    关注

    1

    文章

    40

    浏览量

    9511
  • 耦合电容
    +关注

    关注

    2

    文章

    154

    浏览量

    19783
收藏 人收藏

    评论

    相关推荐

    这个是什么情况

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

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

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

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

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

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

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

    Atmel MCU 延时delay快速上手指南详解

    MCU软件开发中,延时函数用的非常多,有的是硬件延时,采用定时器,有的是软件延时,采用循环等待,不管是采用什么样的方式,最终达到的目的都是一样,为系统功能、时序做铺垫,下面结合Atm
    的头像 发表于 06-18 05:31 5336次阅读
    Atmel MCU <b class='flag-5'>延时</b><b class='flag-5'>delay</b>快速上手指南详解

    volte语音通话有什么用,什么情况下可以开/关volte

    听很多人都在讲volte高清语音通话那么什么是vote什么情况下需要开通volte什么情况下又可以关闭volte
    发表于 10-21 16:36 1.7w次阅读

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

    : SysTick延时函数头文件 /* --------------------------------------------------------- */#ifndef _DELAY_H_#define _DELAY
    发表于 11-24 19:06 13次下载
    【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>的方法

    什么情况下芯片容易坏

    芯片是电子学中一种将电路小型化的方式,并且时常制造在半导体晶圆表面上。相信很多小伙伴都经历过芯片坏掉的情况,那么什么情况下芯片容易坏? 在这些
    的头像 发表于 01-02 17:54 6471次阅读

    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.4w次阅读

    HAL库中用定时器实现自定义延时函数delay_us()

    STM32程序从标准库移植到HAL库的时候,会发现HAL库中只有一个毫秒级延时函数HAL_Delay(),而没有微秒级延时delay_us(),本文就在HAL库中用定时器实现这个
    的头像 发表于 09-21 10:33 1.1w次阅读

    什么情况下选用工业主板

    虽然工业主板和普通主板差异比较多,但是某些情况下工业主板用于商业环境也是可以的,但是实用性不是很好。什么情况下选用工业主板
    的头像 发表于 02-14 10:34 810次阅读
    <b class='flag-5'>什么情况</b>下选用工业主板

    IGBT模块损坏时,什么情况导致短路?什么情况导致开路?

    IGBT模块损坏时,什么情况导致短路?什么情况导致开路?  IGBT模块是一种功率模块,用于高功率电子设备控制。当IGBT模块使用过程中遭受损坏时,可能会出现短路或开路的问题。这两种情况
    的头像 发表于 10-19 17:08 4447次阅读