STA之AOCV


為什么要引入AOCV


為了精確性,為了剔除悲觀度。用set_timing_derate來設置OCV,對於一個固定的corner,只能對data/clock, cell/net, late/early分別設不同的值,由下圖可知,這個值是個trade off的結果,在保證yield的前提下,盡量不那么悲觀,但由於其『固定天性』,這個值既不能cover最悲觀的部分,而對另一部分又過於悲觀。

什么是AOCV


AOCV是一種用偽統計(pseudo-statistical )來模擬variation的方法,相對於傳統OCV更精確,它用於模擬random 和systematic variations:

Systematic variation:即Distance based AOCV,用於模擬global variation,根據芯片制造過程的統計特性,距離越遠的cell之間相對的variation越大,所以用distance based AOCV來描述距離跟derate之間的關系,距離越大derate越大,這個距離是指一條timing path所在『物理范圍』內對角線的長度。timing path的位置信息由SPEF提供,這要求抽SPEF時需要將坐標信息抽出,在STA中讀SPEF時要把SPEF的坐標讀入。

 

 Random variation:即Depth based AOCV,用於模擬Local variation,由於random variation相互抵消作用,derate隨着路徑深度的增加而減小。

 

通常AOCV table有一維跟二維兩種,一維table的index是depth,二維table的index是depth跟distance。對於每種類型的cell,foundry會針對rise/fall, late/early, data/clock分別提供一個table。

object_type : lib_cell

rf_type : rise

delay_type : cell

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 ...}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM