我们都知道,在做hold time检查的时候,是需要从lib中读取reg的hold requirement time,或者说hold margin。
最基本的,hold margin应该也是一个input transition及output load的函数。那么,如果考虑socv/pocv的时候,hold margin的mean和sigma值要如何计算呢?
其实我对这个问题的理解还不够深入,感觉还是比较复杂的,我只能大概说一下我的想法。Mean值就比较朴素,应该可以直接查lib得到。
不过需要注意的是,有些lib可能在创建的时候就考虑到了sigma的影响,为了更加悲观一些,这种lib就会在hold margin的mean值上已经加上了一些sigma的影响,这种lib的hold margin会比正常的要小一点,具体是怎么计算的可能真的在我的能力范围之外了。
那么,hold margin的sigma值怎么得来的呢?之前我的理解很简单,认为和一般查cell delay的sigma一样,读取lvf文件即可。
但是今天发现事情并没有如此质朴,它的sigma是要被前面一系列delay的sigma影响的。这有点不好理解,我暂时也不知道为什么会被前面的delay sigma影响。
首先我们知道一条path上,最终delay的分布的mean值是所有cell及net mean值的和,最终delay分布的sigma值是所有cell及net sigma的平方和再开根号。好像是data path的delay sigma会影响到hold margin的sigma,launch path貌似没有影响。
最终好像也有不同的计算方式,一种是算数相加,把path delay sigma与lib中查到的hold margin的假的sigma直接加起来,还要乘以相应系数,得到hold margin真的sigma。另一种是取他们的平方和开根号,再乘系数。
现在我也在努力找这部分的资料,但是感觉还是有点少,了解的不够深,上面写的都是半猜半推理的,有可能不对,如果有什么想法欢迎与我讨论。
另外我还想问,transition的sigma要考虑进去吗,因为不同的transition不是会对应不同的cell的delay吗?
-
寄存器
+关注
关注
31文章
5336浏览量
120230
发布评论请先 登录
相关推荐
评论