爲何要引入AOCVdom
爲了精確性,爲了剔除悲觀度。用set_timing_derate來設置OCV,對於一個固定的corner,只能對data/clock, cell/net, late/early分別設不一樣的值,由下圖可知,這個值是個trade off的結果,在保證yield的前提下,儘可能不那麼悲觀,但因爲其『固定天性』,這個值既不能cover最悲觀的部分,而對另外一部分又過於悲觀。ide
什麼是AOCV工具
AOCV是一種用僞統計(pseudo-statistical )來模擬variation的方法,相對於傳統OCV更精確,它用於模擬random 和systematic variations:ui
Systematic variation:即Distance based AOCV,用於模擬global variation,根據芯片製造過程的統計特性,距離越遠的cell之間相對的variation越大,因此用distance based AOCV來描述距離跟derate之間的關係,距離越大derate越大,這個距離是指一條timing path所在『物理範圍』內對角線的長度。timing path的位置信息由SPEF提供,這要求抽SPEF時須要將座標信息抽出,在STA中讀SPEF時要把SPEF的座標讀入。3d
Random variation:即Depth based AOCV,用於模擬Local variation,因爲random variation相互抵消做用,derate隨着路徑深度的增長而減少。orm
一般AOCV table有一維跟二維兩種,一維table的index是depth,二維table的index是depth跟distance。對於每種類型的cell,foundry會針對rise/fall, late/early, data/clock分別提供一個table。blog
object_type : lib_cellip
rf_type : riseio
delay_type : celltable
derate_type : late
path_type : data
object_spec : 10nmlib/BUF_X4
depth : 1 2 3 4 5
table: 1.183 1.145 1.122 1.109 1.0901
object_type : lib_cell
rf_type : rise
delay_type : cell
derate_type : early
path_type : data
object_spec : 10nmlib/BUF_X4
depth : 1 2 3 4 5
distance: 0 500 1000 1500
table: 1.123 1.090 1.075 1.067 1.062
1.124 1.0911.076 1.068 1.063
1.125 1.0921.077 1.070 1.065
1.126 1.0941.079 1.072 1.067
如何使用AOCV作STA分析
BA AOCV:
對於一個cell,其Depth取其所在全部timing path上的最小值;
不考慮distance based OCV,即不計算distance的值;
若是AOCV table是二維的,STA工具一般會選最後一行作GBA分析,以保證distance值最悲觀。
PBA AOCV:
在GBA的基礎上,針對用戶指定的一組path從新計算timing,並從新計算該組path上每一個cell的Depth;
對於一個cell,其Depth對不一樣的path分別計算,分別取該cell所在path上的精確值;
若是提供了distance basbed AOCV table,會根據SPEF中的座標信息,計算對應path所在區域的對角線長度,即derate值從二維表格中獲得。
PBA計算獲得的值更精確,但須要特別特別特別長的runtime。
Tool:由於方法學上一致,在工具端,除了變量/命令命名方式不一樣,剝去這層外衣,裏面都是同樣雪白的肉體。此處仍以Tempus爲例,來介紹工具端使用模型(use model)。
使能AOCV 分析:
setAnalysisMode –aocv true –analysisType onChipVariation
讀入AOCV table:
Single corner: read_lib -aocv my.aocv
MMMC: create_library_set -name mylib -timing my.lib -aocv my.aocv
AOCV相關變量設置:
列幾個經常使用變量,至於每一個變量用於什麼用途,請自行查guide。這裏須要特別說明的一點是:若是既讀入了AOCV table又用set_timing_derate設了OCV,不一樣工具的行爲有所差異,都有相應的變量控制。對於Tempus工具在計算最後的derate時會根據如下標紅變量的不一樣設置,作不一樣計算。
timing_aocv_analysis_mode
timing_aocv_derate_mode
timing_derate_aocv_reference_point
timing_derate_ocv_reference_point
timing_derate_aocv_dynamic_delays
AOCV report:
report_aocv_derate
report_timing -retime aocv/aocv_path_slew_propagation
report_timing -format { ... stage_count aocv_derateuser_derate ...}