介绍时序分析概念,那为什么需要OCV呢?

今天我们要介绍的时序分析概念是on chip variations,简称ocv。ocv会对时序分析提出更严格的要求。那为什么需要ocv呢,因为制造工艺的限制,同一芯片上不同位置的mos晶体管的性能会有一些差异。库中的pvt是一个点,比如1.2v,250℃,工艺1.0。 但实际芯片的pvt永远不会落在一个点上,而是一个范围;比如说有时序关系的几个cell,可能这几个cell的pvt是1.18v,20℃,工艺0.98。而那个cell的pvt是1.21v,35℃,工艺1.01。这些cell的pvt都不在那个点上,怎么去分析呢?这时候就需要ocv了。
还是参照single mode和bc-wc那张图,ocv的检查方式更加严格,如下所示:
for setup :launch clock path :late path from max lib data path :late path from max libcapture clock path :early path from min libfor hold:launch clock path :early path from min libdata path :early path from min libcapture clock path :late path from max lib
ocv for setup check
还是原来bc-wc分析模式那张图:
假设pvt情况可以在整个chip上变化, (暂时不考虑cppr)
clock period = 4launch clock late path (max) = 0.7 + 0.6 = 1.3data late path (max) = 3.5capture clock early path (min) = 0.5 + 0.3 = 0.8setup = 0.2data arrival time = 1.3 + 3.5 = 4.8data required time = 4 + 0.8 - 0.2 = 4.6slack =data required time - data arrival time=4.6 - 4.8 = -0.2
ocv for hold check
对于hold check, 可以参考下图分析模式:
launch clock early path (min) = 0.5 + 0.4 = 0.9data early path (min) = 2capture clock late path (max) = 0.7 + 0.5 = 1.2hold = 0.2data arrival time = 0.9 + 2 = 2.9data required time =1.2+0.2 = 1.4slack = data arrival time - data required time=2.9 - 1.4 = 1.5
通过上诉的描述,大家对ocv的分析模式有一定了解了吧,ocv其实是一种相对悲观的分析模式,为了使design和fabrication之间的结果更加接近,现在又诞生了aocv,socv等更高级的分析模式。
时序分析概念是timing derate. 我们可以称为时序增减因子。我们知道在芯片的生产过程中,由于刻蚀,不同点的温度,金属不均匀,串扰,晶体管沟道长度等影响因素,导致片上各个位置单元延迟不一样。因此,我们需要一个缩放因子来让设计更加严格。
timing derate是计算ocv的一种简单方法,在某单一条件(bc-wc)下,把指定path的delay放大或者缩小一些,这个比率就是derate。比如说:
-late
setup ==> data path * 1.1
hold==> clock path * 1.1
-early
setup ==> clock path * 0.9
hold==> data path * 0.9
以下图为例:
在setup check中,
date arrival time即data path和launch clock path需要使用-late选项,使得路径变慢。
date require time即capture clock path需要使用-early选项,加快路径延迟。
需要注意的是:考虑time derate需要在某个单一条件下,比如说bc或者wc条件下,把指定path的延迟再放大或者缩小一点,要么是bc,要么是wc,不要把bc和wc混在一起,再ocv,那样太过于悲观。
setup check一般是工作在wc pvt条件下,因此不需要在late path上,即launch clock path以及data path上再加time derate,因为在wc条件下,launch clock path以及data path上的延迟已经是所有条件下最差的delay了,没有必要再加大延迟,但是wc条件下capture clock path上的delay肯定不是最小的,因此需要加快。
所以上面的timing path做setup check,time derate只需要这样设置:
set_timing_derate -early 0.9
set_timing_derate -late 1.0
我们可以计算一下设了timing derate以后setup check的变化:
上图中:launch clock path =(1.2+0.8)*1.0 = 2.0
max data path = 5.2 * 1.0 =5.2
capture clock path = (1.2 + 0.86) *0.9 = 1.854
所以最小时钟周期t= 2.0 + 5.2 -1.854 + 0.385= 5.731
可以看到:考虑timing derate以后,会降低整个design的工作频率。
在hold check中
考虑time derate的情况与setup正好相反,
data require time中的capture clock path使用-late选项,使路径变慢。
data arrival time中的data path和launch clock path使用-early选项,使路径加快
实际上,hold check一般在bc条件下,因此,launch clock path与data path不需要再进一步减小delay,因为已经是最小delay,但是bc条件下的capture clock path需要derate.可以使用如下设置
set_timing_derate -early 1.0
set_timing_derate -late 1.2
这样添加time derate后
launch clock path = 0.85 * 1.0 = 0.85
min data path = 1.7 * 1.0 = 1.7
capture clock path = 1.0 * 1.2 = 1.2
所以slack=0.85+1.7-1.2-1.25=0.1
介绍的时序分析概念是cppr(crpr)。全称clock path pessimism removal(clock reconvergence pessimism removal),中文名“共同路径悲观去除”。它的作用是去除clock path上的相同路径上的悲观计算量。如下图所示:
由于sta是穷举型的分析路径,在分析setup timing时,clock launch path会选择红色的路径,clock capture path则会选择绿色的路径,这本身就是不合理的情况,一个mux不可能同时存在两条经过的路径,所以我们需要去除这个计算的悲观量。
cppr不仅仅存在于ocv,在以下几种情况它都可以存在:
single mode without set_timing_derate
bc-wc mode without set_timing_derate
ocv mode without set_timing_derate
single mode with set_timing_derate
bc-wc mode with set_timing_derate
ocv mode with set_timing_derate
我们再看上一个计算timing derate的例子:
大家肯定发现了对于path最前端那1.2ns的延迟,在setup分析时,launch clock path中没有被derate, 而在capture clock path中被time derate 1.2*0.9 =1.08. 显然这是相互矛盾的。
对于上诉设计,考虑cppr之后,我们必须减去一个cpp因子=1.2-1.08=0.12
所以最小时钟周期t=5.731-0.12 = 5.611
使用方法:
set_analysis_mode -cppr {none|both|setup|hold}
介绍的时序分析概念是aocv。全称stage based advanced ocv。我们知道,在ocv分析过程中,我们会给data path,clock path上设定单一的timing derate值。随着工艺演变的加速,我们发现这种设置方法是过于悲观的,大家可以想象下,ocv是片上误差,就代表一条path上有的cell delay大于标准值,那也有的cell delay会小于标准值。因此不能一味的加大或减小delay来模拟片上误差。
如下图所示,对于下面这样一条buffer链,假设8个buffer处于不同的pvt条件下,ocv会将8个buffer都选用最差的条件来分析(同一derate参数),而aocv则会采用不同的timing derate值来分析。
aocv有它专门的libary库,我们称为aocv table。按照维度分为两种,一种是一位的只以stage count作为计算的表格,如下图所示:
version: 2.0
object_type: lib_cell
object_spec: lib/buf1x
rf_type: rise fall
delay_type: cell
derate_type: late
path_type: data
depth: 1 2 3 4 5
distance:
table: \
1.123 1.090 1.075 1.067 1.062
depth就代表着stage count,从表格中我们可以看到随着;路径的深入,derate的效应会减小。那我们怎么来计算stage count呢?
通常这个计算方法比较复杂,不同的电路情况对应着不同的count计算方式:如下timing path,我们将l1,l2,dff1,u1,u2,u3的stage count设成6,而c1,c2,c3,c4的stage count需要设成4,这边需要说明的是b1,b2由于是common point,所以在计算stage count时需要忽略。
另外一种是以distance和stage count混合组成的二维aocv table. 它在计算derate时同时考虑了timing path的距离因素,当然这个虽然更加精确,但是会增加runtime,所以一般现在一维表格用的更多。
version: 2.0
object_type: lib_cell
object_spec: lib/buf1x
rf_type: rise fall
delay_type: cell
derate_type: late
path_type: data
depth: 1 2 3 4 5
distance: 500 1000 1500 2000
table: \
1.123 1.090 1.075 1.067 1.062 \
1.124 1.091 1.076 1.068 1.063 \
1.125 1.092 1.077 1.070 1.065 \
1.126 1.094 1.079 1.072 1.067
使用方法:
set_analysis_mode-aocv true

智媒的未来是人工智能与机器人的融合
贴片SMT导电硅胶弹片新极限(可替代传统的PCB铍铜弹片)
单片机如何读取4-20ma信号
MYZR-STM32MP157-CB152开发板:让网关更智能,生活更舒适
数据分析外包出去好不好?有什么利弊?
介绍时序分析概念,那为什么需要OCV呢?
锥形量热仪的工作原理_锥形量热仪的主要参数
什么是NFC?NFC应用有哪些?
利用Ansible实现OpenStack自动化
智能电网发展迅速,机遇与风险并存
EEE1588精密网络同步时钟协议(时钟服务器)-v2.0协议浅析
发帖也能赚钱?做个工程师太牛了!
DC3系列开关高压输入DC-DC电源PICO
扫拖机语音芯片,工业级内置存储可重复烧录语音ic,WT2003H4-16S
使用高速微型的串行端口
营收6000亿 透过华为战略看风口
浅谈北方高校能耗现状与节能建议
关系型数据库最难的地方,就是建模
网络变压器耐压强度/电阻检测仪的特点及优势
2021年手机市场回温,TDDI IC需求持续扩大