《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 手把手課堂:Xilinx FPGA設計時序約束指南
手把手課堂:Xilinx FPGA設計時序約束指南
摘要: 作為賽靈思用戶論壇的定期訪客,我注意到新用戶往往對時序收斂以及如何使用時序約束來達到時序收斂感到困惑。為幫助 FPGA設計新手實現時序收斂,讓我們來深入了解時序約束以及如何利用時序約束實現FPGA 設計的最優結果。
Abstract:
Key words :

作為賽靈思用戶論壇的定期訪客,我注意到新用戶往往對時序收斂以及如何使用時序約束來達到時序收斂感到困惑。為幫助 FPGA設計新手實現時序收斂,讓我們來深入了解時序約束以及如何利用時序約束實現FPGA 設計的最優結果。

何為時序約束?

為保證設計的成功,設計人員必須確保設計能在特定時限內完成指定任務。要實現這個目的,我們可將時序約束應用于連線中——從某 FPGA 元件到 FPGA 內部或 FPGA 所在 PCB 上后續元件輸入的一條或多條路徑。

在 FPGA 設計中主要有四種類型的時序約束:PERIOD、OFFSET IN、OFFSET OUT 以及 FROM: TO(多周期)約束。

PERIOD 約束與建組

每個同步設計要有至少一個PERIOD 約束(時鐘周期規格),這是最基本的約束類型,指定了時鐘周期及其占空比。若設計中有不止一個時鐘,則每個時鐘都有自己的 PERIOD 約束。PERIOD約束決定了我們如何進行布線,來滿足設計正常工作的時序要求。

為簡化時序約束應用過程,常常可將具有類似屬性的連線分組為一組總線或一組控制線。這樣做有助于完成正確為設計約束定義優先級這一關鍵步驟。

設計約束優先次序排列

若設計有多重約束,則需進行優先次序排列。一般來說,約束的一般性越強,其優先級越低。相反,約束的針對性越強,其優先級越高。舉例來說,時鐘網絡上的某個一般性 PERIOD 約束將被特定網絡的具有更高優先級的 FROM: TO 約束所覆蓋。

特定 FROM: TO(或 FROM: THRU:TO)約束在時鐘域內任意網絡中的重要性均高于一般性約束。

為便于進行約束的優先級排列,可運行賽靈思時序分析器(ISE® Design Suite中的靜態時序分析工具),并生成時序規格迭代報告,即常說的 .tsi 報告。該報告說明了各約束間是如何迭代的,以及該工具如何為各約束設置默認優先級。
采用 PRIORITY 約束關鍵詞可手動設置任一時序約束的優先級并使其優先于默認的或預先設定的優先級。這對同一路徑上的兩個或多個時序約束發生沖突時尤為有用。這里的優先級指的是同一路徑上有兩個或多個時序約束時,該應用哪一個。其余的低優先級約束則被忽略。優先級可在 -10 ~ +10 的范圍內設置。

PRIORITY 值越低,優先級越高。注意該值不會影響到哪些路徑應率先布局和走線,只有當優先級相同的兩個約束出現在同一路徑上時,它才會影響由哪個約束控制該路徑。

下面將以 PERIOD 只控制從同步元件到同步元件之間的網絡,如 FFS 到FFS 為例來進一步介紹(約束以藍色顯示如下):

創建名為 tnm_clk20 的 TIMEGRP(時序分組),包含網絡 clk20 驅動的所有下游同步組件。這些同步元件間的所有路徑均受時序規格“TS_clk20: 20ns”(同步元件到同步元件 20 納秒的時間要求)的約束。“HIGH 50%”指 clk20 的占空比為50/50。

在第二個例子中,我們使用 FROM:TO 約束來定義對兩個分組間路徑的要求,即:

該命令的作用是告知工具,確保數據從時序分組“my_from_grp”包含的元件到“my_to_grp”的元件所用時間為 40納秒。時序分析器仍將計算從源分組到目標分組的時鐘偏移,不過若時鐘關聯,則優先級較低。也可使用如下預定義分組:

若不選定時間單位(納秒、皮秒等),則工具將自動默認為納秒。例如,可這樣寫約束:

也可只寫From 或 只寫To ,以使其更具一般性:

如前所述,工具將自動默認上文所述所有 FROM: TO 約束的優先級高于PERIOD 約束,除非另有規定。

詳細查看 .tsi 報告

除幫助查看時序約束迭代外,.tsi 報告還就如何改進通用約束文件 (UCF) 中的約束提供方法建議。該報告還會告知是否有路徑受多重時鐘域的約束。下面是約束迭代報告的例子:

在本例中,高優先級的 FROM: TO約束(僅一個)將優先于 PERIOD 約束應用。

建立和保持

在實際的同步數字系統中,數據必須先于進行采樣的時鐘脈沖邊沿到達。達到這一目標所需的最短時間稱為“建立時間”。除了先于時鐘脈沖邊沿到達外,數據必須在時鐘脈沖邊沿保持一定時間,這一時間稱為“保持時間”。保持時間可
以為負,此時數據在時鐘脈沖邊沿到達前便已結束;可以為零,此時數據保持到時鐘脈沖邊沿采樣;也可為正,此時數據保持到時鐘脈沖邊沿采樣完畢后一段時間。

根據設計,在 FPGA 架構中,對所有速度等級,保持時間均不為正(或零或負)。這樣可簡化布局和布線,因數據只
需先于時鐘脈沖邊沿到達,并可在時鐘脈沖邊沿采樣發生后即刻發生變化。數據超出最小建立時間的值稱為時序裕量。時序裕量應總是為正。若報告上出現時序裕量負值,則說明建立時序尚未得到充分滿足,數據到達太遲。

時鐘路徑本身也有延遲或偏移。因此,要分析時序,工具需計算出數據和時鐘到達所分析觸發器的時間。

約束違例的簡便補救辦法

重申一下:PERIOD 約束定義的是觸發器等同步元件的時鐘周期。可使用時序分析器來驗證同步元件之間的所有路徑是否滿足設計的建立和保持時序要求。PERIOD 約束違例將以負的時序裕量顯示在在時序報告,并說明到底是建立時間還是保持時間要求出現違例。所以若報告顯示發生了建立時間違例時該作何處理?應找出兩個所分析的同步元件間一條較快路徑,或至少是某種方法來確保數據在合適時間內到達并保持足夠長的時間,以便時鐘脈沖邊沿能夠正確采樣。若布局布線軟件無法找到更快的路徑,則可從 FPGA Editor 工具中手動進行布線。

不過這是最后的手段。在弄清楚不用它如何解決問題之前,請盡量不要使用這種方法。只使用 FPGA Editor 查看底層結構“知其所以然”,了解工具對設計的所做的處理,以達到讓設計恰當的使用FPGA 資源來實現的目的。首先試試重構電路來滿足設計的時序要求。一個比較簡單的方法就是在路徑上及早布置一個觸發器。該技術即為流水線,它會增加信號的延遲,不過也可使信號值得到正確地采樣。

若出現保持時間違例(數據在時鐘脈沖邊沿到來之前便已結束),則往往說明存在設計問題(架構不良)。數值只能
在時鐘脈沖邊沿發生變化,而不是之前。

若外部信號值在時鐘脈沖邊沿之前發生變化,則需使用 DCM 或 PLL 延遲時鐘脈沖邊沿,這樣數據才能由新的延遲時鐘正確采樣。

有一種替代方法,就是在輸入/ 輸出模塊中使用 IDELAY 元件,將數據移到時鐘有效的位置上。

數據有效窗口與亞穩態時鐘脈沖邊沿之前的時間(建立)加上時鐘脈沖邊沿之后的時間(保持)即為“數據有效窗口”,也就是數據保持穩定,以進行正常采樣的時間。若數據在此期間沒有保持有效,則結果存在不確定性,或不可知。

不過,數據的有效時間未達到規定的長度,并不意味著觸發器輸出為亞穩態。亞穩態不同于不確定。若不能滿足時序要求,則輸出可能為隨機的 1 或 0。亞穩態是指時鐘脈沖邊沿“幾乎”能進行狀態采集,而觸發器輸出則在時鐘脈沖邊沿之后的一段時間內處于某種中間狀態(非 1 非 0)。亞穩態無法避免,因其為時鐘脈沖邊沿和數據幾乎完全“錯過”時的電路物理狀態。

在設計合理的同步系統中,亞穩態不是什么問題。當出現異步情況(如敲擊鍵盤上的一個鍵)或當兩個同步時鐘彼此異步時,亞穩態就會成為問題。一般而言,若出現異步情況,則需進行同步處理。

關于如何處理亞穩態的情況,這里有篇不錯的專題文章: http://www.stanford.edu/class/ee183/handouts_
spr2003/synchronization_pres.pdf 。(要深入了解亞穩態,請查看本期第二篇文章 FPGA101)

傳輸時間與 OFFSET 約束

信號從 A 點到達 B 點所用的時間稱為傳輸時間。它取決于傳輸介質中光傳播的速度。例如,PCB 電路板上的走線以 6~7 皮秒/ 毫米來傳輸信號。可采用多種方法來確定這一時間值,例如進行仿真,或在材料介電常數與走線幾何結構已知的情況下,列方程求解。在芯片內,信號的行為方式也很類似,不過也會因通過緩存器、反相器、邏輯和互聯等有
源電路而發生延遲。

傳輸時間是可測量的,通常用示波器來測量。當路徑上無有源元件時,傳輸時間一般不會有太大變化。若路徑在芯片內,則晶體管的作用會使路徑延遲在最大值與最小值之間變化。設計需同時滿足二者的時序要求。

為告訴工具數據何時到達特定位置,需使用另一種名為“OFFSET_IN”的約束。“OFFSET_IN”約束在時鐘和數據進入器件時,對其關系進行了定義。以如下約束為例:

該約束告知工具,數據將在 clk20 脈沖上升沿之前 2 納秒建立在 PAD 上,并在到達后 16 納秒內保持有效。該約束只對那些進入由 clk20 或其衍生(衍生約束)提供時鐘的寄存器的 PAD 有效。

OFFSET 要求在 clk20 上有一個PERIOD 約束,這樣才能理解時鐘結構。如下這樣也可接受:

不過,該約束不會檢查保持時間,因不清楚數據何時會從 FPGA 的引腳結束。若數據在時鐘脈沖邊沿 2 納秒之后才建立,則使用如下方案:

OFFSET_IN 適用于進入器件的時鐘與數據之間的關系,另一種常見的OFFSET_OUT 約束定義時鐘在 FPGA 輸入處發生跳變后數據離開器件所需的時間。以下為常見的 OFFSET_OUT 用法:

該約束告知工具,需確保輸入時鐘在 FPGA 輸入跳變后 3 納秒時長后,數據出現在 FPGA 的輸出引腳上。該約束僅應用于由 clk20 或其衍生(衍生約束)提供時鐘的寄存器驅動的 PAD。OFFSET 要求在 clk20 上有 PERIOD 約束,這樣才能理解時鐘結構。保持時間不受 OFFSET_OUT 的約束。

若需要數據在時鐘脈沖邊沿前 2 納秒到達FPGA 輸出,則使用:

分組與分組名稱

時間分組是用來識別對于同步元件間的路徑集或連線集的約束的一種方式。向時序分組添加組件,應使用 TNM、TNM_NET 或 TIMEGRP。

通過定義分組并給定分組之間的時序要求,可對路徑進行約束。部分約束不需要時序分組,如 NET MAXDELAY。這一最大延遲 (MAXDELAY) 屬性定義了一條連線上允許的最大延遲。

時序名稱

向用戶定義的分組添加組件,可這樣處理:

在此,“TNM”為保留字,用于定義時序分組的名稱。

在這種情況下,object_name 為帶分組元件或信號的名稱,predefined_group 為可選關鍵詞,標示符可以是字母、數字和下劃線的任意組合。不能使用諸如 FFS、LATCHES 或RAMS 這樣的保留字。該變量對大小寫敏感。(TNM=abc 不等于 TNM=ABC)。

可將 TNM 應用于任何連線、元件引腳、原語或宏。組件可加入一個以上的分組。例如,my_ffs_group TNM 中可含有 my_ff組件。同樣,my_ffs_group2 TNM 也可包含 my_ff 組件。要創建分組,請使用:

為時序目的,可在分組中包含任何關鍵詞元件。在本例中,NET CLOCK可追溯到觸發器 (FFS)。這些觸發器使用名稱 clk_group 進行時序命名 (TNM)。然后,clk_group 就可以在TIMESPECS中使用了。也可使用實例創建分組,如:

在 macro1 宏中的所有 LATCHES都放在名為 latchgroup 的分組中。類似的,在約束“INST mymac TNM=RAMS memories”中,所有 mymac 宏中的RAMS 都將放在稱為 memories 的分組中。且在以下約束中:

所有在 t e s t e r 宏中的 PADS、LATCHES、RAMS 及 FFS 都將放在名為 coverall 的分組中。相關的約束指南將包含完整的預定義分組列表。

簡潔至上

一般而言,約束的數量越少越好。復雜的約束引發的問題往往比解決的要多。另外,部分路徑或網絡是非關鍵性的,可對這些網絡不使用約束。TIG(時序忽略)約束用于清除對無需關注的路徑,或從虛假路徑上移除約束。以下為常見 TIG:

這條約束告知工具無需約束該路徑。這條的作用很重要,它可使工具不必在不關注的路徑上花費精力去滿足時序要求。在時序約束時忽略此路徑可縮短工具運行時間,提升所關注的路徑上的時序質量。也可搭配“FROM: TO”約束來使用“TIG”,如下所示:

賽靈思有大量寶貴的關于時序約束的資源,其中最值得一讀的,我已在以下參考文獻中列出。若您有更深入的問題,請隨時與我聯系。我邀請您參加賽靈思社區論壇,該論壇可為 您的一些FPGA 設計中最棘手的問題提供充分的解答。

參考文獻:
《約束指南》:UCF、PCF、HDL 約束語法, http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/
cgd.pdf 。

《時序約束用戶指南》:如何約束設計的概念信息, http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ug612.pdf 。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美精品一线| 好吊日精品视频| 久久久亚洲欧洲日产国码αv| 亚洲视频你懂的| 亚洲免费久久| 亚洲精品偷拍| 亚洲清纯自拍| 亚洲精美视频| 91久久综合亚洲鲁鲁五月天| 亚洲国产精品久久久久婷婷老年 | 欧美在线视屏| 亚洲你懂的在线视频| 亚洲天堂成人在线观看| 一区二区三区欧美视频| 国产精品99久久99久久久二8| aa亚洲婷婷| 亚洲视频免费看| 亚洲影院高清在线| 亚洲欧美日韩成人| 午夜精品婷婷| 欧美在线精品免播放器视频| 欧美影院在线播放| 亚洲国产中文字幕在线观看| 亚洲经典三级| 99伊人成综合| 亚洲综合国产激情另类一区| 性久久久久久久久久久久| 欧美伊人精品成人久久综合97| 欧美亚洲视频在线观看| 久久爱www| 麻豆精品一区二区综合av| 欧美成人69| 欧美精品三级| 欧美三级小说| 国产精品一区一区三区| 狠狠入ady亚洲精品| 亚洲国产天堂久久综合| 妖精成人www高清在线观看| 亚洲综合电影| 亚洲国产专区校园欧美| 一区二区不卡在线视频 午夜欧美不卡' | 久久国产日韩欧美| 亚洲全黄一级网站| 中日韩男男gay无套| 欧美在线视频免费| 欧美88av| 国产精品看片你懂得| 韩国v欧美v日本v亚洲v| 最新国产の精品合集bt伙计| 一区二区三区成人| 久久国产日韩| 亚洲视频视频在线| 久久久免费观看视频| 欧美精品性视频| 国产欧美一区二区精品忘忧草| 精品成人在线观看| 在线综合+亚洲+欧美中文字幕| 性欧美大战久久久久久久久| 亚洲国产精品www| 亚洲嫩草精品久久| 蜜桃久久av一区| 国产精品家庭影院| 亚洲国产91色在线| 亚洲男人的天堂在线| 亚洲理伦在线| 欧美一级网站| 欧美精品三级| 国语自产精品视频在线看一大j8 | 久久国产欧美精品| 欧美紧缚bdsm在线视频| 国产婷婷色一区二区三区| 亚洲精品欧美日韩专区| 久久爱另类一区二区小说| 一本色道久久加勒比88综合| 久久久久久久网| 欧美日韩一二三区| 在线观看91精品国产麻豆| 亚洲综合色婷婷| 在线午夜精品| 免费国产自线拍一欧美视频| 国产精品夜夜嗨| 亚洲精品久久久久久久久久久久| 亚洲欧美日韩精品| 一本色道88久久加勒比精品 | 亚洲无限av看| 夜夜狂射影院欧美极品| 麻豆久久婷婷| 国产亚洲精品aa午夜观看| 日韩一级裸体免费视频| 亚洲激情专区| 久久频这里精品99香蕉| 国产精品视频不卡| 一本高清dvd不卡在线观看| 亚洲精品免费观看| 久久日韩精品| 国产亚洲一区在线| 亚洲一区二区三区午夜| 亚洲图片你懂的| 欧美日本一区| 亚洲电影中文字幕| 久久成年人视频| 欧美一区=区| 国产精品一区2区| 在线视频欧美日韩| 夜夜嗨一区二区三区| 欧美国产1区2区| 在线免费观看日本欧美| 久久国产视频网站| 久久精品一区二区| 国产精品一区二区三区观看| 中文国产一区| 亚洲影院免费观看| 欧美三区美女| 日韩一级片网址| 亚洲午夜精品久久久久久app| 欧美欧美在线| 91久久黄色| 99精品免费网| 欧美日韩一区二区三| 99视频在线观看一区三区| 中文在线资源观看网站视频免费不卡 | 暖暖成人免费视频| 亚洲第一福利在线观看| 亚洲欧洲一区| 欧美精品一区视频| 亚洲毛片一区| 亚洲午夜羞羞片| 国产精品久久久久久久久久久久久久 | 午夜在线精品偷拍| 久久国产精品亚洲77777| 国产偷久久久精品专区| 香蕉尹人综合在线观看| 久久国产黑丝| 红杏aⅴ成人免费视频| 亚洲国产精品久久久久久女王| 农村妇女精品| 亚洲精品婷婷| 亚洲手机成人高清视频| 国产精品福利片| 午夜久久美女| 免费成人高清视频| 亚洲精品激情| 亚洲一区黄色| 国产午夜精品麻豆| 亚洲激情欧美| 欧美日韩国产免费| 亚洲女优在线| 老司机一区二区三区| 亚洲国产婷婷| 亚洲欧美日韩区| 韩国精品久久久999| 亚洲清纯自拍| 国产精品福利在线观看网址| 午夜亚洲激情| 欧美福利在线| 亚洲午夜精品17c| 久久综合网hezyo| 99国产精品99久久久久久粉嫩 | 欧美日韩在线播放| 午夜免费电影一区在线观看| 美女脱光内衣内裤视频久久影院 | 欧美jizz19性欧美| 99视频精品全国免费| 久久精品国产在热久久 | 久久久www| 最近中文字幕日韩精品| 亚洲一区亚洲二区| 黑人一区二区三区四区五区| 亚洲另类自拍| 国产乱码精品一区二区三区忘忧草 | 亚洲人成人一区二区在线观看| 亚洲欧美视频在线| 在线观看一区二区精品视频| 亚洲专区国产精品| 极品av少妇一区二区| 亚洲天堂男人| 伊人影院久久| 午夜国产欧美理论在线播放| 精品9999| 欧美亚洲综合在线| 亚洲国产欧美国产综合一区| 小辣椒精品导航| 亚洲精品国产精品久久清纯直播| 欧美有码在线观看视频| 最近看过的日韩成人| 久久精品国产综合精品| 99精品久久免费看蜜臀剧情介绍| 久久综合狠狠| 亚洲免费在线电影| 欧美久久一区| 久久国产夜色精品鲁鲁99| 国产精品久久久久久久久久妞妞| 免费成人黄色av| 日韩一级视频免费观看在线| 久久激情婷婷| 一区二区高清在线| 久久综合激情| 午夜性色一区二区三区免费视频| 欧美日韩国产小视频在线观看| 久久国产视频网|