Vivado使用誤區與進階 XDC約束技巧——時鐘篇__FPGA

來源:互聯網
上載者:User

轉自http://www.globalicnet.com/bbs/question/detail_3102.html

Xilinx 的新一代設計套件Vivado中引入了全新的約束檔案XDC,在很多規則和技巧上都跟上一代產品ISE中支援的UCF大不相同,給使用者帶來許多額外挑戰。Xilinx工具專家告訴你,其實用好XDC很容易,只需掌握幾點核心技巧,並且時刻牢記:XDC的文法其實就是Tcl語言。

 

XDC的優勢

XDC是Xilinx Design Constraints的簡寫,但其基礎文法來源於業界統一的約束規範SDC(最早由Synopsys公司提出,故名Synopsys Design Constraints)。所以SDC、XDC跟Vivado Tcl的關係如下圖所示。

   

XDC的主要優勢包括: 統一了前後端約束格式,便於管理;  可以像命令一樣即時錄入並執行;  允許增量設定約束,加速調試效率;  覆蓋率高,可擴充性好,效率高;  業界統一,相容性好,可移植性強;

 

        XDC在本質上就是Tcl語言,但其僅支援基本的Tcl文法如變數、列表和運算子等等,對其它複雜的迴圈以及檔案I/O等文法可以通過在Vivado中source一個Tcl檔案的方式來補充。(對Tcl話題感興趣的讀者可以參考作者的另一篇文章《Tcl在Vivado中的應用》)

XDC與UCF的最主要區別有兩點: XDC可以像UCF一樣作為一個整體檔案被工具讀入,也可以在實現過程中被當作一個個單獨的命令直接執行。這就決定了XDC也具有Tcl命令的特點,即後面輸入的約束在有衝突的情況下會覆蓋之前輸入的約束(時序例外的優先順序會在下節詳述)。另外,不同於UCF是全部讀入再處理的方式,在XDC中,約束是讀一條執行一條,所以先後順序很重要,例如要設定IO約束之前,相對應的clock一定要先建立好。 UCF是完全以FPGA的視角看問題,所以預設認為所有的時鐘之間除非預先聲明是同步的,否則就視作非同步而不做跨時鐘域時序分析;XDC則恰恰相反,ASIC世界的血緣背景決定了在其中,所有的時鐘預設視作全同步,在沒有時序例外的情況下,工具會主動分析每一條跨時鐘域的路徑。

XDC的基本文法

        XDC的基本文法可以分為時鐘約束、I/O約束以及時序例外約束三大類。根據Xilinx的UltraFast設計方法學中Baseline部分的建議(UG949中有詳細介紹),對一個設計進行約束的先後順序也可以依照這三類約束依次進行。本文對可以在協助文檔中查到的基本XDC文法不做詳細解釋,會將重點放在使用方法和技巧上。

時鐘約束

        時鐘約束必須最早建立,對7系列FPGA來說,連接埠進來的主時鐘以及GT的輸出RXCLK/TXCLK都必須由使用者使用create_clock自主建立。而衍生時鐘則分為以下兩類: MMCM/PLL/BUFR的輸出時鐘都可以由Vivado自動推導,無需使用者建立。若使用者僅希望改變衍生鐘的名字,其餘頻率等都由工具自動推導,則只需寫明三個option,其餘不寫即可:create_generated_clock [-name arg] [-source args] [-master_clock arg]  工具不能自動推匯出衍生鐘的情況,包括使用寄存器和組合邏輯搭建的分頻器等,必須由使用者使用create_generated_clock來建立。

I/O約束

        在設計的初級階段,可以不加I/O約束,讓工具專註於滿足FPGA內部的時序要求。當時序要求基本滿足後,再加上I/O約束跑實現。XDC中的I/O約束有以下幾點需要注意: 不加任何I/O約束的連接埠時序要求被視作無窮大。  XDC中的set_input_delay / set_output_delay對應於UCF中OFFSET IN / OFFSET OUT,但視角相反。OFFSET IN / OFFSET OUT是從FPGA內部延時的角度來約束連接埠時序,set_input_delay / set_output_delay則是從系統角度來約束。  典型的I/O時序,包括系統同步、源同步、SDR和DDR等等,在Vivado圖形介面的XDC templates中都有樣本。2014.1版後還有一個Timing Constraints Wizard可供使用。

時序例外約束

        時序例外約束包括set_max_delay/set_min_delay,set_multicycle_path,set_false_path等,這類約束除了要滿足XDC的先後順序優先順序外,還受到自身優先順序的限制。一個總的原則就是針對同一條路徑,對約束目標描述越具體的優先順序越高。不同的時序例外約束以及同一約束中不同條件的優先順序如下所示:

 舉例來說,依次執行如下兩條XDC,儘管第二條最後執行,但工具仍然認定第一條約束設定的15為clk1到clk2之間路徑的max delay值。

再比如,對圖示路徑依次進行如下四條時序例外約束,優勝者將是第二條。但如果再加入最後一條約束,false path的優先順序最高,會取代之前所有的時序例外約束。

 

高效的時鐘約束

約束最終是為了設計服務,所以要用好XDC就需要深入理解電路結構和設計需求。接下來我們就以常見FPGA設計中的時鐘結構來舉例,詳細闡述XDC的約束技巧。

時序的零起點

用create_clock定義的主時鐘的起點即時序的“零起點”,在這之前的上遊路徑延時都被工具自動忽略。所以主時鐘建立在哪個“點”很重要,以下圖所示結構來舉例,分別於FPGA輸入連接埠和BUFG輸出連接埠建立一個主時鐘,在時序報告中體現出的路徑延時完全不同,很明顯sysclk_bad的報告中缺少了之前一段的延時,時序報告不可信。

時鐘定義的先後順序

時鐘的定義也遵從XDC/Tcl的一般優先順序,即:在同一個點上,由使用者定義的時鐘會覆蓋工具自動推導的時鐘,且後定義的時鐘會覆蓋先定義的時鐘。若要二者並存,必須使用 -add 選項。

 

      上述例子中BUFG的輸出端由使用者自訂了一個衍生鐘clkbufg,這個衍生鐘便會覆蓋此處原有的sysclk。此外,圖示BUFR工作在bypass模式,其輸出不會自動建立衍生鐘,但在BUFR的輸出端定義一個衍生鐘clkbufr,並使用-add 和 -master_clock 選項後,這一點上會存在sysclk和clkbufg兩個重疊的時鐘。如下的Tcl命令驗證了我們的推論。

同步時鐘和非同步時鐘

  不同於UCF約束,在XDC中,所有的時鐘都會被預設認為是相關的,也就是說,網表中所有存在的時序路徑都會被Vivado分析。這也意味著FPGA設計人員必須通過約束告訴工具,哪些路徑是無需分析的,哪些時鐘域之間是非同步。

如上圖所示,兩個主時鐘ssclkin和sysclk由不同的連接埠進入FPGA,再經由不同的時鐘網路傳遞,要將它們設成非同步時鐘,可以使用如下約束:

 其中,-include_generated_clocks 表示所有衍生鐘自動跟其主時鐘一組,從而與其它組的時鐘之間為非同步關係。不加這個選項則僅僅將時鐘關係的約束應用在主時鐘層面。

重疊(單點多個)時鐘

 重疊時鐘是指多個時鐘共用完全相同的時鐘傳輸網路,例如兩個時鐘經過一個MUX選擇後輸出的時鐘,在有多種運行模式的設計中很常見。

如下圖所示,clk125和clk250是clkcore_buf的兩個輸入時鐘,不約束時鐘關係的情況下,Vivado會對圖示路徑做跨時鐘域(重疊時鐘之間)分析。這樣的時序報告即便沒有違例,也是不可信的,因為clk125和clk250不可能同時驅動這條路徑上的時序元件。這麼做也會增加已耗用時間,並影響最終的實現效果。

 如果clk125和clk250除了通過clkcore_buf後一模一樣的扇出外沒有驅動其它時序元件,我們要做的僅僅是補齊時鐘關係的約束。

在很多情況下,除了共同的扇出,其中一個時鐘或兩個都還驅動其它的時序元件,此時建議的做法是在clkcore_buf的輸出端上建立兩個重疊的衍生鐘,並將其時鐘關係約束為-physically_exclusive 表示不可能同時通過。這樣做可以最大化約束覆蓋率,也是ISE和UCF中無法做到的。

其它進階約束

時鐘的約束是XDC的基礎,熟練掌握時鐘約束,也是XDC約束技巧的基礎。其它進階約束技巧,包括複雜的CDC(Clock Domain Crossing)約束和介面時序(SDR、DDR、系統同步介面和源同步介面)約束等方面還有很多值得注意的地方。

本文轉載 - XILINX SHANGHAI ,ALLY ZHOU

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.