hold violation如何修?

上一期介绍了setup violation的修复,这次我们来讲讲hold violation。 相比setup来说,hold的修复要简单得多。同样地,我们先来回顾下hold time的定义。

hold time(保持时间)检查的是数据不能传输太快,太快会影响前一次数据的锁存。如下图所示:



用公式简单表示为


Tlaunch为launch clock path delay

Tcapture为capture clock path delay

Tdp为data path delay

详细公式可以查看下列文章

【时序分析基本概念介绍】

同样的,我们从公式中可以知道,修复hold主要也有三种方法:

1)增加data path上的delay

这是最常用的修复hold violation的方法。增加path delay要比减小delay方便得多,因此hold violation非常好修。一般情况下,我们只需要在data path上垫buffer或者delay cell就行。buffer cell能增加的delay较小,delay cell会比较大,我们可以根据timing report中每条path的slack情况可以选择垫buffer或者delay cell。

还有个需要注意的事项是,buffer或者delay cell插入的位置。通常情况下,cell的位置都插在path的endpoint附近,因为这样对其他path setup影响的结果最小,也能更好地避免drv的violation。

2)增加launch clock path delay

和修setup violation一样,我们也可以通过垫launch clock path delay来实现修复hold violation的情况。但实际情况下,我们很少使用该手段,因为动到clock,就会出现很多不可控的状况。除非是从同一个register出去有很多hold violation的情况,在设计density很高的情况下可以尝试使用。需要注意检查前一级path的hold margin。

3)减少capture clock path delay

这种方法也需要动到clock,而且减小clock path delay的情况很难实现,因此一般这种方法不可取。

Hold violation很大程度上依赖于clock path的质量,如果clock tree做得很平,那hold violation就会少很多。实际在最后ECO阶段修hold的过程中,我们可以更多地通过脚本来实现。抓取violation path的endpoint点。如果是SI pin,一般可以直接加buffer,或者delay cell。非SI pin的话,记得检查一下对应的setup的margin。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • How to calculate bottleneck for timing inspection? Data P...
    Empyrean_SoC阅读 1,427评论 0 1
  • How to debug the remaining violations? 1) The remainning ...
    Empyrean_SoC阅读 1,082评论 0 1
  • 以下三个是最经常被问到的,基本上属于介绍性的题目,无所谓正确答案,在我看来,这些不算真正的问题。 Discuss ...
    蜀湘情缘阅读 6,546评论 0 8
  • 今天我们要介绍的时序分析概念是on chip variations,简称OCV。OCV会对时序分析提出更严格的要求...
    飞奔的大虎阅读 2,434评论 0 1
  • 首先,我们回忆一下setup的定义。下图-1展示了一条典型的timing path以及setup的计算方法。 Se...
    飞奔的大虎阅读 930评论 0 0

友情链接更多精彩内容