文章目录
- 1. O v e r v i e w Overview Overview
- 2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction
- 3. U s a g e o f A O C V Usage\ of\ AOCV Usage of AOCV
- 4. A t t e n t i o n s Attentions Attentions
前面一个介绍详细了
O
C
V
OCV
OCV的使用原因以及使用方法,参考
S
i
g
n
O
f
f
C
r
i
t
e
r
i
a
——
O
C
V
a
p
p
l
i
e
d
a
n
d
r
e
s
u
l
t
s
SignOff\ Criteria——OCV\ applied\ and\ results
SignOff Criteria——OCV applied and results。
O
C
V
OCV
OCV一般是针对工艺节点在
90
n
m
90nm
90nm以上的芯片制造,到了
90
n
m
90nm
90nm以下,
45
n
m
/
22
n
m
45nm/22nm
45nm/22nm等等,如果还用这种
O
C
V
OCV
OCV的方法,直接在
d
a
t
a
p
a
t
h
data\ path
data path和
c
l
o
c
k
p
a
t
h
clock\ path
clock path上增加统一的
d
e
r
a
t
e
derate
derate值,可能会增加
s
i
g
n
o
f
f
signoff
signoff的悲观程度,并导致过度设计、降低设计性能和更长的设计周期。因此为了降低我们
s
i
g
n
o
f
f
signoff
signoff时候
O
C
V
OCV
OCV带来的悲观度,引入了更先进的
O
C
V
OCV
OCV分析方法:
A
O
C
V
/
P
O
C
V
AOCV/POCV
AOCV/POCV。其实
A
O
C
V
/
P
O
C
V
AOCV/POCV
AOCV/POCV的引入,无非是在
O
C
V
OCV
OCV的基础上,降低我们
S
T
A
STA
STA的悲观度,从而减少
E
C
O
ECO
ECO的工作量。
1. O v e r v i e w Overview Overview
A O C V ( a d v a n c e o c v ) AOCV (advance\ ocv) AOCV(advance ocv)通过使用考虑位置和被分析的每条路径的逻辑深度的可变降额因素,对影响时序的 I C IC IC上的随机和系统变化进行建模。通过使用 l o c a l d e r a t e local\ derate local derate值而不是 g l o b a l d e r a t e global\ derate global derate值,也就是 d a t a p a t h data\ path data path和 c l o c k p a t h clock\ path clock path不再是统一的一个 d e r a t e derate derate,而是各个不同。通过这种方法降低悲观减少过多的设计余量并减少时序违规。
P O C V ( p a r a m e t r i c o c v ) POCV(parametric\ ocv) POCV(parametric ocv)的出现是因为 A O C V AOCV AOCV的方法,根据逻辑深度进行设置依然是一种简单的方法,依然可能造成过于悲观。 P O C V POCV POCV是基于每一个 c e l l cell cell进行单独的高斯分布的建模处理, c e l l cell cell的 d e r a t e derate derate不再受逻辑深度的影响。
如下图为不同的 O C V OCV OCV技术对应的 S T A STA STA的悲观程度:
2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction
A
d
v
a
n
c
e
d
O
n
C
h
i
p
V
a
r
i
a
t
i
o
n
Advanced\ On\ Chip\ Variation
Advanced On Chip Variation,相比较于
O
C
V
OCV
OCV来说,对于悲观度的去除很有效。相较于
O
C
V
OCV
OCV对于整个
d
e
s
i
g
n
design
design中的
l
a
u
n
c
h
/
c
a
p
t
u
r
e
p
a
t
h
launch/capture\ path
launch/capture path设置统一的
d
e
r
a
t
e
derate
derate值,
A
O
C
V
AOCV
AOCV通过将
c
e
l
l
d
e
r
a
t
e
cell\ derate
cell derate值与
c
e
l
l
cell
cell的逻辑深度以及实际的位置结合起来进行
d
e
r
a
t
e
derate
derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的
a
o
c
v
l
i
b
f
i
l
e
aocv\ lib\ file
aocv lib file,里面有专门对相关的
c
e
l
l
cell
cell进行的
a
o
c
v
d
e
r
a
t
e
aocv\ derate
aocv derate值的描述。举例如下所示为
3.0
3.0
3.0版本的一个INV
的
A
O
C
V
AOCV
AOCV描述:
> version: 3.0
> group_name: core_tables
> object_type: lib_cell
> object_spec: LIB/INVX1
> rf_type: rise fall
> derate_type: late
> path_type data clocck
> depth: 1 2 3 4 5
> distance: 500 1000
> table: \
> 1.123 1.119 1.080 1.060 1.054 \
> 1.125 1.121 1.082 1.062 1.056
该部分是一个二维表格的描述,如果只有一维表格描述,一般就只有 l o g i c a l d e p t h logical\ depth logical depth相关的内容,没有 d i s t a n c e distance distance相关内容。那我们知道了相关的 d e r a t e derate derate值如何查找表得到,可是这个查找表的输入两个值: l o g i c a l d e p t h logical\ depth logical depth和 d i s t a n c e distance distance又是从何而来呢?接下来介绍的两种技术: G B A m o d e GBA\ mode GBA mode和 P B A m o d e PBA\ mode PBA mode,其中两种 m o d e mode mode对应的悲观度不同,对应的 l o g i c a l d e p t h logical\ depth logical depth和 d i s t a n c e distance distance值不同,相应的结果也不同。
2.1 G B A − A O C V GBA-AOCV GBA−AOCV
2.1.1 A b o u t L o g i c a l D e p t h About\ Logical\ Depth About Logical Depth
基于
G
B
A
m
o
d
e
GBA\ mode
GBA mode的
A
O
C
V
AOCV
AOCV技术,关于
l
o
g
i
c
a
d
e
p
t
h
logica depth
logicadepth的获取,如下图所示,拿buf0
为例来讲,用
G
B
A
GBA
GBA的方式获取buf0
相关的
p
a
t
h
path
path ,那么他的
l
o
g
i
c
a
l
d
e
p
t
h
logical\ depth
logical depth值就会有多个:
- 比如作为
d
a
t
a
p
a
t
h
data\ path
data path时候,
buf0
到FF1
有三个 c e l l cell cell,因此 l o g i c a l d e p t h logical\ depth logical depth为 3 3 3; - 作为
l
a
u
n
c
h
p
a
t
h
launch\ path
launch path时候,
buf0
到FF2/D
有两种可能5/6,取较小者 5 5 5; - 作为
c
a
p
t
u
r
e
p
a
t
h
capture\ path
capture path时候,
buf0
到FF2/CP
有 4 4 4个 c e l l cell cell,因此 l o g i c a l d e p t h logical\ depth logical depth为 4 4 4,而buf0
在报FF1
到FF2
的这条 p a t h path path时候会取 3 3 3。因为会取 G B A m o d e GBA\ mode GBA mode下抓取的所有的 l o g i c a l d e p t h logical\ depth logical depth中的最小值。因为在上面的 l i b lib lib里面可以看到, l o g i c a l d e p t h logical\ depth logical depth越小,相应的 d e r a t e derate derate值也越大。所以说 G B A GBA GBA会取最悲观的数据进行 d e r a t e derate derate设置。
2.1.2 A b o u t d i s t a n c e About\ distance About distance
无论是基于 c e l l cell cell计算 d i s t a n c e distance distance还是基于 n e t net net计算 d i s t a n c e distance distance, G B A m o d e GBAmode GBAmode下,总会选取整个 G B A m o d e GBAmode GBAmode组里面最大的那个 d i s t a n c e distance distance值作为我们 G B A c h e c k GBA\ check GBA check时候的 d e r a t e derate derate值的设置依据,因为在二维查找表总可以看出来的, d i s t a n c e distance distance越大,对应的 d e r a t e derate derate也是越大的,距离越远意味着我们工艺制造过程中的差距可能越大。
2.2 P B A − A O C V PBA-AOCV PBA−AOCV
P B A m o d e PBA\ mode PBA mode其实是在 G B A GBA GBA抓取的 p a t h g r o u p path\ group path group组里面进行更加细致的分析,不像 G B A GBA GBA那么的悲观,但是相对来说所需 r u n t i m e run\ time run time就要更长了。
2.2.1 b u i l d L o g i c a l D e p t h build\ Logical\ Depth build Logical Depth
关于
P
B
A
m
o
d
e
PBA mode
PBAmode下的
p
a
t
h
path
path获取,如下图所示,首先会去除一个
c
o
m
m
o
n
p
o
i
n
t
common\ point
common point,因为相同的
c
o
m
m
o
n
common
common点,也就是同一个
c
e
l
l
cell
cell,在实际的特定的工作条件下的相关属性是一定的,不可能由于被分为
l
a
u
n
c
h
launch
launch或者
c
a
p
t
u
r
e
capture
capture而改变,因此在
S
T
A
p
a
t
h
STA\ path
STA path中会增加
c
r
p
r
crpr
crpr的技术取消除
c
o
m
m
o
n
p
o
i
n
t
common\ point
common point的悲观性。言归正传,
P
B
A
PBA
PBA的就是非常具体的
p
a
t
h
path
path的分析了,如下图所示,为FF1
到FF2
的
t
i
m
i
n
g
p
a
t
h
timing\ path
timing path,针对这条
p
a
t
h
path
path,buf0
作为
c
o
m
m
o
n
p
o
i
n
t
common\ point
common point点不用关注,而穿过FF1
的
p
a
t
h
path
path就只能被认为是
l
a
u
n
c
h
p
a
t
h
launch\ path
launch path,
d
e
p
t
h
depth
depth
5
5
5/
6
6
6不同对应不同的
t
i
m
i
n
g
timing
timing报告。而
c
a
p
t
u
r
e
p
a
t
h
capture\ path
capture path在经过约束的分析之后也只能作为
c
a
p
t
u
r
e
p
a
t
h
capture\ path
capture path,因为它到FF2/ck
端口,不可能是
d
a
t
a
p
a
t
h
data\ path
data path,因此
c
a
p
t
u
r
e
p
a
t
h
capture\ path
capture path的
d
e
p
t
h
depth
depth为
3
3
3。可以看到
P
B
A
PBA
PBA和
G
B
A
GBA
GBA的区别,
P
B
A
PBA
PBA具体到每一条真实的
p
a
t
h
path
path,不会把一个
g
r
o
u
p
group
group的
p
a
t
h
path
path放在一起分析,而
G
B
A
GBA
GBA是把一个
g
r
o
u
p
group
group的
p
a
t
h
path
path里面最差的情况用到了所有的
p
a
t
h
path
path中。因此
P
B
A
PBA
PBA降低了悲观度。
2.2.1 G e t d i s t a n c e Get\ distance Get distance
关于 d i s t a n c e distance distance, P B A PBA PBA和 G B A GBA GBA也是不同的,这个不同之处和 d e p t h depth depth的获取有类似的情况。如下图所示, P B A PBA PBA针对的是一条具体的 p a t h path path,那么它的 d i s t a n c e distance distance就是唯一的,每一个 c e l l cell cell的 d i s t a n c e distance distance也就是唯一的,而不像 G B A GBA GBA中的选取这个 g r o u p group group组中的最大的 d i s t a n c e distance distance值去进行计算,因此来说 P B A PBA PBA是降低了悲观度的。
3. U s a g e o f A O C V Usage\ of\ AOCV Usage of AOCV
S T A STA STA阶段如何使用 A O C V AOCV AOCV,其实就是正常的需要的内容读入,参考Timing Check – Timing signoff env之后,设置 a o c v a n a l y s i s aocv\ analysis aocv analysis的 e n a b l e enable enable然后 s p e c i f y a o c v specify\ aocv specify aocv相关信息即可。
> set_app_var timing_aocvm_enable_analysis true
设置了这个命令之后,在 u p d a t e t i m i n g update\ timing update timing步骤,会自动进行 G B A a o c v GBA\ aocv GBA aocv的 t i m i n g u p d a t e timing\ update timing update。
> read_aocvm xxx.aocvm
这个就是 l i b lib lib相关的读入了,只有读入了才会有相关的二维查找表。
这两个就是主要的 A O C V AOCV AOCV读入的必不可少的内容。当我们搞完之后如何查看我们的 A O C V AOCV AOCV的设置呢?可以通过:
> report_aocvm 会打印出被aocvm annotated的cell的数量
> report_aocvm [get_timing_path -from FF1/CP -to FF2/D] -path_type full_clock -pba_mode path 会把相关的path的distance/launch depth/capture depth搞出来
> reportt_aocvm [get_timing_arc -from buf0/I to buf0/Z] 会把buf0相关的详细的aocvm信息打印出来
4. A t t e n t i o n s Attentions Attentions
- a o c v f i l e aocv\ file aocv file支持一维和二维查找表;
- 有很多相关的变量设置针对我们在实际计算时候如何考虑 d a t a / c l o c k d e p t h data /clock\ depth data/clock depth的内容,或者针对 c l o c k / d a t a clock/data clock/data设置 d e r a t e derate derate内容等等还是很复杂的不展开讨论,可自行研究;
- g u a r d − b a n d i n g guard-banding guard−banding是人为设定的和工艺无关的和 a o c v aocv aocv有关的影响因子,比如和 I R d r o p IR\ drop IR drop专门设定 m a r g i n margin margin等等。在设定了 g u a r d b a n d guardband guardband的影响因子之后,对于一条 a r c arc arc上的总的影响就是 F a o c v ∗ F g u a r d b a n d Faocv*Fguardband Faocv∗Fguardband。 g u a r d b a n d guardband guardband只对 a o c v aocv aocv的内容有影响,之外毫无影响;
set_timing_derate -aocvm_guardband -early 0.95
set_timing_derate -aocvm_guardband -late 1.05
-
o
c
v
ocv
ocv和
a
o
c
v
aocv
aocv之间的优先级是有一些规定的,感兴趣的可以自己研究。可以通过控制某些变量让
o
c
v
ocv
ocv的设置或者
a
o
c
v
aocv
aocv的设置无效。如果
o
c
v
ocv
ocv和
a
o
c
v
aocv
aocv都想用到,那么可以通过在命令中增加
-increment
命令,使得 d e r a t e derate derate可以叠加。比如本来 a o c v aocv aocv和 g u a r d b a n d guard band guardband计算之后buf0
的late derate
为 1.05 1.05 1.05,early
为 0.95 0.95 0.95,那么加上如下命令,最终late
为 1.08 1.08 1.08,early
为 0.92 0.92 0.92;
set_timing_aocvm_enable_analysis true 设置了aocv
set_timing_derate -increment -late 0.03 [get_cells buf0]
set_timing_derate -increment -early -0.03 [get_cells buf0]