日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ


XDC的優(yōu)勢

XDC 的主要優(yōu)勢包括:


1. 統(tǒng)一了前后端約束格式,便于管理;

2. 可以像命令一樣實(shí)時(shí)錄入并執(zhí)行;

3. 允許增量設(shè)置約束,加速調(diào)試效率;

4. 覆蓋率高,可擴(kuò)展性好,效率高;

5. 業(yè)界統(tǒng)一,兼容性好,可移植性強(qiáng);


XDC 在本質(zhì)上就是Tcl 語言,但其僅支持基本的Tcl 語法如變量、列表和運(yùn)算符等等,對其它復(fù)雜的循環(huán)以及文件I/O 等語法可以通過在Vivado中source 一個(gè)Tcl 文件的方式來補(bǔ)充。(對Tcl 話題感興趣的讀者可以參考作者的另一篇文章《Tcl 在Vivado 中的應(yīng)用》)XDC 與UCF 的最主要區(qū)別有兩點(diǎn):

1. XDC 可以像UCF 一樣作為一個(gè)整體文件被工具讀入,也可以在實(shí)現(xiàn)過程中被當(dāng)作一個(gè)個(gè)單獨(dú)的命令直接執(zhí)行。這就決定了XDC 也具有Tcl命令的特點(diǎn),即后面輸入的約束在有沖突的情況下會(huì)覆蓋之前輸入的約束(時(shí)序例外的優(yōu)先級(jí)會(huì)在下節(jié)詳述)。另外,不同于UCF 是全部讀入再處理的方式,在XDC 中,約束是讀一條執(zhí)行一條,所以先后順序很重要,例如要設(shè)置IO 約束之前,相對應(yīng)的clock 一定要先創(chuàng)建好。

2. UCF 是完全以FPGA 的視角看問題,所以缺省認(rèn)為所有的時(shí)鐘之間除非預(yù)先聲明是同步的,否則就視作異步而不做跨時(shí)鐘域時(shí)序分析;XDC則恰恰相反,ASIC 世界的血緣背景決定了在其中,所有的時(shí)鐘缺省視作全同步,在沒有時(shí)序例外的情況下,工具會(huì)主動(dòng)分析每一條跨時(shí)鐘域的路徑。



02


XDC的基本語法



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



XDC的基本語法

時(shí)鐘約束必須最早創(chuàng)建。對7 系列FPGA 來說,端口進(jìn)來的時(shí)鐘以及GT 的輸出RXCLK/TXCLK 都必須由用戶使用create_clock 自主創(chuàng)建為主時(shí)鐘。如果是差分輸入的時(shí)鐘,可以僅僅在差分對的P 側(cè)用get_ports獲取端口,并使用create_clock 創(chuàng)建。例如:

Vivado 自動(dòng)推導(dǎo)的衍生時(shí)鐘

MMCM/PLL/BUFR 的輸出作為衍生時(shí)鐘,可以由Vivado 自動(dòng)推導(dǎo),無需用戶創(chuàng)建。自動(dòng)推導(dǎo)的好處在于當(dāng)MMCM/PLL/BUFR 的配置改變而影響到輸出時(shí)鐘的頻率和相位時(shí),用戶無需改寫約束,Vivado 仍然可以自動(dòng)推導(dǎo)出正確的頻率/相位信息。劣勢在于,用戶并不清楚自動(dòng)推導(dǎo)出的衍生鐘的名字,當(dāng)設(shè)計(jì)層次改變時(shí),衍生鐘的名字也有可能改變。這樣就會(huì)帶來一個(gè)問題:用戶需要使用這些衍生鐘的名字來創(chuàng)建I/O 約束、時(shí)鐘關(guān)系或是時(shí)序例外等約束時(shí),要么不知道時(shí)鐘名字,要么時(shí)鐘名字是錯(cuò)的。

推薦的做法是,由用戶來指定這類衍生時(shí)鐘的名字,其余頻率等都由Vivado 自動(dòng)推導(dǎo)。這樣就只需寫明create_generated_clock 的三個(gè)option,其余不寫即可。如上所示。當(dāng)然,此類情況下用戶也可以選擇完全由自己定義衍生時(shí)鐘,只需補(bǔ)上其余表示頻率/相位關(guān)系的option,包括-multiply_by 、-divide_by 等等。需要注意的是,一旦Vivado 在MMCM/PLL/BUFR 的輸出檢測到用戶自定義的衍生時(shí)鐘,就會(huì)報(bào)告一個(gè)Warning,提醒用戶這個(gè)約束會(huì)覆蓋工具自動(dòng)推導(dǎo)出的衍生時(shí)鐘(例外的情況見文章下半段重疊時(shí)鐘部分的描述),用戶須保證自己創(chuàng)建的衍生鐘的頻率等屬性正確。


用戶自定義的衍生時(shí)鐘

工具不能自動(dòng)推導(dǎo)出衍生鐘的情況,包括使用寄存器和組合邏輯搭建的分頻器等,必須由用戶使用create_generated_clock 來創(chuàng)建。舉例如下:


03


I/O約束



在設(shè)計(jì)的初級(jí)階段,可以不加I/O 約束,讓工具專注于滿足FPGA 內(nèi)部的時(shí)序要求。當(dāng)時(shí)序要求基本滿足后,再加上I/O 約束跑實(shí)現(xiàn)。XDC 中的I/O 約束有以下幾點(diǎn)需要注意:

1. 不加任何I/O 約束的端口時(shí)序要求被視作無窮大。

2. XDC 中的set_input_delay / set_output_delay 對應(yīng)于UCF 中OFFSET IN / OFFSET OUT,但視角相反。OFFSET IN / OFFSET OUT 是從FPGA 內(nèi)部延時(shí)的角度來約束端口時(shí)序,set_input_delay /set_output_delay 則是從系統(tǒng)角度來約束。

3. 典型的I/O 時(shí)序,包括系統(tǒng)同步、源同步、SDR 和DDR 等等,在Vivado 圖形界面的XDC templates 中都有示例。2014.1 版后還有一個(gè)Timing Constraints Wizard 可供使用。




04


時(shí)序例外約束



時(shí)序例外約束包括(

set_max_delay/set_min_delay

set_multicycle_pat;

set_false_path 等),

這類約束除了要滿足XDC 的先后順序優(yōu)先級(jí)外,還受到自身優(yōu)先級(jí)的限制。一個(gè)總的原則就是針對同一條路徑,對約束目標(biāo)描述越具體的優(yōu)先級(jí)越高。不同的時(shí)序例外約束以及同一約束中不同條件的優(yōu)先級(jí)如下所示:

舉例來說,依次執(zhí)行如下兩條XDC,盡管第二條較晚執(zhí)行,但工具仍然認(rèn)定第一條約束設(shè)定的15 為clk1到clk2 之間路徑的max delay 值。

再比如,對圖示路徑依次進(jìn)行如下四條時(shí)序例外約束,優(yōu)勝者將是第二條。但如果再加入最后一條約束,false path 的優(yōu)先級(jí)最高,會(huì)取代之前所有的時(shí)序例外約束。


05


高級(jí)時(shí)鐘約束



時(shí)序的零起點(diǎn)

用create_clock 定義的主時(shí)鐘的起點(diǎn)即時(shí)序的“零起點(diǎn)”,在這之前的上游路徑延時(shí)都被工具自動(dòng)忽略。所以主時(shí)鐘創(chuàng)建在哪個(gè)“點(diǎn)”很重要,以下圖所示結(jié)構(gòu)來舉例,分別于FPGA 輸入端口和BUFG 輸出端口創(chuàng)建一個(gè)主時(shí)鐘,在時(shí)序報(bào)告中體現(xiàn)出的路徑延時(shí)完全不同,很明顯sysclk_bad 的報(bào)告中缺少了之前一段的延時(shí),時(shí)序報(bào)告不可信。


時(shí)鐘定義的先后順序

時(shí)鐘的定義也遵從XDC/Tcl 的一般優(yōu)先級(jí),即:在同一個(gè)點(diǎn)上,由用戶定義的時(shí)鐘會(huì)覆蓋工具自動(dòng)推導(dǎo)的時(shí)鐘,且后定義的時(shí)鐘會(huì)覆蓋先定義的時(shí)鐘。若要二者并存,必須使用 -add 選項(xiàng)。

上述例子中BUFG 的輸出端由用戶自定義了一個(gè)衍生鐘clkbufg,這個(gè)衍生鐘便會(huì)覆蓋此處原有的sysclk。此外,圖示BUFR 工作在bypass 模式,其輸出不會(huì)自動(dòng)創(chuàng)建衍生鐘,但在BUFR 的輸出端定義一個(gè)衍生鐘clkbufr,并使用 -add 和 -master_clock 選項(xiàng)后,這一點(diǎn)上會(huì)存在sysclk 和clkbufg 兩個(gè)重疊的時(shí)鐘。如下的Tcl 命令驗(yàn)證了我們的推論。

06


同步時(shí)鐘和異步時(shí)鐘



不同于UCF 約束,在XDC 中,所有的時(shí)鐘都會(huì)被缺省認(rèn)為是相關(guān)的,也就是說,網(wǎng)表中所有存在的時(shí)序路徑都會(huì)被Vivado 分析。這也意味著FPGA 設(shè)計(jì)人員必須通過約束告訴工具,哪些路徑是無需分析的,哪些時(shí)鐘域之間是異步的。

如上圖所示,兩個(gè)主時(shí)鐘ssclkin 和sysclk 由不同的端口進(jìn)入FPGA,再經(jīng)由不同的時(shí)鐘網(wǎng)絡(luò)傳遞,要將它們設(shè)成異步時(shí)鐘,可以使用如下約束:

其中,-include_generated_clocks 表示所有衍生鐘自動(dòng)跟其主時(shí)鐘一組,從而與其它組的時(shí)鐘之間為異步關(guān)系。不加這個(gè)選項(xiàng)則僅僅將時(shí)鐘關(guān)系的約束應(yīng)用在主時(shí)鐘層面。


重疊(單點(diǎn)多個(gè))時(shí)鐘

重疊時(shí)鐘是指多個(gè)時(shí)鐘共享完全相同的時(shí)鐘傳輸網(wǎng)絡(luò),例如兩個(gè)時(shí)鐘經(jīng)過一個(gè)MUX 選擇后輸出的時(shí)鐘,在有多種運(yùn)行模式的設(shè)計(jì)中很常見。Vivado 使用誤區(qū)與進(jìn)階如下圖所示,clk125 和clk250 是clkcore_buf 的兩個(gè)輸入時(shí)鐘,不約束時(shí)鐘關(guān)系的情況下,Vivado 會(huì)對圖示路徑做跨時(shí)鐘域(重疊時(shí)鐘之間)分析。這樣的時(shí)序報(bào)告即便沒有違例,也是不可信的,因?yàn)閏lk125 和clk250 不可能同時(shí)驅(qū)動(dòng)這條路徑上的時(shí)序元件。這么做也會(huì)增加運(yùn)行時(shí)間,并影響最終的實(shí)現(xiàn)效果。

如果clk125 和clk250 除了通過clkcore_buf 后一模一樣的扇出外沒有驅(qū)動(dòng)其它時(shí)序元件,我們要做的僅僅是補(bǔ)齊時(shí)鐘關(guān)系的約束。

在很多情況下,除了共同的扇出,其中一個(gè)時(shí)鐘或兩個(gè)都還驅(qū)動(dòng)其它的時(shí)序元件,此時(shí)建議的做法是在clkcore_buf 的輸出端上創(chuàng)建兩個(gè)重疊的衍生鐘,并將其時(shí)鐘關(guān)系約束為-physically_exclusive 表示不可能同時(shí)通過。這樣做可以最大化約束覆蓋率,也是ISE 和UCF 中無法做到的。




07


其他高級(jí)約束


時(shí)鐘的約束是XDC 的基礎(chǔ),熟練掌握時(shí)鐘約束,也是XDC 約束技巧的基礎(chǔ)。其它高級(jí)約束技巧,包括復(fù)雜的CDC(Clock Domain Crossing)約束接口時(shí)序(SDR、DDR、系統(tǒng)同步接口和源同步接口)約束等方面還有很多值得注意的地方。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉