今天想來聊一聊STA相關的內容。GBA和PBA是在做STA分析的時候的兩種分析模式,在PrimeTime里是這么命名的,在Quantus(cadence家的STA工具)里面好像是別的名字,但實質內容是一樣的。我就簡單梳理一下這兩種模式到底是什么。
GBA全稱為graph based analysis,是工具默認的分析方式。它是說工具在從lib中讀取cell的delay的時候,永遠是讀取由最差transition產生的delay。
Transition又可以叫slew,是指信號跳變所需的時間,rise transition一般會定電壓從10%到90%的時間,fall transition一般是90%到10%的時間。最差transition是什么意思呢?
實際上電路在工作的過程中,一個cell收到的input transition是由前一級cell影響的,如果前一級cell的輸入有多個,不同pin的輸入所帶來的output transition會有所不同。
舉一個簡單的例子,一個二輸入與門后面接了一級buffer,與門的input有A,B,輸出Z,假設原來AB都是1,Z是1,當A從1變成0,B不變的時候,Z的transition假設是10ps,而當B從1變成0,A不變的時候,Z的transition可能不是10ps,可能是5ps。
而讀取后一級buffer lib的時候,是需要查input transition & output load那個二維表的,10ps和5ps所帶來的delay是不一樣的。這樣工具就會疑惑,我在算這個buffer的delay時,到底用前一級帶來的哪個transition呢?而我們的GBA模式,就是總是用最差的transition,10ps。
假設某條timing path是經過B pin的,盡管對這條path來說,后一級buffer實際上應該用B所帶來的5ps的transition,GBA模式下還是會用10ps。
可想而知,這樣的分析模式速度會比較快,它可以在timing分析之初就把所有cell的delay都算好,哪條path經過什么cell直接拿現成的結果就行了。
但是GBA的結果較為悲觀,可能有些path產生了violation,但實際芯片工作時這條path上的transition不可能是另外那個更大的值的。這樣的悲觀我們是需要剔除掉的,因此引入了PBA的概念。
了解了GBA,PBA也就很好理解了。PBA是path based analysis,指的是我要分析哪條timing path,就用這條timing path的transition來查cell的delay。對應上面的例子,如果用PBA模式就會用B的5ps來算buffer的delay值了。這種算法時間復雜度大大提高,但結果更為精確。
GBA和PBA都有其存在的意義。我們在做STA分析的時候,首先都要快速做一遍GBA,如果沒有任何violation,那做PBA肯定也會沒有violation,timing可以確保clean。
而如果有violation,我們會再訴諸于PBA,但是也不必再分析所有的timing path了,只需要分析那些GBA模式下產生violation的path即可。
如果這些path在PBA模式下都pass,那我們同樣可以確保芯片timing clean;如果這些path在PBA模式下還遺留幾條有violation,那么這幾條就是我們真正需要去修的。
這其中蘊含了一種很樸素的思想:首先用比實際更苛刻的標準快速篩選數據,再用實際的標準來篩選上一輪的數據,這樣可以大大提高篩選效率。
在primetime中pba模式還有path與exhaustive的區別。Path是指重新計算指定的最差path,exhaustive是要重新計算所有產生violation的path。這就不展開講了,因為我覺得path沒什么用,一般項目都會用exhaustive模式。
-
STA
+關注
關注
0文章
51瀏覽量
18945 -
GBA
+關注
關注
0文章
10瀏覽量
8682
發布評論請先 登錄
相關推薦
評論