今天我們要介紹的時序分析概念是on chip variations,簡稱OCV。OCV會對時序分析提出更嚴格的要求。那為什么需要OCV呢,因為制造工藝的限制,同一芯片上不同位置的MOS晶體管的性能會有一些差異。庫中的PVT是一個"點",比如1.2V,250℃,工藝1.0。 但實際芯片的PVT永遠不會落在一個點上,而是一個范圍;比如說有時序關系的幾個cell,可能這幾個cell的PVT是1.18V,20℃,工藝0.98。而那個cell的PVT是1.21V,35℃,工藝1.01。這些cell的PVT都不在那個點上,怎么去分析呢?這時候就需要OCV了。
還是參照single mode和bc-wc那張圖,OCV的檢查方式更加嚴格,如下所示:
For setup :Launch clock path :late path from max lib Data Path :late path from max libCapture Clock path :early path from min libFor Hold:Launch clock path :early path from min libData Path :early path from min libCapture Clock path :late path from max lib
OCV for setup check
還是原來BC-WC分析模式那張圖:
假設PVT情況可以在整個chip上變化, (暫時不考慮CPPR)
clock period = 4Launch clock late path (max) = 0.7 + 0.6 = 1.3Data late path (max) = 3.5Capture clock early path (min) = 0.5 + 0.3 = 0.8Setup = 0.2Data arrival time = 1.3 + 3.5 = 4.8Data required time = 4 + 0.8 - 0.2 = 4.6Slack =Data required time - Data arrival time=4.6 - 4.8 = -0.2
OCV for Hold check
對于Hold check, 可以參考下圖分析模式:
Launch clock early path (min) = 0.5 + 0.4 = 0.9Data early path (min) = 2Capture clock late path (max) = 0.7 + 0.5 = 1.2Hold = 0.2Data arrival time = 0.9 + 2 = 2.9Data required time =1.2+0.2 = 1.4Slack = Data arrival time - Data required time=2.9 - 1.4 = 1.5
通過上訴的描述,大家對OCV的分析模式有一定了解了吧,OCV其實是一種相對悲觀的分析模式,為了使design和fabrication之間的結果更加接近,現在又誕生了AOCV,SOCV等更高級的分析模式。
時序分析概念是timing derate. 我們可以稱為時序增減因子。我們知道在芯片的生產過程中,由于刻蝕,不同點的溫度,金屬不均勻,串擾,晶體管溝道長度等影響因素,導致片上各個位置單元延遲不一樣。因此,我們需要一個縮放因子來讓設計更加嚴格。
timing derate是計算OCV的一種簡單方法,在某單一條件(BC-WC)下,把指定path的delay放大或者縮小一些,這個比率就是derate。比如說:
-late
setup ==> data path * 1.1
hold==> clock path * 1.1
-early
setup ==> clock path * 0.9
hold==> data path * 0.9
以下圖為例:
在setup check中,
Date arrival time即data path和launch clock path需要使用-late選項,使得路徑變慢。
Date require time即capture clock path需要使用-early選項,加快路徑延遲。
需要注意的是:考慮time derate需要在某個單一條件下,比如說BC或者WC條件下,把指定path的延遲再放大或者縮小一點,要么是BC,要么是WC,不要把BC和WC混在一起,再OCV,那樣太過于悲觀。
setup check一般是工作在WC PVT條件下,因此不需要在late path上,即launch clock path以及data path上再加time derate,因為在WC條件下,launch clock path以及data path上的延遲已經是所有條件下最差的delay了,沒有必要再加大延遲,但是WC條件下capture clock path上的delay肯定不是最小的,因此需要加快。
所以上面的timing path做setup check,time derate只需要這樣設置:
set_timing_derate -early 0.9
set_timing_derate -late 1.0
我們可以計算一下設了timing derate以后setup check的變化:
上圖中:launch clock path =(1.2+0.8)*1.0 = 2.0
max data path = 5.2 * 1.0 =5.2
capture clock path = (1.2 + 0.86) *0.9 = 1.854
所以最小時鐘周期T= 2.0 + 5.2 -1.854 + 0.385= 5.731
可以看到:考慮timing derate以后,會降低整個design的工作頻率。
在Hold check中
考慮time derate的情況與setup正好相反,
Data require time中的capture clock path使用-late選項,使路徑變慢。
Data arrival time中的data path和launch clock path使用-early選項,使路徑加快
實際上,Hold check一般在BC條件下,因此,launch clock path與data path不需要再進一步減小delay,因為已經是最小delay,但是BC條件下的capture clock path需要derate.可以使用如下設置
set_timing_derate -early 1.0
set_timing_derate -late 1.2
這樣添加time derate后
Launch clock path = 0.85 * 1.0 = 0.85
Min data path = 1.7 * 1.0 = 1.7
Capture clock path = 1.0 * 1.2 = 1.2
所以slack=0.85+1.7-1.2-1.25=0.1
介紹的時序分析概念是CPPR(CRPR)。全稱Clock Path Pessimism Removal(Clock Reconvergence Pessimism Removal),中文名“共同路徑悲觀去除”。它的作用是去除clock path上的相同路徑上的悲觀計算量。如下圖所示:
由于STA是窮舉型的分析路徑,在分析setup timing時,clock launch path會選擇紅色的路徑,clock capture path則會選擇綠色的路徑,這本身就是不合理的情況,一個mux不可能同時存在兩條經過的路徑,所以我們需要去除這個計算的悲觀量。
CPPR不僅僅存在于OCV,在以下幾種情況它都可以存在:
Single Mode without set_timing_derate
BC-WC Mode without set_timing_derate
OCV Mode without set_timing_derate
Single Mode with set_timing_derate
BC-WC Mode with set_timing_derate
OCV mode with set_timing_derate
我們再看上一個計算timing derate的例子:
大家肯定發現了對于path最前端那1.2ns的延遲,在setup分析時,launch clock path中沒有被derate, 而在capture clock path中被time derate 1.2*0.9 =1.08. 顯然這是相互矛盾的。
對于上訴設計,考慮CPPR之后,我們必須減去一個CPP因子=1.2-1.08=0.12
所以最小時鐘周期T=5.731-0.12 = 5.611
使用方法:
set_analysis_mode -cppr {none|both|setup|hold}
介紹的時序分析概念是AOCV。全稱Stage Based Advanced OCV。我們知道,在OCV分析過程中,我們會給data path,clock path上設定單一的timing derate值。隨著工藝演變的加速,我們發現這種設置方法是過于悲觀的,大家可以想象下,OCV是片上誤差,就代表一條path上有的cell delay大于標準值,那也有的cell delay會小于標準值。因此不能一味的加大或減小delay來模擬片上誤差。
如下圖所示,對于下面這樣一條buffer鏈,假設8個buffer處于不同的PVT條件下,OCV會將8個buffer都選用最差的條件來分析(同一derate參數),而AOCV則會采用不同的timing derate值來分析。
AOCV有它專門的libary庫,我們稱為AOCV table。按照維度分為兩種,一種是一位的只以stage count作為計算的表格,如下圖所示:
version: 2.0
object_type: lib_cell
object_spec: LIB/BUF1X
rf_type: rise fall
delay_type: cell
derate_type: late
path_type: data
depth: 1 2 3 4 5
distance:
table: \
1.123 1.090 1.075 1.067 1.062
depth就代表著stage count,從表格中我們可以看到隨著;路徑的深入,derate的效應會減小。那我們怎么來計算stage count呢?
通常這個計算方法比較復雜,不同的電路情況對應著不同的count計算方式:如下timing path,我們將L1,L2,DFF1,U1,U2,U3的stage count設成6,而C1,C2,C3,C4的stage count需要設成4,這邊需要說明的是B1,B2由于是common point,所以在計算stage count時需要忽略。
另外一種是以distance和stage count混合組成的二維AOCV table. 它在計算derate時同時考慮了timing path的距離因素,當然這個雖然更加精確,但是會增加runtime,所以一般現在一維表格用的更多。
version: 2.0
object_type: lib_cell
object_spec: LIB/BUF1X
rf_type: rise fall
delay_type: cell
derate_type: late
path_type: data
depth: 1 2 3 4 5
distance: 500 1000 1500 2000
table: \
1.123 1.090 1.075 1.067 1.062 \
1.124 1.091 1.076 1.068 1.063 \
1.125 1.092 1.077 1.070 1.065 \
1.126 1.094 1.079 1.072 1.067
使用方法:
set_analysis_mode-aocv true
-
芯片
+關注
關注
455文章
50817瀏覽量
423678 -
時序分析
+關注
關注
2文章
127瀏覽量
22566
原文標題:時序分析基本概念介紹
文章出處:【微信號:IC_Physical_Design,微信公眾號:數字后端IC芯片設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論