• 注册
  • 查看作者
  • 数字IC后端设计静态时序篇之net delay和crosstalk为何是负值?

    数字IC后端设计静态时序篇之net delay为何是负值?

    今天吾爱IC社区的小编为大家做个关于cell delay,net delay方面的干货分享。前阵子在某个交流群看到居然有很多人没见过“负的net delay”,甚至不知道为何有negative delay。看到这个现象小编很震惊!!!经过思考后,觉得一方面他们可能是刚工作一两年的数字后端工程师,另外一方面就是完全没有认真看过甚至没看过STA那本宝典。这本宝典堪称静态时序分析的葵花宝典,是所有数字IC后端工程师必须看的一本好书。本文介绍的所有内容均在这本书有非常详细的介绍。公众号有20本数字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为两输入与门的输出。

     

     

    propagation delay

    propagation delay

    图 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不要超表。

     

    cell delay查找表

    cell delay查找表

    图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比较小

    negative cell delay

    negative cell delay

    图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 场景。

     

     

    negative crosstalk原理

    negative crosstalk

    图5 crosstalk effect

     

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

     

    小编知识星球简介:

    在这里,目前已经规划并正着手做的事情:

    • ICC/ICC2 lab的编写
    • 基于ARM CPU的后端实现流程(已经发布)
    • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
    • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程(准备中)
    • 时钟树结构分析(规划中)
    • 低功耗设计实现(规划中)
    • 定期在星球布置作业题(星球已经支持布置作业功能)

    在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

    反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有六十六星球成员,感谢这六十六童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)

    揭秘数字IC后端时钟树综合要用clock inverter来build clock tree(min pulse width check)

    相关文章推荐

    揭秘数字IC后端时钟树综合要用clock inverter来build clock tree(min pulse width check)

    从数字IC后端设计实现看先进工艺7nm实现的各种挑战

    数字后端设计实现后期碰到这些问题,如何做ECO?

    我是如何在五年内实现年薪60万?

    教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告

    这些低功耗设计实现经验,你真的懂了吗?

    深度解析Create_clock与Create_generated_clock的区别

    IR Drop分析之Redhawk分析流程

    CRPR能补偿crosstalk吗?

    原来电路最高工作频率是这么算出来的(STA基础篇)

    数字后端面试问答No.1-3(每日三问)

    教你轻松调DCT和ICC之间Timing与Congestion的一致性

    数字芯片设计实现中修复setup违例的方法汇总

     

    好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱IC社区(52-ic.com)也正式上线了。吾爱IC社区(52-ic.com)是一个专业交流和分享数字IC设计与实现技术与经验的IC社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

    揭秘数字IC后端时钟树综合要用clock inverter来build clock tree(min pulse width check)

     

  • 0
  • 0
  • 0
  • 843
  • 单栏布局 侧栏位置: