今天我们介绍的时序分析概念是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