POCV/ SOCV 时序报告解析1
如下所示,是一个列出了mean 跟sigma 值的时序报告,要读懂SOCV 的时序报告,需要搞清楚:
- 当前cell 的delay = Delay mean + N * Delay sigma;
- 当前cell 的Transition = Slew mean + N * Slew sigma;
- 其中:
- Delay mean, Delay sigma, Slew mean, Slew sigma 都是从library 中读出的值;
- N 就是通常所说的『几sigma』由统计学特性决定,目前常用的N=3 即常说的3-sigma.
-
Arrival delay 的计算为:
- Arrival Delay =
Arrival Mean + N * Arrival Sigma
- Arrival Mean =
Pre-Arrival Mean + Delay mean
(比如0.5243+0.0245=0.5488) - Arrival Sigma =
sqr ( Pre-Arrival Sigma ^ 2 + Delay Sigma ^ 2)
-------RSS, Root-Sum Square
- Arrival Mean =
- Arrival Delay =
-
结合上例,计算buff_4_2/Z 的Arrival Delay:
-
从lib 中可得buff_4_2 falling edge 的:
-
Delay mean = 0.02450;
-
Delay sigma = 0.00119;
-
到buff_4_1 的pre-Arrival Mean = 0.52430;
- 所以可得,到 buff_4_2/Z 的Arrival mean= 0.52430 + 0.02450 = 0.54880
-
到buff_4_1 的Pre-Arrival Sigma= 0.00118;
- 所以可得,到 buff_4_2/Z 的Arrival sigma= sqr (0.00118 ^ 2 + 0.00119 ^ 2)= 0.00168;
-
-
所以可得,到buff_4_2/Z 的Arrival delay 为:
-
Arrival delay = Arrival mean + N * Arrival sigma = 0.54880 + 3*0.00168 = 0.55384
-
示例中,buff_4_2/Z 的arrival delay 值为0.55383, 是因为工具在计算时是按照浮点数位宽计算的,最后显示在时序报告中的值做过四舍五入。
-
对于cell delay计算和OCV、AOCV不同,这里的cell delay是反推值
POCV/ SOCV 时序报告解析2(PT)
注意cell delay(Incr_Value)是反推得到的:根据当前Point上Path的Delay Value减去上个Point上Path的Delay value值得到的。
-
Incr
- Mean:平均值,也就是高斯分布中的μ值(它很关键)
- Sensit:全称是sensitivity,也就是1个Sigma的值;
- Corner: Sigma边界的最差值,比如Setup的话就是
Mean+3*Sensit
,如果是Hold的话就是Mean- 3*Sensit
。(具体几个是可以设置的),Delay很大并不会导致整个Path的Delay增加很多,比如b3 Cell的delay是Corner值是7ns,但是对于整个Path的贡献delay其实并没有那么大,只有2.82ns(Value值) - Path delay value = Path mean +/- (3 * Path sensit)。对于Setup(max delay)就是+,对于Hold(min delay)就是-。
-
Path
- Path mean其实就是每个Point Incr的Mean的累加
- Path sensit是每个Point sensit的平方和根(RSS, Root-Sum Square)值
- 有了Path的value值就可以反推得到前面所说的每一级的delay “Value”了
POCV/ SOCV 时序报告解析3 (Innovous/Tempus)
- 第一行,可知当前是setup check, endpoint 的clock pin, 是否满足timing 需求;
- 第二行,第三行,分别列出startpoint, endpoint, 跟对应的launch clock, capture clock, 以及对应的clock edge;
- 第四行,给出当前path 所属的clock group
- 第五行,Other End Arrival time 就是capture clock path 的Arrival time, 计算方式同launch path 的Arrival time 类似,区别是对于setup check, capture clock path arrival time = mean - N * sigma. (对于setup derate check,launch path变大,capture path变小)
- 第六行,Phase shift, 如果无multi cycle 即为当前clock 的周期
-
第七行,CPPR 不再是简单的Launch clock path common point arrival time - Capture clock path common point arrival time. 在Innovus/ Tempus 中用report_cppr 可得到对应的mean 跟sigma 值
由如上的report 可得-
当前时钟上升沿跟下降沿分别对应的Late/ Ealry 的Mean 和 Sigma.
-
对应到本例,是时钟上升沿 rise check, 所对应的CPPR mean 在report_cppr 中用Pessimism Mean 表示,
- 其计算方式是:Late Mean - Early Mean =0.279 - 0.229 = 0.51
-
同样可得到上升沿对应的CPPR sigma, 即report_cppr 中的Pessimism Sigma
- 其计算方式为:sqr (Late Sigma ^ 2 + Early Sigma ^ 2) =sqr (0.023 ^ 2 + 0.019 ^2) = 0.030
-
timing report 中的CPPR 在report_cppr 中用Pessimism 表示,
- 其计算方式为:Pessimism Mean + N * Pessimism Sigma = 0.51 + 3*0.030 = 0.141
-
- 第八行,对于setup check,让require time (capture path)变小,arrival time (launch path)变大
- Required Time = Req Time Mean - N * Req Time Sigma. 其中每个值的计算为:
- Required Time = Req Time Mean - N * Req Time Sigma. 其中每个值的计算为:
- 第九行,Arrival Time 即是Launch Clock Path + Launch Data Path 的Arrival Time(launch path)
- 第十行,Slack Time = Slack Mean - N * Slack sigma. 其中每个值的计算为:
对mean 跟Sigma 设了timing derate 的解析
如果要在SOCV 的基础上加更多的Derate 可以用命令set_timing_derate 来设置,通常有:
- 对cell 的mean 和sigma 值分别设置Derate, 在Timing report 中会显示在"User Derate" 一列,格式是mean : sigma, 设置示例:
set_timing_derate 1.2 INV3-mean-cell_delay
set_timing_derate 1.1 INV3-sigma-cell_delay
- 对net 的mean 和sigma 值分别设置Derate, 在Timing report 中会显示在"User Derate" 一列,格式是mean : sigma, 设置示例:
set_timing_derate 1.5 X8-mean-net_delay
set_timing_derate 2.0 X8-sigma-net_delay
- 对net 或 cell 设置incremental derate, 在Timing report 中会与"User Derate" 相加后呈现在**“Total Derate”** 一列,设置示例:
set_timing_derate 1.8 INV3-incremental_adjust
设置timing derate 的timing report 如下所示,在该例中,Total mean/sigma derate, Delay Mean, Delay sigma 的计算分别如下所示,其他的计算跟不带set_timing_derate 的一致。
- Total mean Derate = User mean Derate + incr_adjust=1.2+1.8=3
- Total sigma Derate = User sigma Derate+ incr_adjust(这里是0)=1.1 +0 =1.1
- Delay mean = Total mean Derate * Delay mean from lib;
- Delay sigma = Total sigma Derate * Delay sigma from lib;
Reference:陌上风骑驴看IC https://cloud.tencent.com/developer/article/1611170