VERDVANA'S BLOG Verdvana

静态时序分析笔记


1 前言

        本文是《Static Timing Analysis for Nanometer Designs A Pravtical Approach》一书以及涉及到的概念的笔记。


2 基础概念

2.1 CMOS

2.2 电平翻转

2.3 传播延迟(Propagation Delay)

        通过设置输入/输出的上升/下降沿的阈值点来计算传播延迟。比如用以下四个变量来定义的点:

input_threshold_pct_fall  :40.0;  #输入下降沿阈值点 A
input_threshold_pct_rise  :60.0;  #输入上升沿阈值点 B
output_threshold_pct_fall :30.0;  #输出下降沿阈值点 C
output_threshold_pct_rise :70.0;  #输出上升沿阈值点 D

        下图表明传播延迟是如何根据这四个点计算的:

![img1][img1]

2.4 转换率(Slew Rate)与转换时间(Transition Time)

        转换率和转换时间互为倒数。

        转换率通过以下四个上升/下降沿的阈值来计算:

slew_lower_threshold_pct_fall  :30.0;  #下降沿阈值低点 A
slew_upper_threshold_pct_fall  :70.0;  #下降沿阈值高点 B
slew_lower_threshold_pct_rise  :30.0;  #上升沿阈值低点 C
slew_upper_threshold_pct_rise  :70.0;  #上升沿阈值高点 D

        下图表明转换时间根据这四个点的计算:

![img2][img2]

2.5 时钟延迟(clock latency)

        指从时钟源到终点所花费的总时间。

2.6 偏移(Skew)、抖动(Jitter)与不确定性(Uncertainty)

        偏移是指2个或多个信号(data或clock)之间的时序之差的最大值。

        抖动是指信号在两个不同周期之间存在的差值。时钟抖动实在时钟发生器内部产生的,和晶振或PLL内部电路有关。

        Uncertainty = Skew + Jitter + Margin。

2.7 时序弧(Timing Arc)

        分类:

  • 单元弧(Cell Arc),每个单元都有多个时序弧
    • 组合逻辑单元:单元每个输入到每个输出都有时序弧
    • 时序逻辑单元:
      • 时钟输入引脚到输出引脚,例如CK到Q,为时序单元内部路径的传输延迟(Delay Arc)
      • 时钟输入引脚到其他引脚,例如CK到D,用于setup、hold分析(Timing Check Arc)
  • 线弧(Net Arc)
    • 一个单元的输出到下一个单元的输入之间的路径,引起传输延迟

        每个时序弧都有时序极性(Timing Sense):

  • 正单调(Positive Unate):输入的极性变化导致输出极性的变化相同或不变,例如与门,或门
  • 负单调(Negative Unate):输入的极性变化导致输出极性的变化相反或不变,例如与非门,或非门
  • 非单调(Non Unate):输入的极性变化决定不了输出极性变化,也要取决于其它输入状态,例如异或门

2.8 最大和最小时序路径

        逻辑通过几条不同的路径传播到终点,每条路径的传播时间被称为路径延迟(Path Delay),这包括该路径上cell和net的总延迟。延迟最大的叫最大路径(Max Path/Late Path),延迟最小的路径叫最小路径(Min Path/Early Path)。

2.9 建立、保持时间相关概念和计算

2.9.1 相关概念

        两个相邻的寄存器,其后级寄存器(目的寄存器)每次锁存的数据应是前级寄存器(源寄存器)上一个时钟周期锁存过的数据。

        启动时钟(Lauch Clock):传输到源寄存器的时钟。

        锁存时钟(Latch Clock):传输到目的寄存器的时钟。

        启动沿(Lauch Edge):启动时钟的上升沿,源寄存器锁存数据。

        锁存沿(Latch Edge):锁存时钟的上升沿,目的寄存器锁存源寄存器传输来的数据。

        数据到达路径(data arrival path):数据在两个寄存器间传输的实际路径。

        数据需求路径(data required path):数据在两个寄存器传输的理论所需时间的计算路径。

        数据到达时间(Data Arrival Time):数据在两个寄存器间传输的实际传播时间。

Data Arrival Time = Launch Edge + Source Clock Delay + Tco + Reg2Reg Delay

        数据要求时间(Data Required Time):包含数据建立要求时间和数据保持要求时间:

Data Required Time (Setup) = Latch Edge + Destination Clock Delay – Tsu
Data Required Time (Hold)  = Latch Edge + Destination Clock Delay + Th

        建立时间关系(Setup Relationship):目的寄存器每次锁存的数据应是源寄存器上一个时钟周期锁存过的数据。建立时间检查就是基于建立时间关系,对数据需求时间的计算,同理保持时间检查。

        保持时间关系(Hold Relationship):保证当前正在采样输出的信号不被上一个寄存器(源寄存器)同一个时钟周期对应的启动沿所传输的信号影响(信号不能传输太快,这话很绕,多读几遍)

        建立时间(Setup):在锁存时钟沿之前,即将被采样数据需要提前保持稳定的时间。

        保持时间(Hold):在锁存时钟沿之后,已被采样数据需要继续保持稳定的时间。

2.9.2 时序路径

2.9.3 建立、保持时间

2.9.4 余量计算

2.10 时钟域(Clock Domain)

        由同一个时钟驱动的触发器所在的区域为一个时钟域。

        如果两个时钟域之间没有数据路径,则这两个时钟域相互独立。相反如果有数据路径跨时钟域,则必须确定这条路径是真还是假。

        例如,一个两倍频时钟驱动的触发器发起数据,再由一倍频时钟驱动的触发器捕获数据,就是真实路径(real path)。如果设计人员将时钟同步器明确放置在两个时钟域之间,即使好像存在从一个时钟域到另一个时钟域的时序路径,但数据没有被约束要在一个时钟周期内通过同步器传播,因此这样的路径被称为伪路径(false path),因为是由时钟同步器来确保数据正确地跨时钟域传播。可以使用set_false_path命令指定时钟域之间的伪路径。分辨出哪些跨时钟域路径是真实的,哪些是伪路径,是时序验证工作的重要组成部分,这使得设计人员可以专注于验证真实的时序路径。

        还有一种伪路径的例子。比如通过二选一MUX选择时钟源,虽然只有一个时钟域,却有两个时钟,而这两个时钟是互斥的,因为一次只有一个时钟处于有效状态,因此这两个时钟之间不存在时序路径。

2.11 工作条件

        工作条件定义为工艺(Process)、电压(Voltage)和温度(Temperature)的组合,简称PVT。逻辑单元的延迟和互连走线的延迟是根据特定的PVT计算的。


3 标准单元库

        标准单元库包含时序信息、单元面积、功能等信息。

3.1 引脚电容

        单元的每个输入和输出都可以在引脚(pin)上指定电容。在大多数情况下,仅为单元输入引脚指定电容,而不为输出引脚指定电容,即大多数单元库中的输出引脚电容为0。

  pin(INP1) {
    capacitance:  0.5;
    rise_capacitance: 0.5;
    rise_capacitance_range: (0.48,0.52);
    fall_capacitance: 0.45;
    fall_capacitance_range: (0.435,0.46);
    ...
  }

        电容单位通常为皮法拉(pF),一般在库文件的开头指定。

3.2 时序模型

        逻辑单元的时序模型(timing model)旨在为设计中的各种单元实例(instance)提供准确的时序信息。通常会从单元的详细电路仿真中获得时序模型,用以对单元工作时的实际情况进行建模,且需要为逻辑单元的每个时序弧都建立一个时序模型。

        分为线性延迟模型和非线性延迟模型。

3.2.1 线性时序模型(linear delay model)

        使用input transition time和output load capacitance两个参数的线性函数表示cell delay和output transition time。计算形式如下:

cell delay = A + B*input transition time + C*output load capacitance

        其中A、B、C为常数。 对于亚微米(submicron)技术,线性延迟模型在输入过渡时间和输出负载电容的范围内并不准确,因此,目前大多数单元库都使用更复杂的模型,例如非线性延迟模型。

3.2.2 非线性延迟模型(non-linear delay model)

        起点(start point):输入端口;触发器或寄存器的时钟引脚。         终点(end point):输出端口;时序器件除时钟引脚以外的所有输入引脚。

        建立时间(setup):在时钟有效沿到达之前,数据必须保持稳定的最小时间,简称Tsu。

        保持时间(hold time):在时钟有效沿到达之后,数据必须保持稳定的最小时间,简称Th。


[img1]: [img2]: [img3]: [img4]: [img5]: