OCV_summary
工艺偏差自集成电路诞生之日起,就是一个无法规避的因素,芯片制造过程不比生个娃简单,且每一个过程都极其精细,即使极尽所能地控制制造过程的偏差,但随着工艺进步,工艺偏差对芯片性能的影响却日渐凸现。为了模拟工艺偏差对芯片性能的影响,引入了On chip variation模型,40nm 之前简单的flat derate模型基本可以覆盖大部分情况,且不过于悲观到不能接受。但进入40 nm 之后flat derate 已不再是一个『经济』的模型,所以引入了更复杂的AOCV (Advanced OCV) 模型,考虑depth 跟 distance的影响,此时AOCV table的背后已有『统计学』的支撑,即所谓的SSTA (statistical staic timing analysis). 但限于runtime 当今STA 默认都是基于GBA (Graph Based Analysis) 进行timing 分析,这就使得Depth 的计算并不精确,从而导致过于悲观,如果用PBA (Path Based Analysis) 方式来计算Depth runtime又不能接受。于是进入16nm 之后,一种新的OCV 模型开始被广泛使用,C家称之为SOCV (statistical OCV), S家称之为POCV (Parametric OCV), 除了名字的差别,背后都是统计学都是正态分布,背后的算法也基本一致。
01
—
什么是Flat OCV?
Flat OCV使用一个固定的derate factor应用于所有的cell/net。
这种OCV对setup有很大的pessimism,对hold可能会存在potential risk。这是因为Flat OCV和实际的silicon数据相比,logic path越长,pessimistic margin越大,对setup的影响越大;logic path越短,optimistic margin越大,对hold的影响越大。

02
—
如何设置Flat OCV?
Setup Timing Analysis:考虑最差情况,对capture clock path使用early timing derate,对launch clock path使用late timing derate,对data path使用late timing derate。

Hold Timing Analysis:考虑最差情况,对capture clock path使用late timing derate,对launch clock path使用learly timing derate,对data path使用early timing derate。

03
—
什么是AOCV (SBOCV)?
AOCV: Advanced On Chip Variation,Synopsys家叫法。
SBOCV: Stage Based/Stage Best On Chip Variation,Cadence家叫法。
AOCV是一种伪随机的统计方法,用来模拟variation (random and systematic variations),将derate值模拟为timing path的cell path depth和cell distance的函数。同一条timing path,不同的cell有不同的derate值,derate值一般通过一维或二维查找表得到。

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进行建模。
Distance: 包括cell distance和net distance,distance指的是cell或者net box的对角线距离。distance 对systematic variation进行建模。

04
—
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。
05
—
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。


06
—
如何计算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的对角线距离。

07
—
什么是POCV (SOCV)?
POCV: Parametric On Chip Variation,Synopsys家叫法。
SOCV: Statistic On Chip Variation,Cadence家叫法。
实际中的on chip variation并不是一个确定的统一数值,而是大概率服从正态分布的统计规律。对每一个cell分别建模,cell的derate值是一个基于单一均值和方差的高斯分布,这种方法考虑了cell transition和ouput load对variation的影响,也考虑了variation对cell transiton的影响。
POCV中nominal和sigma数值是与input slew和output load有关的函数。
POCV的结果与SPICE (silicon)结果更相近,同时GBA结果与PBA结果也相近。
POCV使用nominal delay value表示cell的delay,使用delay sigma模拟cell的delay variation变化。需要分别对data/clock的early/late设置不同的derate值。
POCV Analysis Flow:

08
—
why POCV?
在40nm以下工艺,AOCV变得不准确,不能很好地降低pessimism。
不同于Flat OCV和AOCV 对某一个cell使用一个确定的derate值,POCV通过delay variation (sigma)进行计算得到当前cell的derate值。
POCV比AOCV/Flat OCV更接近于实际的silicon数据,可以更好地模拟on-die variation。
local variation从SPICE corner model中去除来生成Global corner models: SSG/FFG,这可以减少long path的overdesign,同时减少short path的underdesign的风险。

summary
工艺偏差导致芯片物理参数偏差,进一步导致管子电特性偏差,在STA 中表现于cell delay, cell trantion 跟 net delay的偏差。
STA 用PVT + OCV 来模拟cell 的timing,用Spice 仿真得到cell delay 跟variation。
STA 用RC corner来模拟互连线的variation。
PVT 跟RC corner 用于模拟Global varition。
Flatten OCV, AOCV, SOCV / POCV 用于模拟local variation.