FPGA——静态时序分析(STA)

FPGA时序分析与时序约束


什么是静态时序分析(STA)

首先,静态时序分析分析是基于同步电路设计模型的。静态时序分析STA对于同步时序电路必不可少,通过静态时序分析,一方面可以增加系统稳定性减少亚稳态的发生,另一方面可以最大限度的提升系统工作频率。因此,对静态时序相关概念的理解,以及掌握静态时序分析的方法具有重要意义

FPGA内数据数据传输模型

下图是小梅哥讲解时用到的示例图,左侧是时序分析及概念讲解,右侧是对应的代码。
FPGA——静态时序分析(STA)_第1张图片

概念
  • Tclk:时钟到达寄存器延时,时钟信号从时钟发生器到寄存器所需时间。
    FPGA——静态时序分析(STA)_第2张图片

  • Tskew:时钟偏斜,指同一个时钟沿(clk)分别到达两个寄存器所需的时间之间的差值(Tclk1和Tclk2的差值)。
    FPGA——静态时序分析(STA)_第3张图片
    计算公式:   T s k e w = T c l k 2 − T c l k 1 \ T_{skew} = T_{clk2}-T_{clk1}  Tskew=Tclk2Tclk1

  • Tco:数据输出延时,时钟上升沿到达D触发器 到 数据输出到Q端的延迟。

  • Tdata:数据输出后传输到第二级寄存器所需时间,可细分为:

    • 组合逻辑延时Tcomb_logic:数据经过组合逻辑部分所需的时间;
    • 线网延时Tnet:数据在线上传输所需的时间,一般较小可以忽略;
      FPGA——静态时序分析(STA)_第4张图片
  • Tsu:建立时间,由目的寄存器自身的特性决定,在诗中信号上升沿到达寄存器时,其数据段的数据必须提前 N ns稳定下来,否则无法确保准确存储(即:数据必须比时钟上升沿提前 N ns到达D触发器的D端口)。
    FPGA——静态时序分析(STA)_第5张图片

  • Th:保持时间,由目的寄存器自身的特性决定,时钟上升沿到来之后数据必须保持稳态的最小时间。
    FPGA——静态时序分析(STA)_第6张图片
    FPGA——静态时序分析(STA)_第7张图片

  • Setup Slack:建立裕量,为了降低亚稳态的发生概率,我们需要让数据在第二级寄存器有效沿之前达到稳态,具体是在哪个时刻之前呢,就是上面最开始讲的建立时间Tsu。
    FPGA——静态时序分析(STA)_第8张图片

    计算公式:
    S e t u p S l a c k = S e t u p   D a t a   R e q u i r e   T i m e − D a t a   A r r i v a l   T i m e = ( L a t c h   E d g e + T c l k 2 − T s u ) − ( L a u n c h   E d g e + T c l k 1 + T c o + T d a t a ) = T p e r i o d + T s k e w − T s u − T c o − T d a t a \begin{aligned} Setup Slack&=Setup\ Data\ Require\ Time - Data\ Arrival\ Time \\&= (Latch\ Edge+T_{clk_2}-T_{su})-(Launch\ Edge+T_{clk1}+T_{co}+T_{data})\\&=T_{period}+T_{skew}-T_{su}-T_{co}-T_{data} \end{aligned} SetupSlack=Setup Data Require TimeData Arrival Time=(Latch Edge+Tclk2Tsu)(Launch Edge+Tclk1+Tco+Tdata)=Tperiod+TskewTsuTcoTdata
    这个最终结果说明了源寄存器与目的寄存器之间延迟 T d a t a T_{data} Tdata不能太长的原因,延迟越长, S e t u p   S l a c k Setup\ Slack Setup Slack越小。当建立裕量不为负时,满足时序要求,否则不满足要求。
    满足时序公式:
    S e t u p S l a c k > = 0 Setup Slack>=0 SetupSlack>=0

  • Hold Slack:保持裕量
    FPGA——静态时序分析(STA)_第9张图片

    计算公式:
    H o l d   S l a c k = D a t a   A r r i v a l   T i m e − H o l d   D a t a   R e q u i r e d   T i m e = ( L a u n c h   E d g e + T c l k 1 + T c o + T d a t a ) − ( L a t c h   E d g e + T c l k 2 ) = − T p e r i o d + ( T c l k 1 − T c l k 2 ) + T c o + T d a t a \begin{aligned}Hold\ Slack &= Data\ Arrival\ Time - {Hold\ Data\ Required\ Time}\\ &=(Launch\ Edge + T_{clk1} + T_{co} + T_{data})-(Latch\ Edge + T_{clk2}) \\ &=-T_{period}+(T_{clk1}-T_{clk2})+T_{co}+T_{data} \end{aligned} Hold Slack=Data Arrival TimeHold Data Required Time=(Launch Edge+Tclk1+Tco+Tdata)(Latch Edge+Tclk2)=Tperiod+(Tclk1Tclk2)+Tco+Tdata

    从结果可以看出,当源寄存器与目的寄存器之间延迟Tdata太短的话,则保持裕量会很短,因此Hold Slack 越小。Hold Slack 不为负值则满足时序要求,否则不满足。
    满足公式:
    H o l d   S l a c k > = 0 Hold\ Slack >= 0 Hold Slack>=0

你可能感兴趣的:(FPGA,fpga开发)