一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Vivado使用教學(xué)設(shè)計(jì)技巧

Xilinx賽靈思官微 ? 來(lái)源:djl ? 作者:周麗娜 ? 2019-07-24 17:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Xilinx 的新一代設(shè)計(jì)套件Vivado中引入了全新的約束文件XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品ISE中支持的UCF大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilinx工具專家告訴你,其實(shí)用好XDC很容易,只需掌握幾點(diǎn)核心技巧,并且時(shí)刻牢記:XDC的語(yǔ)法其實(shí)就是Tcl語(yǔ)言。

XDC的優(yōu)勢(shì)

XDC是Xilinx Design Constraints的簡(jiǎn)寫(xiě),但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng)一的約束規(guī)范SDC(最早由Synopsys公司提出,故名Synopsys Design Constraints)。所以SDC、XDC跟Vivado Tcl的關(guān)系如下圖所示。

Vivado使用教學(xué)設(shè)計(jì)技巧

XDC的主要優(yōu)勢(shì)包括:
統(tǒng)一了前后端約束格式,便于管理;
可以像命令一樣實(shí)時(shí)錄入并執(zhí)行;
允許增量設(shè)置約束,加速調(diào)試效率;
覆蓋率高,可擴(kuò)展性好,效率高;
業(yè)界統(tǒng)一,兼容性好,可移植性強(qiáng);

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

XDC與UCF的最主要區(qū)別有兩點(diǎn):

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

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

XDC的基本語(yǔ)法

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

時(shí)鐘約束

時(shí)鐘約束必須最早創(chuàng)建,對(duì)7系列FPGA來(lái)說(shuō),端口進(jìn)來(lái)的主時(shí)鐘以及GT的輸出RXCLK/TXCLK都必須由用戶使用create_clock自主創(chuàng)建。而衍生時(shí)鐘則分為以下兩類(lèi):

MMCM/PLL/BUFR的輸出時(shí)鐘都可以由Vivado自動(dòng)推導(dǎo),無(wú)需用戶創(chuàng)建。若用戶僅希望改變衍生鐘的名字,其余頻率等都由工具自動(dòng)推導(dǎo),則只需寫(xiě)明三個(gè)option,其余不寫(xiě)即可:create_generated_clock [-name arg] [-source args] [-master_clock arg]

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

I/O約束

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

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

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

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

時(shí)序例外約束

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

Vivado使用教學(xué)設(shè)計(jì)技巧

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

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

Vivado使用教學(xué)設(shè)計(jì)技巧

高效的時(shí)鐘約束

約束最終是為了設(shè)計(jì)服務(wù),所以要用好XDC就需要深入理解電路結(jié)構(gòu)和設(shè)計(jì)需求。接下來(lái)我們就以常見(jiàn)FPGA設(shè)計(jì)中的時(shí)鐘結(jié)構(gòu)來(lái)舉例,詳細(xì)闡述XDC的約束技巧。

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

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

Vivado使用教學(xué)設(shè)計(jì)技巧

Vivado使用教學(xué)設(shè)計(jì)技巧

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

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

Vivado使用教學(xué)設(shè)計(jì)技巧

Vivado使用教學(xué)設(shè)計(jì)技巧

上述例子中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)證了我們的推論。

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

Vivado使用教學(xué)設(shè)計(jì)技巧

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

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

Vivado使用教學(xué)設(shè)計(jì)技巧

其中,-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)過(guò)一個(gè)MUX選擇后輸出的時(shí)鐘,在有多種運(yùn)行模式的設(shè)計(jì)中很常見(jiàn)。

如下圖所示,clk125和clk250是clkcore_buf的兩個(gè)輸入時(shí)鐘,不約束時(shí)鐘關(guān)系的情況下,Vivado會(huì)對(duì)圖示路徑做跨時(shí)鐘域(重疊時(shí)鐘之間)分析。這樣的時(shí)序報(bào)告即便沒(méi)有違例,也是不可信的,因?yàn)閏lk125和clk250不可能同時(shí)驅(qū)動(dòng)這條路徑上的時(shí)序元件。這么做也會(huì)增加運(yùn)行時(shí)間,并影響最終的實(shí)現(xiàn)效果。

Vivado使用教學(xué)設(shè)計(jì)技巧

Vivado使用教學(xué)設(shè)計(jì)技巧

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

Vivado使用教學(xué)設(shè)計(jì)技巧

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

Vivado使用教學(xué)設(shè)計(jì)技巧

其它高級(jí)約束

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    835

    瀏覽量

    68741
  • 時(shí)鐘約束
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6126
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Vivado 實(shí)現(xiàn)

    先給大家簡(jiǎn)單快速地介紹一下 Vivado 集成設(shè)計(jì)環(huán)境,即 IDE。當(dāng)打開(kāi) Vivado 工程后,會(huì)有一個(gè)工程概要,向您介紹工程的設(shè)置、警告和錯(cuò)誤信息以及工程的一般狀態(tài)。
    發(fā)表于 04-25 09:00 ?7033次閱讀

    誰(shuí)有vivado教學(xué)視頻?

    vivado的基礎(chǔ)教程視頻誰(shuí)有啊
    發(fā)表于 04-14 21:58

    Vivado 2017.1和Vivado 2016.4性能對(duì)比分析

    此篇文章里,我們將通過(guò)使用InTime來(lái)檢驗(yàn)Vivado 2017.1和Vivado2016.4之間的性能對(duì)比。 概要:分別進(jìn)行了3個(gè)Vivado 2017.1對(duì)Vivado2016.
    的頭像 發(fā)表于 07-04 11:23 ?1.1w次閱讀
    <b class='flag-5'>Vivado</b> 2017.1和<b class='flag-5'>Vivado</b> 2016.4性能對(duì)比分析

    Vivado獲取License的步驟教程

    無(wú)論此刻你是一個(gè)需要安裝Xilinx Vivado工具鏈的入門(mén)菜鳥(niǎo),還是已有l(wèi)icense過(guò)期的Vivado老鐵,今兒咱就借著這篇文章,把學(xué)習(xí)「Vivado如何獲取License」這檔子事兒給說(shuō)通透咯~ 手把手教程,分三部分講述
    的頭像 發(fā)表于 07-03 09:54 ?6.2w次閱讀
    <b class='flag-5'>Vivado</b>獲取License的步驟教程

    vivado設(shè)計(jì)套件資料

    vivado設(shè)計(jì)套件資料
    發(fā)表于 10-31 09:49 ?44次下載
    <b class='flag-5'>vivado</b>設(shè)計(jì)套件資料

    Tcl在Vivado中的基礎(chǔ)應(yīng)用

    Xilinx的新一代設(shè)計(jì)套件Vivado相比上一代產(chǎn)品ISE,在運(yùn)行速度、算法優(yōu)化和功能整合等很多方面都有了顯著地改進(jìn)。但是對(duì)初學(xué)者來(lái)說(shuō),新的約束語(yǔ)言XDC以及腳本語(yǔ)言Tcl的引入則成為了快速掌握
    發(fā)表于 11-18 03:52 ?5176次閱讀
    Tcl在<b class='flag-5'>Vivado</b>中的基礎(chǔ)應(yīng)用

    xilinx Vivado工具使用技巧

    Vivado Design Suite中,Vivado綜合能夠合成多種類(lèi)型的屬性。在大多數(shù)情況下,這些屬性具有相同的語(yǔ)法和相同的行為。
    發(fā)表于 05-02 10:13 ?4452次閱讀

    關(guān)于Vivado 2019.1的Dashboard功能詳解

    關(guān)于Vivado Dashboard的功能可閱讀這篇文章(Vivado 2018.3這個(gè)Gadget你用了嗎)Vivado 2019.1的Dashboard功能進(jìn)一步增強(qiáng)。
    的頭像 發(fā)表于 06-12 14:49 ?8846次閱讀
    關(guān)于<b class='flag-5'>Vivado</b> 2019.1的Dashboard功能詳解

    使用Vivado License Manager時(shí)Vivado的錯(cuò)誤信息

    Vivado License Manager在使用Vivado License Manager時(shí),如果通過(guò)如下圖所示方式指定license的路徑時(shí),要保證路徑僅包含ASCII字符而沒(méi)有中文字
    的頭像 發(fā)表于 09-12 15:15 ?6659次閱讀

    【FPGA Vivado】基于 FPGA Vivado 的流水燈樣例設(shè)計(jì)

    【流水燈樣例】基于 FPGA Vivado 的數(shù)字鐘設(shè)計(jì)前言模擬前言Vivado 設(shè)計(jì)流程指導(dǎo)手冊(cè)——2013.4密碼:5txi模擬
    發(fā)表于 12-04 13:21 ?26次下載
    【FPGA <b class='flag-5'>Vivado</b>】基于 FPGA <b class='flag-5'>Vivado</b> 的流水燈樣例設(shè)計(jì)

    如何升級(jí)Vivado工程腳本

    Vivado可以導(dǎo)出腳本,保存創(chuàng)建工程的相關(guān)命令和配置,并可以在需要的時(shí)候使用腳本重建Vivado工程。腳本通常只有KB級(jí)別大小,遠(yuǎn)遠(yuǎn)小于工程打包文件的大小,因此便于備份和版本管理。下面把前述腳本升級(jí)到Vivado 2020.2
    發(fā)表于 08-02 10:10 ?2155次閱讀

    用TCL定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程

    今天推出Xilinx已發(fā)布的《Vivado使用誤區(qū)與進(jìn)階》系列:用TCL定制Vivado設(shè)計(jì)實(shí)現(xiàn)流程。
    的頭像 發(fā)表于 05-05 09:44 ?1519次閱讀
    用TCL定制<b class='flag-5'>Vivado</b>設(shè)計(jì)實(shí)現(xiàn)流程

    vivado仿真流程

    vivado開(kāi)發(fā)軟件自帶了仿真工具,下面將介紹vivado的仿真流程,方便初學(xué)者進(jìn)行仿真實(shí)驗(yàn)。
    的頭像 發(fā)表于 07-18 09:06 ?5766次閱讀
    <b class='flag-5'>vivado</b>仿真流程

    Vivado設(shè)計(jì)套件用戶:使用Vivado IDE的指南

    電子發(fā)燒友網(wǎng)站提供《Vivado設(shè)計(jì)套件用戶:使用Vivado IDE的指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 15:25 ?16次下載
    <b class='flag-5'>Vivado</b>設(shè)計(jì)套件用戶:使用<b class='flag-5'>Vivado</b> IDE的指南

    Vivado使用小技巧

    有時(shí)我們對(duì)時(shí)序約束進(jìn)行了一些調(diào)整,希望能夠快速看到對(duì)應(yīng)的時(shí)序報(bào)告,而又不希望重新布局布線。這時(shí),我們可以打開(kāi)布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時(shí)序約束。如果調(diào)整
    的頭像 發(fā)表于 10-24 15:08 ?1003次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧