standard cell timing model 主要包括兩方面的信息:
Cell Delay calculation
Output Transition calculation
首先,cell delay 和 cell output transition這兩者都是根據 input trans 和 output load 計算出來的;
具體應該是 input pin transition 和 output net total cap 來計算:
這里的 input transition 就是上一級cell 的output transition,而 cell output transition 的計算也是由 input trans 和 output load 決定的:
以此逐級類推計算,就可以計算出 timing path 上所有的 cell delay 值了。
********************************************************************************
來看一個具體的 cell delay 計算實例:
上圖中 SVN_BUF_10 這個 cell :
cell delay = 0.0861
input pin transition = 0.5727
output net total cap = 0.0182
基本原理是將input trans 和 output cap 這兩個參數代入到 std cell 庫中的 delay 計算表(lookup table),查出對應的 delay 值;
用 report_delay_calculation 可以報出計算過程:
圖中的 Z 就是計算出來的 cell delay ,與 report 中的 0.0861 很接近;
具體計算過程是:
根據 X 和 Y 的值,在 lib lookup table 中查找到 X 和 Y 左右兩側的坐標點,將這四個坐標點代入二元擬合公式 Z= B*X + C*Y + D*X*Y ,就可以得到四個二元二次方程,由這四個方程可以解出 ABCD 四個系數的值,這樣就得到了一個具體的擬合公式,然后再將 input trans 和output cap 代入擬合公式就可以計算出這個cell 的delay 值了。
******************************************************************************
lib lookup table 如下:
在 lookup table 中,
index_1 是 input trans,是縱坐標
index_2 是 output cap,是橫坐標
有了橫縱坐標,就很容易查出 delay value了
#################################################
以上是 組合邏輯 cell delay 計算,那么 sequential cell 的 delay 如何計算? 比如 register ?
register 的 delay 包括兩個: cell delay (即 CK -> Q 的delay), library setup time (即 CK 端的 setup window)
a)register cell delay 的計算:根據CK 端 input transition 和 Q 端 output cap,查表得出
b)register library setup time 的計算:根據 D 端data input transition(index_1) 和 CK 端 clock input transition(index_2), 查表得出
*********************************
| ^_^ | ^_^ |