//來自微信公眾號 「數字晶元實驗室」

時序分析工具可以查找並分析設計中的所有時序路徑(timing paths)。 每條時序路徑有一個起點(startpoint)和一個終點(endpoint)。

起點是設計中數據由時鐘邊沿觸發的位置。 數據通過時序路徑中的組合邏輯傳播,然後被另一個時鐘邊沿在終點捕獲。

時序路徑的起點是時序元件的時鐘引腳或設計的輸入埠。

時鐘邊沿在起始點觸發數據。 輸入埠也能被視作起點,是因為輸入埠是由外部源觸發的。

時鐘邊沿在終點捕獲數據。輸出埠也能被視作終點,是因為輸出埠是在外部捕獲的。

每條路徑從時序路徑起點開始,經過一些組合邏輯,然後在終點被捕獲:

?Path 1:從輸入埠開始,到達時序元件的數據輸入。

?Path 2:從時序元件的時鐘引腳開始,到時序元件的數據輸入。

?Path 3:從時序元件的時鐘引腳開始,到輸出埠結束。

?Path 4:從輸入埠開始,到輸出埠結束。

設計中的每條路徑都有一個相應的時序slack(timing slack)。 slack是一個時間值,可以

是正的,零或者負的。 具有最差slack的單一路徑稱為關鍵路徑(critical

path)。

我們可以將設計的時序路徑分組,以便進行時序分析、報告和優化。 例如,可以將輸入到寄存器(input-to-register),寄存器到寄存器(, register-to-register)和寄存器到輸出(register-to-output)路徑分成三個單獨的組,因為它們具有不同類型的時序約束。

默認情況下,設計中使用的每個時鐘都有一個時序路徑組(path group)。

以下是report_timing命令生成的典型時序報告:

默認情況下,report_timing命令報告每個路徑組(path group)中建立時間最差的時序路徑。

在此示例中,與時序報告的路徑關聯的邏輯如下圖所示:

時序報告首先顯示時序路徑起點(Startpoint),時序路徑終點(Endpoint),時序路徑組(path group)名稱和時序路徑檢查類型。

在此示例中,時序路徑檢查類型為「max」,表示最大延遲或建立時間檢查; 「min」表示最小延遲或保持時間檢查。

時序報告顯示了沿著路徑的延遲計算。該表包含Point,Incr和Path的列,

分別列出了沿著時序路徑的(引腳),每個點對延遲的貢獻,以及到那一點的累積延遲。

Incr列中的星號(*)符號表示SDF反標延遲的位置。 「Path」列中的字母「r」和「f」表示在時序路徑中的那個點上,信號轉換是上升還是下降。

表中顯示的「數據到達時間(data arrival time)」是path group中延遲最長的路徑延遲。

「數據所需時間(data required time)」是時序路徑中數據的允許到達時間,考慮了捕獲時鐘邊沿時間,時鐘網路延遲,時鐘不確定性以及庫的建立時間要求,是沿著時鐘路徑的最小延遲。

時序報告末尾顯示的slack值是data required time減去data arrival time。

在這個例子中,slack是一個非常小的正值,這意味著時序約束恰好得到滿足。 負slack需要改變設計來fix 時序違例。 例如,時序路徑中的驅動單元可以用更大的單元替換,以獲得更大的驅動強度,這將減少線延遲。 另一方面,一個很大的正slack可以將時序路徑中的驅動單元可以替換成較慢,較小的單元來減少面積或較慢的,較高閾值的單元來減少泄露功耗。


推薦閱讀:
相关文章