ISE Timing Report 小結

前言

結合近期工作調試經驗,並整理網上資料,對timing summary相關內容進行整理。

部分圖文來自文後的參考博客,更多精彩內容請閱讀參考博客原文。

 

 

 

一、概述

1.1、時序模型

在任何設計中最普通的時序路徑有以下4種:

1 輸入端口到內部時序單元路徑;

2 從時序單元到時序單元之間的內部路徑;

3 從內部時序單元到輸出端口之間的路徑;

4 輸入端口到輸出端口之間的路徑;

 

時序路徑模型

 

1.2、ISE Timing Report

ISE Summary 示例

1.3、ISE工具和策略設置

 

ISE的綜合設置

 

通常大的FPGA設計中跑一次bit文件時間很長,爲了能夠一次把不滿足的timing報告出來,首先需要將ISE的設置從默認的3更改爲較大的數字(100,200等);

ISE map setting

 

組合邏輯的深度極大的影響FPGA的時序,這個比較容易理解;LUT or Slice的級數決定了關鍵路徑。工程師coding的技巧和能力決定了整個代碼timing的結果,如果寫代碼時能夠聯想到綜合結果將RTL轉化到電路的結構,Slice的佔用情況;Timing 一定很好。

 

 

 

1.4、時序報告的閱讀

  • 通常時序單元(寄存器)之間的組合邏輯計算延時和佈線時間是影響FPGA timing的關鍵。

  • 其中組合邏輯計算和邏輯深度(級數)相關;而佈線延時和信號的扇出大小、器件類型、版本的資源佔用情況相關;

  • 邏輯工程師能夠通過閱讀時序路徑報告,找到代碼中相應存在的時序問題;

  • 最好結合timing analyzer 和FPGA editor 一起使用,能夠直觀看到路徑走線,延時信息等;(點擊藍色路徑即可)

 

 

 

 

 

Timing Constraints Classes

制定時序要求通常是由整個系統電路的外部環境來決定的,比如:

  • 整個電路系統提供給FPGA的時鐘速度爲多快

  • FPGA輸入數據是同步信號還是異步信號以及它的頻率

  • FPGA輸出數據所需的頻率

  • 輸入/輸出數據與時鐘的相位關係

總結以上各種需求情況,得出FPGA芯片對外的三種時序約束:

  • Period(時鐘週期約束):約束用同一時鐘驅動的寄存器(或同步器件)所能使用的最低時鐘頻率來保證FPGA內部同步信號的採樣時間與保持時間。

  • Offset:約束用時鐘採樣數據(offset in)或用時鐘打出數據(offset out)時時鐘與數據的相位差來保證FPGA採樣數據的建立時間與下一級芯片得到數據的採樣時間。

  • Pad to Pad:當輸入數據進入FPGA後沒有經過任何同步器件(即由時鐘驅動的器件如寄存器、BRAM等),只經過組合邏輯後就輸出片外時,Pad to Pad的From…To..約束用以保證內部的延遲時間。

有了以上三種約束類型,就可以描述外界的任何可能條件,並清楚的對最終設計需要滿足的時序要求作出說明,FPGA實現工具就會依據此要求進行佈局佈線,並試圖滿足要求。Xilinx有許多文檔對怎樣書寫時序約束進行了說明。在此要強調的一點是:時序約束首先是對外界環境的一個反映,其次纔是對佈局佈線工具的要求。時序約束向工具說明上游器件所給的信號是怎樣的,下游器件又要求怎樣的輸入,FPGA實現工具纔好依照此標準來綜合、佈局、佈線,時序收斂的設計纔可能在真正的電路環境中正常工作。

 

Timing報告顯示邏輯層次比較多,而這些層次中沒有延時特別長的

如果是LUT到LUT的層次太多,那麼可以先使用XST的register balancing功能。如果還是無法滿足,可能需要手動調整組合邏輯,在中間插一級寄存器,並修改其他相關的代碼,使得相關數據的latency一致。其他方法參考Xilinx AR9417。

如果是進位鏈太長,那麼就要考慮使用兩個小一點的計數器/加法器級聯。當考慮到進位邏輯是縱向排列的,當超出一列時,進位會導致延時變長很多時,更需要注意進位鏈的長度。

如果是BRAM到後續FF的延時比較長,那麼考慮幾種情況:

  • BRAM的輸出直接驅動FF,而且目標頻率比較高,比如400-500MHz。爲降低這段從BRAM到FF的TCO延時,那麼應該使用BRAM Primitive內部的寄存器

  • BRAM的輸出經過一些組合邏輯後驅動FF,而且目標頻率比較低,<300MHz。爲了將BRAM的TCO從這段路徑中去除,應該在使用CoreGen生成BRAM時選擇輸出寄存器在Core中而不用Primitive的。

  • 如果目標頻率又高,BRAM輸出又經過了LUT再驅動FF,那麼Primitive和Core中的寄存器最好都使用。這樣既降低TCO,又緩解後續邏輯的時序要求。

參考Xilinx AR9412

 

二、ISE的時序約束工具入門

該節內容引用自博文:在ISE下分析和約束時序

詳細內容可以跳轉上面鏈接

 

像TimeQuest一樣,ISE軟件工具也有自己的時序約束及分析工具。ISE界面的processes當中,有一個user constraints列表,其中的Creat Timing Constrain可以提供用戶添加指定的時序約束。

ISE使用的時序約束信息跟其他的物理約束,電氣約束等信息全部都放置在後綴名爲ucf(user constrain file)的文件中,在使用圖形化界面編輯約束後,用戶還可以直接編輯UCF文件對時序等要求進行修改。

此外,PlanAhead Post synthesis工具在提供管腳,區域約束等功能之外,也提供了時序約束及分析的功能。所以設計者在約束設計時序時可以有多種方法。

使用Creat Timing Constrain時界面的約束類型部分如下圖所示:

ISE時序約束類型

 

從圖中我們看到,這個工具對於時序約束的理解與altera的一致,需要約束時鐘,輸入輸出信號,以及指定一些時序例外,也有將約束組成Group的功能。Xilinx公司對於其FPGA約束的名稱與altera略有不同,但含義一樣。分別是Period constrain(時鐘週期約束),OFFSET constrain(輸入輸出偏移約束),以及FROM TO constrain,當然也有multi-cycle constrain等。

       雙擊unconstrainedclks窗口的clk項,出現的以下對話框可以對設計的時鐘信息進行指定。

ISE下約束時鐘界面

 

這個界面可以設置時鐘的週期,佔空比,以及初始邊沿是上升沿還是下降沿。或者如果這個時鐘是從其他指定的時鐘生成的,也可以指定生成的關係從而軟件自己計算生成時鐘的信息。unconstrained clks窗口將設計中沒有約束的時鐘列出來,在對每個時鐘一一指定之後,窗口內容逐一消失。而其上方另一個窗口將顯示約束的具體信息,並且也可從中選擇一條約束進行逐一修改。

約束類型菜單下的Inputs 選中雙擊後,會出現如下圖所示的對話框,指定了輸入偏移約束的類型之後,選擇next。這裏的OFFSET IN 的類型包括,輸入信號是源同步還是系統同步(時鐘的來源不同),是單邊沿觸發還是雙邊沿觸發的信號,以及有效邊沿類型。通常在設計中,若非特殊的DDR數據,或者使用了外部隨路時鐘,就選擇SDR以及系統同步即可。

指定輸入偏移約束的類型

 

       指定了偏移約束類型後選擇next會出現下圖所示頁面,在這個頁面中可以約束輸入信號的時序。

OFFSET IN 約束設置頁面

 

在這個頁面中,左上角表明了系統中使用的時鐘的信息。若有多個時鐘,則可以選擇輸入信號建立相關的時鐘。在Input pad timegroup/net中,可以選擇要指定約束的目標端口。若沒有對信號合併分組,就選擇input pad net,然後選擇需要約束的輸入管腳即可。畫紅色*號的必須指定的地方,會有External setup time,此即爲需要設置的offset in 約束。通過計算外部器件輸出時序以及電路板上延時之後,設計者可以在此指定一個值,表示的是輸入端口信號建立時間與時鐘信號有效邊沿的延時。

仿照上面OFFSET IN的設置,讀者可以設置OFFSET OUT的約束。它約束的是輸出端口信號與參考時鐘有效邊沿之間的延時關係。其數值需要查閱下一級芯片輸入數據時鐘的建立關係及電路板上時鐘,信號線延時關係計算獲得。

約束了設計中使用的時鐘,同時約束了輸入輸出端口的時序之後,整個設計的約束就是完整的。但完整的約束不一定是正確的,過於嚴格的約束會擠佔佈局佈線的資源從而造成無法進行最優佈線。所以還需要對一些不必要的,過於嚴格的約束進行時序例外的聲明。這些讀者可以通過嘗試軟件工具及閱讀軟件用戶手冊來學習。

 

下面是PlanAhead Post synthesis工具啓動後設置時序約束的頁面。

PlanAhead Post synthesis工具下的時序約束界面

 

從上圖可以看出這裏的時序約束包括了Clk period,Pad-clk offset,pathdelay,Time group,False path以及off chip delay等項。雙擊其中的任何一項可以出現下圖所示的對話框:

設置新的時序約束對話框

 

       這個對話框列出了所有能夠設置的時序約束,這裏的約束設置比Creat Timing Constrain工具更加簡潔,如圖中所示,在選擇了Input pad to clk offset 之後,右邊出來的界面中,選擇data arrival爲Before clock,時鐘選擇的clk爲系統時鐘,有效邊沿選擇上升沿,勾選Delay value,設置爲2ns。Pad net勾選後可以選擇需要設置的端口名稱。這樣的設置與前文所述的Creat Timing Constrain工具約束輸入端口時序是一致的。可見這個工具會更加簡潔。

 

 ISE下查看時序結果

查看時序報告時,在ISE工具下也有多種方式。比如,在ISE工具下可以選擇Timing,然後在出現的對話框選擇run analysis。會出現下圖所示界面。在這個界面中可以選擇需要分析的pad, net或者是寄存器(Flip-Flop)。這樣工具會給出你選擇的路徑的時序分析報告。

Run Timing Analysis對話框

 

或者不選擇分析的具體內容,而是直接在tools下選擇Timing Analyzer,或者是在Place&Route下選擇Generatepost-Place&Route Static Timing下面的Analyze post-Place&Route Static Timing,都會出現一個以工程頭文件命名的後綴爲twx的一個報告框,這裏面將包含設計的時序信息。

 

 

 

 

 

 

 

 

 

 

 

結論

1、FPGA模塊之間的信號輸入、輸出,在時間允許的情況下,都可以使用寄存器打一拍在使用/或者送到下級模塊。

 

 

 

 

 

參考

作者 博文
1、 FPGA Timing筆記
2、Reborn Lee Vivado 隨筆(6) Timing Summary 相關討論(一)
3、天一涯 在ISE下分析和約束時序
4、  

 

 

 

 

 

 

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