創建時間和保持時間(setup time 和 hold time)

創建時間和保持時間貫穿了整個時序分析過程。只要涉及到同步時序電路,那麼必然有上升沿、降低沿採樣,那麼沒法避免setup-time 和 hold-time這兩個概念。本文內容相對獨立於該系列其餘文章,是同步時序電路的基礎。html

針對xilinx手冊中一些概念的更新和術語的規範化,以及存在的一些問題,參考文檔爲UG906,已進行了一系列修改。--2019/5/5app

系列目錄  electron

    時序收斂:基本概念工具

    創建時間和保持時間(setup time 和 hold time)ui

    OFFSET約束(OFFSET IN 和OFFSET OUT)spa

    Clock Skew , Clock uncertainly 和 Period設計

    特殊約束From To3d

    OFFSET IN 使用舉例htm

    Achieving Timing Closureblog

1. 什麼是setup-time 和 hold-time

    同步時序電路設計中,只在時鐘的上升沿或降低沿進行採樣。爲了正確獲得採樣結果,須要確保採樣時刻數據有效,所以工具會對綜合結果進行靜態時序分析,以判斷時鐘和數據之間的相對關係是否知足要求。以寄存器-寄存器之間的路徑爲例子

image

圖1

 

image

圖2

  •     發射時間(launch edge):源時鐘發射數據的時刻
  •     採樣時間(capture edge):目的時鐘採樣數據的時刻(顯然採樣時刻要晚於發射時刻)

    而Setup time和Hold time,按照維基百科的解釋爲

Setup time is the minimum amount of time the data signal should be held steady before the clock event so that the data is reliably sampled by the clock. This applies to synchronous input signals to the flip-flop.

Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. This applies to synchronous input signals to the flip-flop.

image

    不管是Setup time 或者Hold time,都是指時間上的相對關係;在具體分析過程當中,時鐘有發射時鐘和採樣時鐘,而各個路徑上的數據也有不一樣的延時,所以僅說起Setup time/Hold time每每有指代不清的問題。所以,Xilinx在UG902中明確了

  •     setup relationship:時序分析工具給出的launch edge和capture edge之間setup關係
  •     setup requirement:launch edge和capture edge之間最嚴格的setup約束(分析獲得全部的setup relationship中的最小值)
  •     hold relationship:時序分析工具給出的launch edge和capture edge之間hold關係
  •     hold requirement:launch edge和capture edge之間最嚴格的hold約束(分析獲得全部的hold relationship中的最大值)

 

    如圖2所示,在同一理想時鐘下,假設時鐘週期爲5ns;lanch time記爲0ns,則capture time爲5ns,此時setup relationship爲5ns,hold relationship爲0ns。

 

2. 創建在Setup和Hold上時序分析

    創建在上一節基礎上,能夠對數據的具體採樣時刻進行分析,以判斷是否在數據有效時刻完成了採樣。若是說採樣時刻比數據到達時刻晚,則知足了setup的要求。

    如圖1所示,因爲源時鐘可能有路徑延時,所以Q端的輸出會比launch time晚source clock path delay,同時因爲在數據路徑上有延時,所以到達下一寄存器Q端還需花費datapath delay時間,所以

    Data Arrival Time(Setup) = launch edge time + source clock path delay + datapath delay

    相似可計算實際的採樣時刻

    Data Required Time(Setup) = Caputure edge time + destinationclock path delay – clock uncertainty – Synchronous Element Setup time

    其中Synchronous Element Setup time是寄存器的特性,Clock Uncertainty相似下圖所示,因爲時鐘的不肯定性,須要考慮最壞狀況。

image

   Xilinx計算Slack來判斷是否知足是須要求。Slack的中文意思是「鬆弛的」,能夠簡單的理解爲設計餘量。即若是slack是正數,那麼設計知足要求,不然不知足要求。對於setup time的slack,有

        Slack = Data Required Time(Setup) - Data Arrival Time(Setup)

   如圖2所示的理想狀況下,Required Time(setup)爲5ns,只要datapth delay不大於5ns,那麼Slack就能知足要求。

   固然,在一個設計中會存在多條路徑,全部的Slack均須要知足要求。

   

    相似的,也能夠給出Hold的分析結果;與setup不一樣,要求數據完成採樣以後下一個數據才能到達。

    Data Arrival Time(hold) = launch edge time + source clock path delay + datapath delay

    Data Required Time(Setup) = Caputure edge time + destinationclock path delay + clock uncertainty + Synchronous Element Hold time

    Slack = Data Arrival Time(Hold) - Data Requried Time(Hold)

   如圖2所示的理想狀況下,Required Time(Hold)爲0ns,只要datapth delay大於0,那麼Slack就能知足要求。

相關文章
相關標籤/搜索