IE盒子

搜索
查看: 170|回复: 6

深度解析为什么net delay会是负值(静态时序分析基础篇)

[复制链接]

1

主题

6

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-19 10:13:20 | 显示全部楼层 |阅读模式
今天吾爱IC社区的小编为大家做个关于cell delay,net delay方面的干货分享。前阵子在某个交流群看到居然有很多人没见过“负的net delay”,甚至不知道为何有negative delay。看到这个现象小编很震惊!!!经过思考后,觉得一方面他们可能是刚工作一两年的数字后端工程师,另外一方面就是完全没有认真看过甚至没看过STA那本宝典。这本宝典堪称静态时序分析的葵花宝典,本文介绍的所有内容均在这本书有非常详细的介绍。公众号有20本数字IC设计电子书下载资源,有需要的童鞋可以前往下载。
【大师必备】最全的数字IC设计经典书籍电子版下载


  • 什么是传播延时
传播延时是指信号从逻辑门的输入端到其输出端所需要的时间。
这里引用一个英文的定义(很多时候用中文来描述专业术语,真的很别扭)
It is defined as the difference between the times when the transitioning input reaches 50% of its final value to the time when the output reaches 50% of the final value showing the effect of input change. 这里50%被定义为逻辑阈值。
以图1中的两输入与门为例。I1端是一个constant,value为1,I2端信号波形如图所示。O为两输入与门的输出。





图 1  propagation delay示例

传播延时取决于
1.input transition
input transition越小(即fast slew),cell delay越小。在数字后端设计实现中,常常看到cell delay比较大的原因之一就是input transition比较大(transition比较差)导致的。
2. output load
输出负载越大,需要给负载充电的时间就越长,因此cell delay也就越大。这里顺便提下,有的时候我们为了balance delay值,可以通过加dummy net来增加load,从而增大latency。
那么工具是如何来计算propgation delay的呢?

  • Liberty文件
Liberty file 包含每个逻辑门每个输入到输出路径的查找表,我们也称之为cell arc。这个查找表往往以.lib或者.db形式给出。通过查找表,可以得知某个的input transition和output load所对应的cell delay值。Lib文件部分截图如图2所示。由于这个Table不可能做到无限大,无限精确,对于不在查找表中的input transition和output load的组合,工具会利用插值算法来计算cell delay。这个Liberty文件一般是由fab提供的,对标准单元进行K库获得的。在数字后端实现时需要注意的是transition和load不要超表。


图2  cell delay lockup table

  • SDF文件: SDF (Standard Delay Format) is the extracted delay information of a design. The current delay information, as calculated, can be dumped into SDF file. It can, then, be read back. In case SDF is read, delays are not calculated and SDF delays are given precedence.
当前某个cell的output transition其实就是下一级cell的input transition。因此我们也需要一张表来告诉工具如何计算output transition值。这个表如图3所示,计算output transition值的这个表是一个3*3的表格。从表中可以看出Output transition值也取决于input transition和output load。



图3 计算output transition的lookup table
上面介绍了cell delay的计算方式,细心的人会发现cell delay都是正值。而实际上cell delay是存在负delay的情况。而且从propagation delay的定义可以看出,当output的transition足够快,完全可能出现output 50% 电平提前于input50%电平,即发生负的delay情况,如图4所示。
出现负的net delay情况如下:
Drive的驱动能力够大
Input transition足够小
Output load比较小


图4  negative cell delay 示意图

  • Net delay
Net Delay refers to the total time needed to charge or discharge all of the parasitic (Capacitance / Resistance / Inductance) of a given Net.
Net delay的计算往往是将整个design中的net拆分成若干段来进行的,同时把每段net用某种RC模型来表征。数字后端实现过程中net delay也仅仅是基于特定的delay 模型来进行net delay的估算。PR工具布线后的database,需要利用Start-RC 来进行RC 抽取,以SPEF格式的RC文件输出。最后在Timing signoff工具Primetime中读取这个RC spef文件来进行delay的计算。更多关于net delay估算的模型后续会专门做个讨论。
那么net delay可能是负的delay值吗?答案是肯定的。在没有crosstalk的情况下,net delay一定是正值。图5为一个简单crosstalk示例电路。其中Net N1为Victim net,这条net边上有一条net,我们称之为Aggressor。Net N1和Aggressor之间存在耦合电容Cc,Cg为Net N1的对地电容。
当Net N1有个上升沿的跳变时,且Aggressor 这条net也是从0到1的跳变,且transition变化比Net N1还快时,此时就会存在一个负的crosstalk(假设存在串扰)。正是由于这个negative的crosstalk,反而使得Net N1的transition反而变得更好了,从而显现出负的net delay值。这种情景往往是用于分析min path即hold 场景。
CRPR能补偿crosstalk吗?



图5 crosstalk effect
所以,对于hold分析而言,launch clock path和launch data path上的crosstalk应当是negative crosstalk,capture clock path和capture data path上的crosstalk应当是positive crosstalk。

更多干货请关注作者的微信公众号(id: ic-backend)。如果你对文章内容有疑问,也欢迎和我联系,互动交流。
回复

使用道具 举报

4

主题

13

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2023-1-19 10:14:12 | 显示全部楼层
感谢 真的长知识了 现在知道了有负的net delay 但是似乎工作中一般碰不到这种情况
回复

使用道具 举报

1

主题

6

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-1-19 10:15:10 | 显示全部楼层
只能说这种情况比较少,我是pt 中见过这种情况的。
回复

使用道具 举报

4

主题

10

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2023-1-19 10:15:49 | 显示全部楼层
弱弱的问一下pt是啥
回复

使用道具 举报

3

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2023-1-19 10:16:25 | 显示全部楼层
Prime Time ,业界公认的timing signoff 工具。
回复

使用道具 举报

0

主题

9

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-1-19 10:17:01 | 显示全部楼层
葵花宝典是哪本书啊[思考]
回复

使用道具 举报

1

主题

8

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-1-19 10:17:09 | 显示全部楼层
关于图四的满足条件的第二点,应该改为“Input transition足够大”吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表