我們都知道,在做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文章
5322瀏覽量
120023
發布評論請先 登錄
相關推薦
評論