FPGA時(shí)鐘約束技巧_第1頁(yè)
FPGA時(shí)鐘約束技巧_第2頁(yè)
FPGA時(shí)鐘約束技巧_第3頁(yè)
FPGA時(shí)鐘約束技巧_第4頁(yè)
FPGA時(shí)鐘約束技巧_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Page XDC約束技巧之時(shí)鐘篇Xilinx的新一代設(shè)計(jì)套件Vivado中引入了全新的約束文件XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品ISE中支持的UCF大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilinx工具專(zhuān)家告訴你,其實(shí)用好XDC很容易,只需掌握幾點(diǎn)核心技巧,并且時(shí)刻牢記:XDC的語(yǔ)法其實(shí)就是Tcl語(yǔ)言。XDC的優(yōu)勢(shì)XDC是XilinxDesignConstraints的簡(jiǎn)寫(xiě),但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng)一的約束規(guī)范SDC(最早由Synopsys公司提出,故名SynopsysDesignConstraints)。所以SDC、XDC跟VivadoTcl的關(guān)系如下圖所示。的主要優(yōu)勢(shì)包括Page #P

2、age #VivadoTcl格式,便于管理;時(shí)錄入并執(zhí)行;Page XD對(duì)其它復(fù)補(bǔ)充。(XDC可以像、個(gè)個(gè)單獨(dú)的命令直接執(zhí)束在有沖突的情況下會(huì)XDCSDC調(diào)試效率;效率高;植性強(qiáng);.1運(yùn)算符等等件的方式來(lái)do中的應(yīng)用)的特點(diǎn),即后面輸入的約,的優(yōu)先級(jí)會(huì)在下節(jié)詳述)。另,約束是讀一條執(zhí)行一條,所以先后順序很重要,例如要設(shè)置10約束之前,相對(duì)應(yīng)的clock一定要先創(chuàng)建好。Page 2.UCF是完全以FPGA的視角看問(wèn)題,所以缺省認(rèn)為所有的時(shí)鐘之間除非預(yù)先聲明是同步的,否則就視作異步而不做跨時(shí)鐘域時(shí)序分析;XDC則恰恰相反,ASIC世界的血緣背景決定了在其中,所有的時(shí)鐘缺省視作全同步,在沒(méi)有時(shí)序例外

3、的情況下,工具會(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ì)解釋?zhuān)瑫?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í)鐘都可以由

4、Vivado自動(dòng)推導(dǎo),無(wú)需用戶創(chuàng)建。若用戶僅希望改變衍生鐘的名字,其余頻率等都由工具自動(dòng)推導(dǎo),則只需寫(xiě)明三個(gè)option,其余不寫(xiě)即可:create_generated_clock-namearg-sourceargs-master_clockarg工具不能自動(dòng)推導(dǎo)出衍生鐘的情況,包括使用寄存器和組合邏輯搭建的分頻器等,必須由用戶使用create_generated_clock來(lái)創(chuàng)建。I/O約束在設(shè)計(jì)的初級(jí)階段,可以不加I/O約束,讓工具專(zhuān)注于滿足FPGA內(nèi)部的時(shí)序要求。當(dāng)時(shí)序要求基本滿足后,再加上I/O約束跑實(shí)現(xiàn)。XDC中的I/O約束有以下幾點(diǎn)需要注意:不加任何I/O約束的端口時(shí)序要求被視作

5、無(wú)窮大。XDC中的set_input_delay/set_output_delay對(duì)應(yīng)于UCF中OFFSETIN/OFFSETOUT,但視角相反。OFFSETIN/OFFSETOUT是從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圖形界面的XDCtemplates中都有示例。2014.1版后還有一個(gè)TimingConstraintsWizard可供使用。時(shí)序例外約束時(shí)序例外約束包括set_max_delay/set_min_delay,set

6、_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í)如下所示:優(yōu)先級(jí)最高-frompinset_false_path-topmset_max_delay/set_min_delay-throughpin-fromclockset_multicycle_path-toclock優(yōu)先級(jí)最低舉例來(lái)說(shuō),依次執(zhí)行如下兩條XDC,盡管第二條最后執(zhí)行,但工具仍然認(rèn)定第一條約束設(shè)定的15為clk1到clk2之間路徑的

7、maxdelay值。Winnerset_max_delay1-fromget_clocksclklQget_clocksclk2set_max_delay1-fromget_clocksclkl再比如,對(duì)圖示路徑依次進(jìn)行如下四條時(shí)序例外約束,優(yōu)勝者將是第二條。但如果再加入最后一條約束,falsepath的優(yōu)先級(jí)最高,會(huì)取代之前所有的時(shí)序例外約束。REGBREGACLKAset_multicycle_path-toREGB/Dset_multicycle_path-fromCLKA-toCLKBset_false_path-throughlut/OTakePrecedence高效的時(shí)鐘約束約束最

8、終是為了設(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)告不可信。sysclksysclk_badelkinfraiIBUFG(Propibufg丄O)0.7660.766rclkin

9、frai/clkinibuf/Onet(fo=3,unplaced)1.1091.875clk_infra_i/clkin1BUFR(Propbufr丄O)0.3142.189rclk_infra_i/sys_clk_buf/Onet(fo=10,unplaced)1.1093.298sys_clk_intrsysrst_sync_reg2/Ccreate_clock-namesysclk_bad-period10get_pinsclk_infra_i/sys_clk_buf/ODelaytypeIncr(ns)Path(ns)NetlistResource(s)(clocksysclk_ba

10、driseedge)0.0000.000rBUFR0.0000.000rclk_infra_i/sys_clk_buf/Onet(fo=10,unplaced)1.1091.109sys_clk_intrsysrst_sync_reg2/C時(shí)鐘定義的先后順序時(shí)鐘的定義也遵從XDC/Tcl的一般優(yōu)先級(jí),即:在同一個(gè)點(diǎn)上,由用戶定義的時(shí)鐘會(huì)覆蓋工具自動(dòng)推導(dǎo)的時(shí)鐘,且后定義的時(shí)鐘會(huì)覆蓋先定義的時(shí)鐘。若要二者并存,必須使用-add選項(xiàng)。create_generated_clock-nameclkbufg-sourceget_portssys_clk-divide_by1get_pinsclk_infr

11、a_i/clkfsm_buf/Ocreate_generated_clock-nameclkbufr-sourceget_portssys_clk-divide_by1get_pinsclk_infra_i/sys_clk_buf/O-add-master_clocksysclk上述例子中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兩

12、個(gè)重疊的時(shí)鐘。如下的Tcl命令驗(yàn)證了我們的推論。%get_clocks-ofget_pinssysrst_sync_reg2/Csysclkclkbufr%get_clocks-ofget_pinswrite_error_reg/Cclkbufg同步時(shí)鐘和異步時(shí)鐘PrimaryClockssclkinMflkinnD卜ssclkin_p匚iAsynchronous/Clocks不同于UCF約束,在sysclkq表中所有存在的時(shí)序路徑都所有有匚的告訴工具,哪些路徑是無(wú)需dklnlbuf會(huì)-I也意dkinfr-a一CE(:認(rèn)1p/sysdkbufBUFR如上圖所示,兩個(gè)主時(shí)imaryClockGe

13、neratedClock時(shí)鐘網(wǎng)絡(luò)傳遞,要將它們?cè)O(shè)成異步時(shí)鐘,可以使用如下約束:liorst_sync_regj2FDPEAsynchrcClodset_clock_groups-namesys_ss_async-groupget_clocks-groupget_clocks-asynchronous-include_generated_clockssysclk-include_generated_clocksssclkin其中,-include_generated_clocks表示所有衍生鐘自動(dòng)跟其主時(shí)鐘一組,從而與其它組的時(shí)鐘之間為異步關(guān)系。不加這個(gè)選項(xiàng)則僅僅將時(shí)鐘關(guān)系的約束應(yīng)用在主時(shí)鐘層面

14、。重疊(單點(diǎn)多個(gè))時(shí)鐘D重疊時(shí)鐘是指多個(gè)時(shí)鐘共享完全相同的時(shí)鐘傳輸網(wǎng)絡(luò),例如兩個(gè)時(shí)鐘經(jīng)過(guò)一個(gè)MUX選擇后輸出的時(shí)鐘,在有多種運(yùn)行模式的設(shè)計(jì)中很常見(jiàn)。如下圖所示,clkl25和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)效果。Page oniaSiorr我們要做的僅僅是idki亡tlkgnlai/FDgnla_i/FD_pda/QLUT6FO白gliFDCEsys

15、_clk-1.949rgn1a_i/FD_agh./ESame-focset_clock_groupsr-physCii-iy3XCiusive-grOupget_clocksclk125-groupfet_c!pckspik25Uslack2.6930.0000.000r.esourclk_infra_i/clulai/clkFDCEProp_fdce_C_Q)0.2490.003FDCE(SetuptdceCD)-1.092(clock(clk250riseedge)1.6011.092Differentclocks1.109-3.307.-2.1984.0000.0004.000r4.0

16、00rEUFGCTRL(Piop_(fo=49007unplaced)0.0930.0031.416r1.1092.525如果clk125和clk0.1911.601BUFGCTRL(Prop_bufgct.)net(fo=4900Trmplaced)clk_infra_i/clgjiLa_i/clkgnlai/FDagh/CammcmadvinstCLKFBOUTcucfsours-clkcorebufCLKFBINCLKFBSTOPPED-FceoCLKINSELCLKlNSTOPPfD一一CE1CLKINJCLKIN2DAJDCRj6;0CLKOUTQCLKOUTOBCLKOUT1AXD

17、CLKCUCOUTLBn*DENCLKOUT2t_l1so-DtflSACLKOUT2B-51-OWECLKOUT3-BUFGCTRL一PSCIKCUCOUT3B二PSECLKOUT4PSINCCECCLKOUTS一PWRDWNCLKOUT6二RSTDO(19CODRDVLOCKED-PSDOSFE一MMCME2_A3VL.JclkjnfrsPage CLK125D_A其它高級(jí)約束DCLK250在很多情況下,除了共同的扇出,其中一個(gè)時(shí)鐘或兩個(gè)都還驅(qū)動(dòng)其它的時(shí)序元件,此時(shí)建議的做法是在clkcore_buf的輸出端上創(chuàng)建兩個(gè)重疊的衍生鐘,并將其時(shí)鐘關(guān)系約束為-physically_exclusive表示不可能同時(shí)通過(guò)。這樣做可以最大化約束覆蓋率,也是ISE和UCF中無(wú)法做到的。create_generated_clock-nameclk125_bufgctrl-divide_by1get_pinsbufgctrl_i/O-sourceget_portsbufgctrl_i/IOcreate_generated_clock-nameclk250_bufgctrl-divide_by1get_pinsbufgctrl_i/O-sourceget_portsbufgctrl_i/I1-add-masterclockclk250set_clock_grou

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論