原本是想說這個網誌要試著從頭開始講述APR這份工作, 以及概念.
後來發覺太難了, 打算改成遇到什麼問題值得分享就post上來,
作為自己職涯上的一種紀錄.
這個問題是最近被一個朋友問到的,
"什麼是GBA? 什麼是PBA?"
這是一個STA模型的問題, 千萬不要問我為什麼不是NBA!
APR的STA (靜態時序分析)是一個非常重要的部分,
在講PBA & GBA之前其實應該先提到STA的概念,
下次再補上STA好了. 先來說說這兩個名詞.
GBA : Graph base analysis
PBA : Path base analysis
一般而言, 看STA我們都是看GBA.
PBA將會用在GBA解不掉的path, 看在PBA的mode下是否pass.
從一個圖來看GBA以及PBA的差別
上圖這個例子, 在GBA mode時,
第一個OR gate會因為input B的影響而使用最差的結果去做假設
同理, 藍色的NAND gate也會因為input A使用最差的結果去做假設
這樣下來我們會發現, 其實GBA mode太過於悲觀, 並不符於實際,
而在PBA mode時,
在每一個gate將會採計實際上 input -> output 的 slew.
結果也不會那麼悲觀.
這樣衍伸了一個問題,
為何STA都預設使用GBA mode去看timing path呢?
不是用PBA才較符合現實嗎?
原因則是GBA只要掛上timing arcs,
在runtime上遠低於PBA, 尤其在越大越複雜的design越能看出runtime的差別.
於是在實務上我們偏向使用GBA mode去做timing fix.
在真正修不下來的path才run PBA mode去確認是否可以放掉.