静态时序分析(STA)的不同分析模式


学习数字设计(数字IC设计、FPGA设计)都必须学习静态时序分析(Static Timing Analysis ,STA)。然而静态时序时序分析是一个比较大的方向,涉及到的内容也比较多,如果要系统得学习,那得花费不少的心思。这里来记录一下关于静态时序分析的三种分析模式,这里的记录只是记录一下学习笔记,或者说是随笔,而不是系统地学习STA。本文是来自于前天遇到了一道静态时序分析的题目,感觉有点疑惑,于是发到群里请求解答。经过一番讨论、查找资料之后,真相渐渐露出水面。

先看一下题目:
静态时序分析(STA)的不同分析模式

时序路径分析及相关概念

最快和最慢路径

在求解这道题目之前,先来介绍一下时序路径分析模式及相关概念。

  • 最快路径(early- path):指在信号传播延时计算中调用最快工艺参数的路径;根据信号的分类可以分为最快时钟路径和最快数据路径。
  • 最慢路径(late path):指在信号传播延附计算中调用最慢工艺参数的路径;分为最慢时钟路径和最慢数据路径。

注意:
与数据路径不同,最快时钟路径、最慢时钟路径的选择在建立时间分析和保持时间分析中是不同的。

  • 建立时间分析最快时钟路径和最慢时钟路径如下图所示:
    静态时序分析(STA)的不同分析模式
    在建立时间分析中,最快时钟路径是指时序路径中时钟信号从时钟源点到达终止点时序单元时钟端口的延时最短捕获时钟路径,而最慢时钟路径是指时序路径中时钟信号从时钟源点到达始发点时序单元时钟端口的延时最长发射时钟路径。

  • 保持时间分析最快时钟路径和最慢时钟路径如下图所示:
    静态时序分析(STA)的不同分析模式
    在保持时间分析中,最快时钟路径是指时序路径中时钟信号从时钟源点到达达始发点时序单元时钟端口的延时最短发射时钟路径,而最慢时钟路径是指时序路径中时钟信号从时钟源点到终止点时序单元时钟端口的延时最长捕获时钟路径。

分析模式

静态时序分析工具提供3种分析模式进行静态时序分析,不同的设计需求通过选择对应的时序分析模式从而可以在合理的时序计算负荷范围内得到接近于实际工作的时序分析结果。这三种模式是:单一分析模式(single mode)、最好-最坏分析模式(BC-WC mode)、全芯片变化分析模式(OCV模式)。

最好-最坏分析模式(BC-WC)

对于最好-最坏分析模式,静态时序分析工具会同时在PVT环境中的最好的和最坏的工作环境下检查建立时间和保持时间。也就是说,使用这个方式的时候,至少需要读入两个库(环境),一个用来设置最好的工作环境(或者说延时最小),一个用来设置最坏的工作环境(或者说延时最大)。

对于我们的题目,就是要求我们在BC-WC模式下进行分析建立时间和保持时间。现在就来分析一下。

首先我们分析工具提取到延时信息:
静态时序分析(STA)的不同分析模式
这里我们需要注意,本来我在读入max库的时候,应该有会得到max库下的单元延时的最大最小值;在读入min库的时候后,会得到min库下单元的最大最小值。题目中相当于只有一个库下单元延时的最大最小值,这个库取了max库的最大延时,同时取min库的最小延时。因此在进行WC分析的时候,我们就将max库中的单元延时最大和最小值看做相等进行处理,即max库中单元只有一个固定延时值(即上面的max列表里面)。同理BC分析的时候,min库中的单元也只有一个延时值(即上面的min列表里面)。

下面就对时序路径进行分析:
静态时序分析(STA)的不同分析模式
对于F1-F2路径的建立时间分析如下所示:

  • 时钟周期 = 2*4 = 8

  • 最慢发射时钟路径(max库) = C1max + C2max = 1

  • 最慢数据路径(max库) = L1max = 7

  • 最快捕获时钟路径(max库) = C1maxmin + C2maxmin + C3maxmin=C1max + C2max + C3max = 1.5 (maxmin表示max库下的最快路径)

  • F2的D端口建立时间 (max库)= 0.3

因此建立时间slack 为 :

8 +1.5 - 0.3 - 1 -0.7- 7 = 0.5

对F3-F4路径的保持时间分析如下所示:

  • 最快发射时钟路径(min库):C1min + C2min = 0.4

  • 最快数据路径(min库):F3cqmin + L2min = 0.4

  • 最慢捕获时钟(min库):C1minmax + C2minmax + C4minmax+C5minmax =C1min + C2min + C4min+C5min=0.8 (minmax表示min库下的最慢路径)

  • F2保持时间 = 0.1

因此保持时间slack为:

0.4 + 0.4 - 0.8 - 0.1 = -0.1(保持时间违规)

OCV模式

在芯片变化相关工作模式下,与最好-最坏分析模式一样,静态时序分析工具也会同时在PVT境中的最好的和最坏的工作环境下检查建立时间和保持时间,也就是要读入两个库。

OCV分析模式中建立时间的基本计算公式与其他分析模式下建立时间的基本计算公式一致,不同点在于计算最快路径和最慢路径所使用的工作环境不同,在计算建立时闻过程中静态时序分析工具调用时序单元的最大延时时序库来计算最慢路径的延时,同时调用逻辑单元的最小延时时序库来计算最快路径的延时,只检查时序路径的延时是否满足触发器建立时间的约束。

进行建立时间检查时,始发点触发器的发射时钟采用的是最坏条件下最慢时钟路径,终止点触发器的捕获时钟采用的是最好条件下最快时钟路径,而从始发点到终止点的数据路径的延时则是在最坏条件下最慢数据路径延时。

对于我们的题目,假设要在基本的OCV模式下进行计算,我们来看一下:
静态时序分析(STA)的不同分析模式
下面分析题目中的路径:
静态时序分析(STA)的不同分析模式
对于F1和F2之间的建立时间分析如下所示:

  • 时钟周期 = 2*4 = 8
  • 最慢发射时钟路径(max库) = C1max + C2max = 1
  • 最慢数据路径(max库) = F1cqmax+L1max = 0.7+7 = 7.7
  • 最快捕获时钟路径(min库) = C1min + C2min + C3min = 0.6
  • F2的D端口建立时间 = 0.3

因此建立时间slack 为 :

8 +0.6 - 0.3 - 1 - 7.7 = -0.4 (建立时间违规)

对于F1和F2之间的保持时间分析如下所示:

  • 最快发射时钟路径(min库):C1min + C2min = 0.4
  • 最快数据路径(min库):F1cqmin+L1min = 3.2
  • 最慢捕获时钟(max库):C1max + C2max + C3max = 1.5
  • F2保持时间 = 0.1

因此保持时间slack为:

0.4+3.2 - 1.5 - 0.1 = 2

同理可以分析单一模式下F3-F4路径的保持时间:

  • 最快发射时钟路径(min库):C1min + C2min = 0.4
  • 最快数据路径(min库):F3cqmin + L2min = 0.4
  • 最慢捕获时钟(max库):C1max + C2max + C4max+C5max = 2
  • F2保持时间 = 0.1

因此保持时间slack为:

0.4 + 0.4 - 2 - 0.1 = -1.3(保持时间违规)
    
对于上面的题目,在基本的OCV模式中计算分析建立时间时,公共路径C1、C2在计算最慢发射时钟路径时,使用的是max库的最慢延时;而在计算最快捕获时钟路径的时候使用的是min库的最快延时。也就是说,该分析把公共路径的输出,当做两个不同传播延时的信号进行延时计算。然而在芯片实际工作时,公共路径的输出是一个信号驱动后续的发射时钟和捕获时钟,上面的检查分析太过于悲观,不太符合实际,因此延伸到下面两种模式。

  1. 考虑时序减免的OCV模式:
    时序减免〔timing derate)的作用是很据减免(derating)系数,静态时序分析工具会在时序路径的每级逻辑门、连线和端口上都加上或减去一个原来延时值乘以减免系数值的延时作为最终的延时结果。设置时序减免值的目的是使时序分析结果更加符合实际情况。
    使用这种方式需要设置derating系数,系数值需要通过实际工程经验总结出来,这里不进行深入探讨,而且题目中没有给出该系数,因此不进行深入介绍。
  2. 考虑时钟路径悲观移除(CPPR)的OCV模式:
    可以分为 不考虑时序减免和考虑时序减免情况,这里不进行介绍,感兴趣可以参考有关资料。

其他先进的分析模式如AOVC、POCV等,涉及内容较多,就不写了,感兴趣可以参考有关资料。

转载者注

在转载这篇关于STA的文章时,我对其中的部分内容进行了删减(主要是单一分析模式篇),本来我理解的单一分析模式是仅在某一种库(typical, best, worst)下对时序路径进行分析,但原文中单一分析模式的分析方法是与OCV模式相同的,即在分析建立时间时取最慢的发射时钟路径、最慢的数据路径和最快的捕获时钟路径,因此让我感到比较疑惑。为了避免出现错误,我在转载时把这一部分删掉了,感兴趣的读者可以点进原文阅读。

原文中有些地方可能讲的有点绕,我觉得通过建立时间分析的对比应该可以看出BC-WC模式和OCV模式的不同:

  • BC-WC:最慢发射时钟路径、最慢数据路径、最慢捕获时钟路径
  • OCV:最慢发射时钟路径、最慢数据路径、最快捕获时钟路径

即BC-WC模式下的所有参数都是同一个库下的参数,而OCV模式下的参数却可以来自多个库,为的就是取到最差的建立或保持时间,因此原文也提到OCV模式过于悲观,其实可以将统一时钟路径的单元取相同库下的参数,不过这属于扩展内容,这里就不展开讲了。

本文转自:https://www.cnblogs.com/IClearner/p/7306335.html