为何要引入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 ...}