静态时序分析(STA)基础

    参考时序分析之静态分析基础

  • 建立和保持时间

        建立时间T_{su}):时钟有效沿到来之数据必须保持稳定的最小时间;

        保持时间T_{h}):时钟有效沿到来之数据必须保持稳定的最小时间。

 

  • 数据输出延时和缓冲延时

        数据输出延时T_{co}):时钟触发开始到有效数据输出的器件内部所有延时的总和。简单地说,在时钟有效后,D的数据并不 能立即传到Q端,这段等待的时间就是触发器的时钟到输出时间。(这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。)

        缓冲延时:信号经过缓冲器到达有效的电压输出所需要的时间。

        T_{co} = 逻辑延时 + 缓冲延时

        如下图:给出确定T_{co}的方法,在输出缓冲的末端直接相连一个测量负载,最常见的是50欧姆的电阻或30pF的电容,然后测量负载上的信号电压到达一定电平所需要的时间,这个电平称为测量电压(Vms),一般是信号高电平的一半

 

 

  •  发射沿和锁存沿

        发射沿(launch edge):寄存器(前级寄存器)数据变化的时钟边沿,也是静态时序分析的起点

        锁存沿(latch edge):目的寄存器(后级寄存器)数据锁存的时钟边沿,也是静态时序分析的终点

        如下图:

        通常来说,Latch Edge 比 Launch Edge 晚一个时钟周期T),即它们之间通常是相差一个时钟周期的关系。 

 

  • 数据到达时间

        数据到达时间(Data Arrival Time):输入数据在有效时钟后到达所需要的时间,主要分为三个部分:时钟到达寄存器时间T_{clk1})、寄存器输出延时T_{co})和数据传输延时T_{data})。

 

        如上图,数据到达时间计算公式如下:

                                               Data\; Arrival\; Time = Launch\; Edge + T_{clk1} + T_{co} + T_{data}

 

  • 时钟到达时间

        时钟到达时间(Clock Arrival Time):时钟从latch edge到达目的寄存器(destination register)输入端所用的时间。

        如下图,时钟到达时间计算公式如下:

                                            Clock\; Arrival\; Time=Latch\; Edge+T_{clk2}

 

  • 时钟偏斜

        时钟偏斜(Clock Skew):一个时钟源到达两个不同寄存器时钟端的时间偏移

        如下图,时钟到达时间计算公式如下:

                                                        T_{skew}=T_{clk2}-T_{clk1} 

 

  • 数据需求时间

  • 建立(Setup)数据需求时间

        计算公式如下:

                               \left ( Setup \right )Data\; Required\; Time=Latch\; Edge+T_{clk2}{\color{Red} -}T_{su}

        这里不考虑建立不定态(Setup Uncertainty)。

 

  • 保持(Hold)数据需求时间

         计算公式如下:

                               \left ( Hold \right )Data\; Required\; Time=Latch\; Edge+T_{clk2}+T_{h}

        这里不考虑保持不定态(Hold Uncertainty)。

 

  • 建立关系和保持关系

        建立关系(Setup Relationship):对于两个相邻的寄存器,后一级(目的)寄存器每次锁存(latch)的数据应该是前一级(源)寄存器上一个时钟周期锁存过的数据。

        保持关系(Hold Relationship):实际上是同一个edge,也就是说目的寄存器的数据保持时间可能遭到源寄存器同一个时钟沿所传输数据的“侵犯”。

 

  • 建立余量(Setup Slack) = 建立(Setup)数据需求时间 - 数据到达时间(Data Arrival Time)

        计算公式如下:

                             Setup\; Slack=\left ( Setup \right )Data\; Required\; Time-Data\; Arrival\; Time

                             \left ( Setup \right )Data\; Required\; Time=Latch\; Edge+T_{clk2}{\color{Red} -}T_{su}

                            Data\; Arrival\; Time = Launch\; Edge + T_{clk1} + T_{co} + T_{data}

        若考虑

                                              \left\{\begin{matrix} Latch\; Edge-Launch\; Edge=T\\T_{skew}=T_{clk2}-T_{clk1}=0 \end{matrix}\right.

 建立余量可以化简为:

                                     Setup\; Slack=T-T_{su}-T_{co}-T_{data}

        当Setup\; Slack> 0建立余量为正时(数据到达时间要早于建立数据需求时间),满足时序要求。由此可见,源寄存器与目的寄存器之间的数据传输延迟 T_{data}不能太长,延迟越长,slack越小。

 

  • 保持余量(Hold Slack) = 数据到达时间(Data Arrival Time)- 保持(Hold)数据需求时间

        计算公式如下:

                             Hold\; Slack=\left ( Next \right )Data\; Arrival\; Time-\left ( Hold \right )Data\; Required\; Time

                            \left ( Next \right )Data\; Arrival\; Time = Next\; Launch\; Edge + T_{clk1} + T_{co} + T_{data}

                            \left ( Hold \right )Data\; Required\; Time=Latch\; Edge+T_{clk2}+T_{h}

        若考虑

                                              \left\{\begin{matrix} Next\; Latch\; Edge=Latch\; Edge\\T_{skew}=T_{clk2}-T_{clk1}=0 \end{matrix}\right.

 建立余量可以化简为:

                                     Hold\; Slack=T_{co}+T_{data}-T_{h}

        当Hold\; Slack> 0保持余量为正时(下次数据到达时间要晚于保持数据需求时间),满足时序要求。由此可见,源寄存器与目的寄存器之间的数据传输延迟 T_{data}不能太短,延迟越短,slack越小。

 

        另外,参考时钟约束实例时序约束实例2,以及FPGA中的时序分析(一)等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章