时间做减法,人生做加法——如何修复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分析>】

同样的,我们从公式中可以知道,修复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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值