我们都知道,在做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,lau