161
技術社區[雲棲]
在ISE下分析和約束時序
1. 在ISE下分析和約束時序
3.1 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的約束。它約束的是輸出端口信號與參考時鍾有效邊沿之間的延時關係。其數值需要查閱下一級芯片輸入數據時鍾的建立關係及電路板上時鍾,信號線延時關係計算獲得。
約束了設計中使用的時鍾,同時約束了輸入輸出端口的時序之後,整個設計的約束就是完整的。但完整的約束不一定是正確的,過於嚴格的約束會擠占布局布線的資源從而造成無法進行最優布線。所以還需要對一些不必要的,過於嚴格的約束進行時序例外的聲明。這些讀者可以通過嚐試軟件工具及閱讀軟件用戶手冊來學習。
保存了設置的時序後,在工程目錄下的Ucf文件將進行更新,最新設置的時序結果將以文本形式體現在ucf文件中,例如以下字段:
#Created by Constraints Editor (xc5vsx50t-ff1136-3) -2011/09/04
NET "clk" TNM_NET = clk;
TIMESPEC TS_clk = PERIOD "clk" 20 ns HIGH50%;
NET "bu" OFFSET = IN 2 ns VALID 20 ns BEFORE"clk" RISING;
這些不僅包括了時序約束,還以注釋的形式將約束生成的日期以及針對的器件型號列出了。設計者甚至可以通過編輯修改這裏的文本來快速修改時序約束。
生成的ucf已經是在工程下了。添加了約束後XST工具不需要重新運行,但是ImplementDesign下每一步都需要重新執行。重新執行時,便是在我們設置的約束下進行映射及布局布線了。
下麵是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工具約束輸入端口時序是一致的。可見這個工具會更加簡潔。
3.2 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的一個報告框,這裏麵將包含設計的時序信息。
Timing summary:
---------------
Timing errors: 0 Score: 0 (Setup/Max: 0, Hold: 0)
Constraints cover xxx paths, xx nets, and xx connections
Minimum period: xxx ns{1} (Maximum frequency: xxx MHz)
從這個報告一眼可以看出是否會存在時序錯誤,以及錯誤路徑數量。還包括時序約束信息覆蓋的路徑,網絡以及連接關係,最後是最小周期,同時計算出該設計最高能夠正確運行的頻率。
在Timing constraints下,能夠看到設計的一些時序約束信息,並且給每一條約束進行對應的分析,給出報告看是否能夠滿足約束。
典型摘錄下來的一段如下:
Paths for end point cnt_21(SLICE_X24Y43.CIN), 20 paths
--------------------------------------------------------------------------------
Slack (setup path): 18.421 ns (requirement - (data path -clock path skew + uncertainty))
Source: cnt_0 (FF)
Destination: cnt_21 (FF)
Requirement: 20.000ns
Data Path Delay: 1.404ns (Levels of Logic = 6)
Clock Path Skew: -0.140ns (1.095 - 1.235)
Source Clock: clk_BUFGPrising at 0.000ns
Destination Clock: clk_BUFGP rising at 20.000ns
Clock Uncertainty: 0.035ns
Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.070ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.000ns
Phase Error (PE): 0.000ns
Maximum Data Path: cnt_0 to cnt_21
Location Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- -------------------
SLICE_X24Y38.AQ Tcko 0.346 cnt<3>
cnt_0
SLICE_X24Y38.A4 net (fanout=1) 0.278 cnt<0>
SLICE_X24Y38.COUT Topcya 0.384 cnt<3>
Mcount_cnt_lut<0>_INV_0
Mcount_cnt_cy<3>
SLICE_X24Y39.CIN net (fanout=1) 0.000 Mcount_cnt_cy<3>
SLICE_X24Y39.COUT Tbyp 0.082 cnt<7>
Mcount_cnt_cy<7>
SLICE_X24Y40.CIN net (fanout=1) 0.000 Mcount_cnt_cy<7>
SLICE_X24Y40.COUT Tbyp 0.082 cnt<11>
Mcount_cnt_cy<11>
SLICE_X24Y41.CIN net (fanout=1) 0.000 Mcount_cnt_cy<11>
SLICE_X24Y41.COUT Tbyp 0.082 cnt<15>
Mcount_cnt_cy<15>
SLICE_X24Y42.CIN net (fanout=1) 0.000 Mcount_cnt_cy<15>
SLICE_X24Y42.COUT Tbyp 0.082 cnt<19>
Mcount_cnt_cy<19>
SLICE_X24Y43.CIN net (fanout=1) 0.000 Mcount_cnt_cy<19>
SLICE_X24Y43.CLK Tcinck 0.068 cnt<22>
Mcount_cnt_xor<22>
cnt_21
------------------------------------------------- ---------------------------
Total 1.404ns (1.126ns logic, 0.278ns route)
(80.2% logic, 19.8% route)
該報告分析了從cnt_0到 cnt_21的路徑中延時最大的一條。列出了數據傳遞路徑上的每一步通過的邏輯單元的延時,最後計算出數據路徑總的延時,然後給出時鍾路徑的間隙,按照公式:
Slack(setup path): (requirement - (data path - clock path skew + uncertainty))
計算出該路徑的建立時間裕度。該報告甚至還給出了時鍾不確定性的統計公式。裕度(slack)為正值表明時序沒有違例。
分析報告會按照時序約束一一對應給出分析結果。如果存在不滿足的約束,就會在對應的約束上畫上紅色的叉,並且將出錯約束的路徑裏麵slack最優的路徑和最差的路徑快捷列出,方便設計者查看。如下圖所示,即為約束不能滿足時的報告。
圖 時序約束不滿足時的報告
我們注意到,在時序報告中存在大量藍色的帶下劃線的字體,他們都是時序分析路徑上部件或者路徑的快速鏈接。雙擊或者在右擊他們出現的對話框中選擇show in FPGAEditor,如果FPGA Editor工具開啟,將自動鏈接到FPGA Editor工具下顯示對應的邏輯單元或者路徑,並且將其標紅,設計者可以在FPGA Editor下查看該路徑的布線情況,及在FPGA內部的位置。如下圖所示:
圖 FPGA Editor將時序報告的路徑標紅顯示
如果精通FPGA Editor工具,還可以對路徑進行手動修改。
當然,ISE的時序約束以及分析工具還遠不止本書中的內容,而且這些功能在隨著軟件改版飛速改進。設計者在學習了第一節中時序分析原理之後,就能夠對各種時序分析工具有一定的預期。在需要使用這些工具時,還需要不斷地查找help以及Xilinx的User Guide文檔,一邊用一邊學。
對比兩家公司的時序約束和分析工具,作者覺得目前Altera的TimeQuest工具功能更加集中,且界麵對用戶更加友好容易上手;而Xilinx的ISE12.3版本下約束時序的工具則顯得較為雜亂,但兩者的時序分析報告都非常詳盡,並且兩家公司的時序分析工具仍然處於快速改進當中,這也間接說明了時序分析在未來FPGA設計中的重要性。
最後更新:2017-04-03 05:39:51