靜態時序分析(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中的時序分析(一)等。

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