OCV:on chip variation(差异)
芯片制造过程中,MOS见差异必然存在。Library中的cell delay是在某个固定的PVT下仿真得出的。而实际上芯片内部由于工艺偏差、电压降、温度变化,cell的delay并不是一个固定值,而是一个随机值,遵循高斯分布或门特卡洛分布。OCV用于描述不同管子见由于工艺偏差、电压降、温度变化引起的delay变化,也用于描述工艺偏差引起的net厚度宽度的变化导致net的RC变化。
方法:对lanch、capture路径整体施加一个固定的derate值。
命令:set_timing_derate
缺点:没有考虑depath、distance等,这个值不能cover最悲观的部分,而对另一个部分又过于悲观。
计算OCV的一种简单方法,在某单一条件(BC-WC)下,把指定path的delay放大或者缩小一些,这个比率就是derate。
#1 timing derate在setup check中
Data arrival time即data path和launch clock path需要用-late选项,使得路径变慢。Data required time即capture clock path需要用-early选项加快路径延迟。
Setup check一般是工作在WC条件下,因此不需要在late path(即launc clock path以及data path上)在加上time delay。因为在WC条件下,launch clock path以及data path上的延迟已经是所有条件下最差的delay。在WC条件下capture clock path上的delay用的是SS corner,延迟是最大的,需要加快。做setup check,time derate只需要这样设置:
set_timing_derate -early 0.9 set_timing_derate -late 1.0 |
对于不同工艺,derate数值一般由实际工程经验总结而来。
#2 timing derate在hold check中
Data required 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用的FF corner,延时是最小的,需要derate。可以这样设置
set_timing_derate -early 1.0 set_timing_derate -late 0.9 |
·CPPR(Clock Reconvergence Pessimism Removal)共同路径悲观去除
针对common clock 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。
AOCV:Advanced OCV
又叫SBOCV(stage based OCV)引入了对路径长度和整个路径在物理上所跨越的距离的考虑。在OCV分析过程中,我们会给data path,clock path上设定单一的timing derate值。随着工艺演变的加速,这种设置方法是过于悲观的,OCV是片上误差,设定单一的timing derate值就代表一条path上所有的cell delay都或大于或小于标准值,因此不能一味的加大或减小delay来模拟片上误差。实际中的variation,很少是一个统一的数值,而大概率是服从正态分布的。
AOCV提出:对于一条path上,级数越多其variation分布越接近正态分布,因而这条path整体的variation也越小。在实际设计中,会根据一条line上cell的级数不同而设置不同的dereate值。
AOCV有专门的libary库,我们称为AOCV table。
按照维度分为两种,一种是一位的只以stage count作为计算的表格,如下depth就是stage。级数(depth)越深,对应的derate越小。通过这种方式来剔除部分不必要的悲观量,使得设计在尽量覆盖实际情况的前提下更加容易收敛。
另外一种是以distance和stage count混合组成的二维AOCV table。它在计算derate时同时考虑了timing path的距离因素,当然这个虽然更加精确,但是会增加runtime,所以一般现在一维表格用的更多
优点:考虑了depth和distance对delay的影响,相较于flat OCV更准确
缺点:path depth计算由GBA给出太过悲观,由PBA给出计算量太大。没有考虑单元的transition和load带来的影响。
命令:set timing_aocv_analysis_mode {launch_capture | clock_only | \
separate_data_clock | combine_launch_capture}
path depth
分别计算launch path和capture path 的逻辑级数,GBA模式下如果一个cell 通过两条及以上的path,则该cell 取级数小的derate值;PBA模式下cell的depth为当前所分析path 逻辑级数的精确值.
Path distance
包括cell distance 和net distance,指从common点开始,timing path 内所有cell 或 net 对应矩形 box 对角线的距离。GBA模式下不考虑distance,如果提供二维table默认选取最后一行以保证distance最悲观;PBA模式下会根据 spef 中提供的坐标计算distance。