文章目录
- AOCV(Advanced OCV)&SBOCV(Stage Based OCV)---更精确,剔除悲观度
- Random variation(Depth/Stage based AOCV)
- Systematic variation(Distance based AOCV)
- 一维AOCV table
- 二维AOCV table
- Table Group tag
- Table Voltage
- Table ID tag
- [Early | Late]
- [Rise | Fall]
- [Clock | Data]
- Object ID
- GBA/PBA AOCV
- GBA(Graph-Based Mode) AOCV
- Simple graph-based Example:
- AOCV-Graph Based - Effective Stage Counting
- AOCV Derating Table
- Example of a derating table with 4 Distance indices and 5 Stage indices:
- Examples of Cadence AOCV Derating Library
- 2-D derating table
- Configuring AOCV Analysis
- Min/Max Configuration
- MMMC Configuration(viewdefination.tcl)
AOCV(Advanced OCV)&SBOCV(Stage Based OCV)—更精确,剔除悲观度
BCWC:即为best case corner和worst case corner,分别代表两种不同的PVT环境。BC时,timing-arc的时间最短,WC时,timing-arc的时间最长。OCV模式,AOCV模式,POCV模式,LVF模式均是在不同PVT(不同corner)的基础上添加derate。
OCV使用set_timing_derate
来设置,只能对path type:data/clock
, delay type:cell/net
, derate type:late/early
分别设不同的值(过度悲观了,delay随机分布符合高斯分布曲线,normal delay cell多,decrease delay cell和increase delay cell数量少)。
set_timing_derate # Specify constant delay derating factor
-early (Specify early derate factor)
-late (Specify late derate factor)
[-rise] (Specify rise derate factor)
[-fall] (Specify fall derate factor)
[-data] (Specify derate factor for data paths only)
[-clock] (Specify derate factor is for clock paths only)
[-cell_delay] (Specify derate factor for cell delays only)
[-cell_check] (Specify derate factor for cell timing checks only)
[-net_delay] (Specify derate factor for net delays only)
[-static] (Specify derate factor for non-delta delays only)
[-dynamic] (Specify derate factor for delta delays only)
[-scalar] (Specify derate factor for deterministic delays only)
[-aocvm_guardband] (Specify an AOCVM guardband derate factor)
[-pocvm_guardband] (Specify a POCVM guardband derate factor)
[-pocvm_subtract_sigma_factor_from_nominal]
(Specify a POCVM sigma factor used to subtract sigma from nominal)
[-pocvm_coefficient_scale_factor]
(Specify a POCVM coefficient scale factor)
[-increment] (Specify an incremental derate factor)
derate_value (Derate factor)
[object_list] (List of cells, library cells or nets)
由于随机性,不可能一条path上的所有cell都同时悲观,它们之间的**random variation(stage base OCV)**是可以相互抵消的。用单一的derate来模拟OCV是太过悲观的,而且随着工艺进步设计频率提高,这种悲观度已无法承受。于是在65nm引入AOCV的概念,40nm开始在timing sign-off中采用,28nm开始大量使用。
AOCV是一种用伪统计(pseudo-statistical )来模拟variation的方法,相对于传统OCV更精确,它用于模拟random 和systematic variations:
Random variation(Depth/Stage based AOCV)
- Models reduced random variation effects of paths with increasing gate stages
- Depth based AOCV,用于模拟Local variation,由于random variation相互抵消作用,derate随着路径深度的增加变得不那么悲观(接近derate factor = 1)
- 从CPPR common point 开始算起
Systematic variation(Distance based AOCV)
-
Models increased systematic variation over longer paths
-
根据芯片制造过程的统计特性,距离越远的cell之间相对的variation越大,所以用distance based AOCV来描述距离跟derate之间的关系,距离越大derate越悲观,这个距离是指一条timing path所在物理范围内对角线的长度。
-
timing path的位置信息由SPEF提供,这要求抽SPEF时需要将坐标信息抽出,在STA中读SPEF时要把SPEF的坐标读入。
一维AOCV table
- 一维table的index是depth/stage
- It is possible to have a 1-D distance based derating table, but the AOCV flow requires at least a 1-D stage based 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
每个cell查表对应AOCV derate
二维AOCV table
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
- 虽然更加精确,但是会增加runtime
- 二维table的index是depth跟distance,对于每种类型的cell,foundry会针对
rf_type:rise/fall
,derate_type:late/early
,path type:data/clock
分别提供一个table
Table Group tag
The Apply- tag can be used with either a Net or Cell descriptor to designate the table for use in derating only net delays or cell delays respectively. If the Apply- tag is not specified, then the table will be used for both net and cell delay derating.
- To designate a table for net-based derating only, you should specify:
Apply-Net
- To designate a table for cell-based derating only - use:
Apply-Cell
Table Voltage
Table Voltage specifies what voltage the current table is characterized for. You may specify multiple tables for each voltage of interest, or allow the timer to interpolate between tables for intermediate voltages
- To specify a voltage of 1.5Volts for the derating table, use a specification of:
- Voltage 1.5
Table ID tag
The Table ID is a tag made up of up to three sub-tags, which can be used to add further specificity to the derating table to control early vs. late, rise vs. fall, and clock path vs. data path.
[Early | Late]
Each table is minimally required to have either an Early or Late tag. It is further required that each object subject to AOCV derating have both an Early and a Late derating table. AOCV derating of only Early or only Late paths is not allowed. It is, however, legal to using derating values of 1.0 for the tables if that effect is desired.
[Rise | Fall]
By default, an Early or Late derating table is used to supply derating for both rising and falling delays. If unique derating for each transition is desired, the -Rise or -Fall tag can be added to the Table ID to tighten the specification.
-
To configure a table for only rising delays on early paths, you should use:
- Early-Rise
-
To configure a table for falling delays on late timing paths - specify:
- Late-Fall
[Clock | Data]
Derating tables can also be configured so that they are specific to clock path delays or data path delays. This can be achieved by adding a final -Clock or -Data tag to the Table ID string.
The complete set of possible Table IDs is:
- derate type 必须设置 (optial–rf_type、path type)
In the case where there is an overlap in the table specification, the derating table with the tightest specification is used.
Object ID
You can further control the application of the AOCV derating tables to specific timing libraries or library cell groups.
- To specify a derating table to be used for a specific library:
- Cell stdcell/*
- To specify derating for a specfic library cell:
- Cell stdcell/BUF1S
- To specify a common derate table for a group of cells with similar drive strength:
- Cell stdcell/*1S
- Cell stdcell/*4S
- To specify a common derate factor for a group of libraries at the same corner:
- Cell * -P1V15T120/*
GBA/PBA AOCV
区别于OCV,AOCV的derate值是基于depth和distance的,所以首先需要得到depth和distance。这就要涉及到另一组概念,GBA跟PBA,限于runtime当今STA都起始于GBA(过于悲观)
分析,在GBA结果的基础上用PBA(准确但耗时)
进一步过滤violation path
GBA(Graph-Based Mode) AOCV
- 对于一个cell,其Depth取其所在所有timing path上的最小值(stage越小越悲观) (pessimistic)
- 对于一维AOCV table,不考虑distance based OCV,即不计算distance的值 (pessimistic)
- 对于二维AOCV table,STA工具通常会选最后一行做GBA分析,以保证distance值最悲观(distance越大,cell距离远,就越悲观)
Simple graph-based Example:
-
Data path from RS to RT2 has 5 stages
- – U2, U3, U4 use a data stage count of 5
-
RS and U1 are also on shorter path to RT1
- – RS, U1, U5 use a data stage count of 3
-
RS和U1存在两条timing path,stage分别是3和5,由于是GBA,trade off 后选择最悲观的stage=3
- 如下timing path,我们将L1,L2,DFF1,U1,U2,U3的stage count设成6,而C1,C2,C3,C4的stage count需要设成4,这边需要说明的是B1,B2由于是common point,所以在计算stage count时需要忽略(OCV时有CPPR)。
AOCV-Graph Based - Effective Stage Counting
Clock path stage counts are with respect to the CPPR common point and the last clock branch points before the registers
- 选择所在timing path上stage最少的path(pessimistic),作为cell的stage path
AOCV Derating Table
The AOCV format allows a derating table specification that is 1 or 2-dimensional - the possible axes being Distance - the bounding box diagonal of that path, and Stage -the stage count depth of the path. Although AOCV graph-based (AOCV-GB) only supports stage-based derating, you may specify either a 1-D stage-based table, or a 2-D Stage x Distance table.
Example of a derating table with 4 Distance indices and 5 Stage indices:
- Distance: List of distance (real) values specified in microns, increasing in magnitude (一条timing path所处物理范围内的对角线距离)
- Stage: List of integer values representing stage depth, increasing in magnitude
- 超出index范围怎么处理?
- In the case where the stage or distance lookup value is outside of the range of the table -either smaller or larger, the system will use the last bound entry point.
Examples of Cadence AOCV Derating Library
This example shows a table that will be used for derating cell delay arcs for devices used on the clock path for early delays. All cells matching *D1 in the stdcellwcl library will utilize this table data. For an early derating table such as this, you can see that the derating factors are monotonically increasing toward 1.0 as the depth of the path increases
- 对于early derate,cell path stage 越大去除的悲观越多,越接近derate factor=1
2-D derating table
This example shows a 2-D derating table that will be applied to both nets and cells for all early data paths - i.e for the data path of Hold type timing checks:
- cell path stage 越大,derate factor 去除的悲观多,接近于1
- 对于early derate,stage 越大,derate factor 越大
- 对于late derate,stage 越大,derate factor 越小
- distance 越大,derate factor越悲观
- 对于early derate,distance 越大,derate factor 越小
- 对于late derate,distance 越大,derate factor 越大
Configuring AOCV Analysis
setAnalysisMode –aocv true –analysisType onChipVariation
Min/Max Configuration
Min/Max is the default, two-corner, single-mode operation of both EDI and ETS.
Encounter Digital Implementation (EDI) System
Encounter Timing System (ETS)
MMMC Configuration(viewdefination.tcl)
In an MMMC environment, AOCV libraries are specified in the same manner as Liberty timing libraries - by configuring them in the MMMC library_set object using either the create_library_set
or update_library_set
commands. These will later be incorporated(合并) as part of an MMMC delay corner.
AOCV libraries should only contain data applicable for one delay corner. The same AOCV library may be applied to multiple library sets if desired:
create_library_set -name libsSlow -timing slow.lib -aocv test.aocv
create_library_set -name libsFast -timing fast.lib -aocv test.aocv