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
  • 结合上例,计算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. 其中每个值的计算为:
      在这里插入图片描述
      在这里插入图片描述

  • 第九行,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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐