
random variation (depth based AOCV: local variation):
random variation由于其随机性,所以可以相互抵消,derate值随着cell path深度的增加而减小,对某一条path来说,cell path级数越多,其分布越接近于正态分布,整条path的 random variation相互抵消的越多,总体variation越小。
Systematic variation (distance based AOCV: global variation):
在芯片制造的过程中,cell之间的距离越近,cell的特性越相似,variation越小,derate值越小;cell之间的距离越远,cell的特性偏差越大,variation越大,derate值越大。
Path Depth: 分别计算latch path和capture path的逻辑级数,需要注意的是,如果一个cell通过两条或者两条以上的path,则该cell取级数小的derate值。path depth对random variation进行建模。


why AOCV?
Flat OCV的derate设置对setup timing过于悲观,而对hold timing又过于乐观。
一般情况下,随着path depth增加, random variation会逐渐减小,这是因为random variation随着cell增加,不太可能所有的cell都偏向early或者late,即cell delay会相互抵消一部分。
Flat OCV一般适用于90nm以上的工艺,但在90nm一下工艺或者高频设计中,需要剔除掉部分悲观derate值,防止overdesign发生。
AOCV在65nm工艺中引入,可以很好的模拟variation。
AOCV Table
一般有两种AOCV derate table: 一种是一维table,index为depth;一种是二维table,index为depath和distance。
每一种cell一般都会有rise/fall/late/early/data/clock六种table。
derate value increase with distance, derate value decrease with path depth。



如何计算cell depth和distance?
cell depth的计算:对某一个cell来说,其depth取所在所有timing path的最小值,这是因为需要考虑derate最差的情况,depth越小,derate值越差。
例如:如下图所示,对于C1来说,有两条timing path,一条为C1->C2->C5->RL1共4级,另一条为C1->C2->C3->C4->C44->RS共6级,所以C1的级数为4。
PBA AOCV:重新计算timing path上的每个cell的depth,对同一cell的不同timing path使用不同的derate值,这会得到更精确的derate值,但会显著增加run time。



distance的计算:通过cell或者net的box来计算distance。
cell max distance (Cell Dmax): timing path内所有cell的inner box的对角线距离。
net max distance (Net Dmax):timing path内所有net的outer box的对角线距离。

AOVC Timing Analysis

EDA Setting
setAnalysisMode -aocv true -analysisType onChipVariation
set_global timing_aocv_analysis_mode separate_data_clock*
set_global timing_enable_aocv_slack_based true
set_global timing_aocv_slack_threshold 0.0
create_library_set -name mylib -timing design.lib -aocv design.aocvm
report_aocv_derate
report_timing -retime aocv/aocv_path_slew_propagation
report_timing -format {... stage_count aocv_derate user_derate}
set timing_aocvm_enable_analysis true
set timing_aocvm_analysis_mode separate_data_and_clock_metrics*
read_aocvm <sbocv_file>
set_fast_pba_analysis_options -num_endpoints 1000
apply_fast_pba_analysis
set timing_aocvm_enable_analysis #enable AOCV analysis
set timing_aocvm_analysis_mode combined_launch_capture_depth #stage counting mode
set timing_aocvm_analysis_mode separate_data_clock_metrics #stage counting mode (all under-drive corners)
report_timing -pba_mode path #PBA timing report
set delay_calc_waveform_analysis_mode true #enable waveform propagation
set_analysis_mode -aocv -analysisType onChipVariation -cppr both #enable AOCV analysis
set_global timing_aocvm_analysis_mode combined_launch_capture #stage counting mode
set_global timing_aocvm_analysis_mode separate_data_clock #stage counting mode (all under-drive corners)
report_timing -retime aocv_path_slew_propagation #PBA timing report
set_delay_cal_mode -equivalent_waveform_model_type ecsm -equivalent_waveform_model_propagation true #enable waveform propagation
参考文献
1,Fusion Compiler/ IC Compiler 2 user guide