block与top的时序差异分析,建议收藏

本文探讨了在电子设计中,block与top层面时序分析存在的差异,尤其是在setup和hold检查中。文章指出,尽管在特定假设下,top级与模块级的时序分析应一致,但clock noise(delta delay)和不同clock latency导致的timing window变化会影响这一结论。setup检查受到clock network delta delay和不同clock timing window的影响,而hold检查则主要受timing window影响,导致top级观察到的时序差异。当所有内部clock为异步关系时,对于hold check,top与block的分析结果将趋于一致。

我们经常会遇到这样的情况,block把timing修干净之后,交给做顶层的同事,结果会发现,仍然会有很多新的违例。

这个现象比较常见,但是其中的原因其实比较复杂。

为了把这个问题解释清楚,我们先做几个假设。

假设:

  • top的spef不是flatten抽取的,而是调用的各个block的spef,这样避免了工具精度的问题。

  • top与block之间完全做好了隔离,不存在top到block之间的耦合电容。

  • 只考虑intra clock的情况,不考虑inter-clock的情况。因为顶层的路径不同,clock latency必然不同,那么导致inter clock timing不一致也是合理的。

  • 两者constraint一致

1

基于以上假设,是不是top看顶层看模块级的timing与模块级自己来看应该一致了呢?

这里我们要考虑clock上的noise的影响。

这里的noise指的是delta delay。

delta delay比较有意思,你会发现,无论是launch path, 还是capture path, 它都是往悲观的方向上偏。

比如,如果是setup check,launch path的delta delay都是正值,而capture path的delta delay都是负值。

而对于hold,则正好相反。

block看不到顶层部分的clock tree。所以block会偏乐观,也就合理了。

但是,对于setup和hold的影响是有差异的。

2

我们知道,setup check属于非同边沿check,因此,CRPR是无法消除noise的影响的。

所以对于同一个clock,setup会变差也情有可原。

但是hold check是属于同边沿check,CRPR完全可以把顶层的noise的影响抵消。

因此,理论上,对于hold check来说,top看到的timing应该和block一致。

是这样吗?

3

并不是。

虽然我们不考虑inter-clock的timing check,但是对于不同clock之间的noise的影响还是需要考虑的。

由于top与block看到的不同clock之间的latency的差异,会导致timing window的变化。

要知道,对于同步逻辑,timing windlow直接影响到noise的计算。

所以由于不同clock之间noise的影响,也会导致top与block之间timing的差异,包括hold。

这种差异表现形式是,从top来看timing,会有数量比较多,但是wns比较小的setup,hold的violation。

4

基于以上假设,对于setup check,会有clock network的delta delay的影响,不同clock的timing window的影响。而对于hold check,则是timing window的影响。而这些影响,导致top看到的timing与block之间的timing的差异。

5

再增加一个假设。

如果block内部的clock都是异步的关系,对于hold check,top与block是否一致?

我想,你应该有答案了吧?

看完了,点个赞呗~

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值