文章目录
1. O v e r v i e w Overview Overview
P r o c e s s v a r i a t i o n Process\ variation Process variation可简单分为 d i e − t o − d i e die-to-die die−to−die和 o n c h i p v a r i a t i o n ( o c v ) on\ chip\ variation(ocv) on chip variation(ocv), d i e − t o − d i e die-to-die die−to−die的可以通过 s i g n o f f signoff signoff过程中不同的 c h e c k v i e w check\ view check view去 c o v e r cover cover, o n c h i p v a r i a t i o n on\ chip\ variation on chip variation需要通过 s i g n o f f signoff signoff过程中设置不同的 d e r a t e derate derate值去模拟悲观化相关 c e l l cell cell。
- O C V OCV OCV:通过在 t i m i n g p a t h timing\ path timing path上设置统一的 e a r l y / l a t e d e r a t e early/late\ derate early/late derate做 h o l d hold hold和 s e t u p setup setup的 c h e c k check check,这样的设置方式很简单,但同时很粗暴( g b a gba gba的),会导致大部分 c e l l cell cell的 d e l a y delay delay过于悲观,而小部分的可能又过于乐观;
- A O C V AOCV AOCV:不再是在 p a t h path path上设置统一的值,而是通过 p a t h d e p t h path\ depth path depth获取随机 v a r i a t i o n variation variation, d i s t a n c e distance distance获取 o n − d i e v a r i a t i o n on-die\ variation on−die variation的方式进行设置。这种设置相对于 o c v ocv ocv更加精确。但是对于 g b a m o d e gba\ mode gba mode来说, p a t h d e p t h path\ depth path depth造成的variation的获取还是过于悲观,用 p b a pba pba又会耗费大量的 r u n t i m e run\ time run time。且 v a r i a t i o n variation variation的获取不受 t r a n s trans trans和 l o a d load load的影响。
- P O C V POCV POCV:随着随机 v a r i a t i o n variation variation相对于 c h i p v a r i a t i o n chip\ variation chip variation的占比增大, p o c v pocv pocv的出现,能够更好的 m e e t meet meet实际的工艺需求。相对于 a o c v aocv aocv ,大大减小的 p b a pba pba和 g b a gba gba之间的悲观性的差距。能大大减小 e c o eco eco的 e f f o r t effort effort。 p o c v pocv pocv对于 c e l l cell cell的 v a r i a t i o n variation variation不再是 p a t h d e p t h path\ depth path depth相关的,而是基于统计学搞出来的。每一个 c e l l cell cell,都会通过仿真得到相关的高斯分布,那么每一个 c e l l cell cell都会拥有相应的 m e a n mean mean值和 s i g m a sigma sigma值,在 u p d a t e t i m i n g update\ timing update timing时候,不再是统计 d e p t h depth depth计算,大大节省时间。另外 P O C V POCV POCV也支持 a o c v aocv aocv中关于 c h i p v a r i a t i o n chip\ variation chip variation的模型,可以通过 d i s t a n c e distance distance来进行 d e r a t e derate derate设定。
2. P O C V A n a l y s i s POCV\ Analysis POCV Analysis
P
O
C
V
POCV
POCV关于
c
e
l
l
cell
cell的
r
a
n
d
o
m
v
a
r
i
a
t
i
o
n
random\ variation
random variation到底怎么搞到的?这边简单叙述一下:
如下图上部分,一个
c
e
l
l
cell
cell最大最小值可能限定在一个范围内,那芯片工艺制造之后,它的
c
e
l
l
d
e
l
a
y
cell\ delay
cell delay落到最大最小值内的概率为
1
1
1。那通过一系列的
S
P
I
C
E
SPICE
SPICE仿真,发现
c
e
l
l
cell
cell的
d
e
l
a
y
delay
delay的概率分布非常靠近一个高斯分布,如下图下部分所示,这是一个概率密度分布函数。
对于高斯分布,当我们的 d e l a y delay delay取值为 u + 3 σ u+3σ u+3σ时候对应的概率值为 0.9973 0.9973 0.9973,因此我们对于 c e l l d e l a y cell\ delay cell delay分布类似于高斯分布的 v a r i a t i o n variation variation,一般都设置 3 σ 3σ 3σ的方式进行 c o v e r cover cover。这也是我们 P O C V POCV POCV的 c e l l d e l a y cell\ delay cell delay计算方式:
c e l l d e l a y = d e l a y m e a n + 3 ∗ σ cell\ delay=delay\ mean + 3 * \sigma cell delay=delay mean+3∗σ
其中 d e l a y m e a n delay\ mean delay mean其为 d e l a y delay delay的均值,由 l i b lib lib中的 t r a n s / l o a d trans/load trans/load决定。
σ σ σ的来源有两种方式:
- 设置 s i n g l e c o e f f i c i e n t single\ coefficient single coefficient, σ = d e l a y m e a n ∗ s i n g l e c o e f f i c i e n t σ=delay\ mean * single\ coefficient σ=delay mean∗single coefficient:
|
|
- 吃相关的 L V F LVF LVF文件,里面也是类似于查找表的形式, σ σ σ取决于 t r a n s trans trans和 l o a d load load:
3. P O C V F l o w POCV\ Flow POCV Flow
P O C V POCV POCV的 f l o w flow flow包含以下主要步骤:
- 读入 s t d std std库,读入 p r pr pr后的 n e t l i s t netlist netlist,读入相关的约束文件;
- 读入 p o c v s i d e f i l e pocv\ side\ file pocv side file(如果是用的 l v f lvf lvf格式的 l i b lib lib,那么就不需要这个了);
- 读入 s p e f spef spef,如果需要设定 d i s t a n c e − b a s e d distance-based distance−based的 d e r a t e derate derate那么需要带上坐标信息从而方便计算距离;
- 数据读入后打开 p o c v pocv pocv的分析然后 u p d a t e t i m i n g update\ timing update timing就可以查看相关的报告了。
set_app_var timing_pocvm_enable_analysis true
set_app_var timing_pocvm_corner_sigma 3
read_ocvm pocv_coefficient_file_name
read_ocvm pocv_distance_based_derating_file_name
G u a r d − b a n d i n g i n P O C V Guard-banding\ in\ POCV Guard−banding in POCV
G u a r d − b a n d i n g Guard-banding Guard−banding这个说白了也是一个类似于 d e r a t e derate derate值的东西,但是它和 p r o c e s s process process是无关的。比如我们针对超低电压,或者考虑了 I R d r o p IR\ drop IR drop等问题,想而外在已经存在的 d e r a t e derate derate基础上在设置一些悲观度,就可以用这个。
set_timing_derate –cell_delay -pocvm_guardband -early 0.95
set_timing_derate –cell_delay -pocvm_guardband -late 1.05
其对应的计算在如下图所示,这个变量在 m e a n mean mean值和 s i g m a sigma sigma值中都会用到:
4. P O C V R e p o r t POCV\ Report POCV Report
report_ocvm -type pocvm –cell_delay –list_not_annotated –coefficient
report_ocvm -type pocvm [get_cells I]
会把用 p o c v c o e f f i c i e n t pocv\ coefficient pocv coefficient的 c e l l cell cell给表示出来,如果有设置 d i s t a n c e d e r a t e distance\ derate distance derate,也会描述出来,如下图所示没有 d i s t a n c e d e r a t e distance\ derate distance derate:
report_timing -derate
这种会在 t i m i n g timing timing报告中把 d e r a t e derate derate相关的设定个报出来,还会报出 m e a n 、 s e n s i t 、 i n c r 、 p a t h mean、sensit、incr、path mean、sensit、incr、path,其中 i n c r incr incr和 p a t h path path不再解释, m e a n mean mean和 s e n s i t sensit sensit可以理解为累计的高斯分布函数变量,可以满足 i n c r = m e a n + / − 3 ∗ s e n s i t incr=mean+/-3*sensit incr=mean+/−3∗sensit
report_timing -variation
会打出更加详细的 p o c v pocv pocv相关的高斯变量的报告如下所示,其中 I n c r Incr Incr对应的 m e a n 、 s e n s i t 、 c o r n e r mean、sensit、corner mean、sensit、corner对应的为单一 c e l l cell cell相应的高斯分布变量,满足 c o r n e r = m e a n + / − 3 ∗ s e n s i t corner=mean+/-3*sensit corner=mean+/−3∗sensit,而 P a t h Path Path中的相关值为累计高斯分布变量,首先依然满足 V a l u e = M e a n + / − 3 s e n s i t Value=Mean+/-3sensit Value=Mean+/−3sensit,而 P a t h Path Path中的 M e a n Mean Mean等于 P a t h Path Path中的前一级 M e a n Mean Mean加上 I n c r Incr Incr中的本级别的 m e a n mean mean,而 P a t h Path Path中的 S e n s i t Sensit Sensit等于Path中上一级的 S e n s i t Sensit Sensit的平方值加或减 I n c r Incr Incr中的 s e n s i t sensit sensit的平方值,再开平方。其实某一级别的 d e l a y delay delay值,在考虑了高斯分布后,就等于本级别 P a t h ( M e a n , S e n s i t ) + 本级 I n c r ( M e a n , S e n s i t ) Path(Mean,Sensit) + 本级Incr(Mean,Sensit) Path(Mean,Sensit)+本级Incr(Mean,Sensit)。
report_delay_calculation -from I/I -to I/ZN -derate
可以报告出该 c e l l cell cell上到底有设置什么样的 d e r a t e derate derate。如下图所示可以看出来, c e l l d e l a y d e r a t e d cell\ delay\ derated cell delay derated的计算方式以及 s i g m a sigma sigma的计算方式,而我们上面报告中所示的 I n c r Incr Incr的 M e a n Mean Mean值就是 c e l l d e l a y d e r a t e d cell\ delay\ derated cell delay derated的值。而在报告中显示的 d e r a t e derate derate值,也会相应的在如下的计算中体现出来。