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

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

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

Vivado中設(shè)計(jì)鎖定與增量編譯方法簡(jiǎn)析

Hack電子 ? 來(lái)源:網(wǎng)絡(luò)交換FPGA ? 作者:劉歡 ? 2022-10-10 14:16 ? 次閱讀

關(guān)于增量編譯

所謂增量實(shí)現(xiàn),更嚴(yán)格地講是增量布局和增量布線(xiàn)。它是在設(shè)計(jì)改動(dòng)較小的情形下參考原始設(shè)計(jì)的布局、布線(xiàn)結(jié)果,將其中未改動(dòng)的模塊、引腳和網(wǎng)線(xiàn)等直接復(fù)用,而對(duì)發(fā)生改變的部分重新布局、布線(xiàn)。

這樣做的好處是顯而易見(jiàn)的,即節(jié)省運(yùn)行時(shí)間,能提高再次布局、布線(xiàn)結(jié)果的可預(yù)測(cè)性,并有助于時(shí)序收斂。

增量實(shí)現(xiàn)由兩個(gè)流程構(gòu)成:原始流程和增量流程,如圖所示。其中,原始流程提供網(wǎng)表。這里的網(wǎng)表可以是布局后的DCP文件,也可以是布線(xiàn)后的DCP文件。

94213a04-485c-11ed-a3b6-dac502259ad0.png

增量實(shí)現(xiàn)流程有兩種模式:高復(fù)用模式和低復(fù)用模式。在高復(fù)用模式下,布局、布線(xiàn)會(huì)盡可能地復(fù)用已有布局、布線(xiàn)的結(jié)果。

在這種情形下,place_design和route_design都只有三種directive可用,分別為Default、Explore和Quick。 以下兩種情形適合于高復(fù)用模式。

情形1:很小的設(shè)計(jì)改動(dòng)。

情形2:與原始設(shè)計(jì)相比,更新后的設(shè)計(jì)只是添加了調(diào)試模塊,如ILA等。 由此可見(jiàn),高復(fù)用模式在網(wǎng)表時(shí)序收斂且多達(dá)95%的邏輯單元被復(fù)用時(shí)最為有效。

與高復(fù)用模式相比,低復(fù)用模式則適用于更新后的設(shè)計(jì)與參考設(shè)計(jì)相比有較大的改動(dòng),或者用戶(hù)通過(guò)read_checkpoint的選項(xiàng)?reuse_objects指定復(fù)用邏輯單元的情況。此時(shí),place_design和route_design的所有?directive均可用。

當(dāng)布局、布線(xiàn)在某些區(qū)域面臨挑戰(zhàn)時(shí),低復(fù)用模式更為有效。例如,從網(wǎng)表中獲得較好的Block RAMDSP的布局,或者時(shí)序難以收斂的邏輯單元。這些都可通過(guò)Tcl命令獲得。

一般來(lái)說(shuō),增量編譯都是與設(shè)計(jì)鎖定聯(lián)合使用的。

設(shè)計(jì)鎖定與增量編譯方法

為了實(shí)現(xiàn)對(duì)模塊的布局(place)、布線(xiàn)(route)的鎖定,僅適用增量編譯是不夠的,因?yàn)樵隽烤幾g的本質(zhì)目的是為了實(shí)現(xiàn)編譯時(shí)間的縮短,還需要引入設(shè)計(jì)鎖定,設(shè)計(jì)鎖定的TCL命令是:lock_design –level routing

下面例說(shuō)操作方法。

(1)建立工程:建立一個(gè)工程,走完綜合實(shí)現(xiàn)的流程,如圖1所示,該工程將作為樣例工程(工程名:incre_compile_demo),將該工程備份一份(工程名:initial_project,后面對(duì)比要用到這個(gè)工程);

944aef20-485c-11ed-a3b6-dac502259ad0.png

圖1 建好的工程

(2)找到dcp文件:增量編譯需要有一個(gè)參考文件,這個(gè)參考文件是“參考設(shè)計(jì)”實(shí)現(xiàn)之后生成的,后綴是“.dcp”,該文件的路徑一般在“.. project_1project_1.runsimpl_1”路徑下,如圖2所示,新建一個(gè)文件夾(名字是dcp_file),將該文件復(fù)制到其中,如圖3所示;

94690500-485c-11ed-a3b6-dac502259ad0.png

圖2 dcp文件

947ee5fa-485c-11ed-a3b6-dac502259ad0.png

圖3新建文件夾,復(fù)制dcp文件

(3)鎖定設(shè)計(jì):前面說(shuō)道,簡(jiǎn)單的增量編譯是不能保證模塊固定在某個(gè)位置的,為了實(shí)現(xiàn)這一點(diǎn),需要對(duì)設(shè)計(jì)進(jìn)行鎖定,方法是,打開(kāi)一個(gè)新的Vivado界面,然后打開(kāi)dcp_file文件夾下的dcp文件(注意選擇“open checkpoint”),如圖4所示;打開(kāi)后,在TCL Console中輸入命令:“l(fā)ock_design –level routing”,點(diǎn)擊左上角保存,如圖5所示,做完這一步后,設(shè)計(jì)就鎖定好了,dcp文件就可以用了;

94a37f28-485c-11ed-a3b6-dac502259ad0.png

圖4 vivado打開(kāi)dcp界面

94bf106c-485c-11ed-a3b6-dac502259ad0.png

圖5 鎖定設(shè)計(jì)并保存

(4)增量編譯:

1)修改代碼,將頂層模塊(test_compare.v)line263-line266注釋取消,保存,如圖6所示;

2)在主界面菜單欄處,點(diǎn):Flow > Create Runs;

3)選both,點(diǎn)next,如圖7所示;

4)勾選make active,點(diǎn)next,如圖8所示;

5)選Do not launch now,點(diǎn)next,如圖9所示; 6)完成后如圖10所示;

7)在impl_2右鍵,選擇“Set Incremental Compile”,選擇步驟(3)中準(zhǔn)備好的dcp文件,示意圖如圖11所示(注意這只是一個(gè)示意圖,圖中選的文件不是步驟(3)準(zhǔn)備好的那個(gè)文件)

8)開(kāi)始綜合、實(shí)現(xiàn),完成增量編譯過(guò)程。

94dbf826-485c-11ed-a3b6-dac502259ad0.png

圖6 改代碼

94f074c2-485c-11ed-a3b6-dac502259ad0.png

圖7 選both

950af09a-485c-11ed-a3b6-dac502259ad0.png

圖8 make active

951ffc38-485c-11ed-a3b6-dac502259ad0.png

圖9 Do not launch now

953d0940-485c-11ed-a3b6-dac502259ad0.png

圖10 新的run已建好

954f4538-485c-11ed-a3b6-dac502259ad0.png

圖11 選擇參考dcp文件

3、正確性驗(yàn)證

怎么證明增量編譯后,原始設(shè)計(jì)成功鎖定了呢?我們來(lái)做一個(gè)對(duì)照實(shí)驗(yàn)。

樣本1:原始工程,名稱(chēng)是: initial_project;

樣本2:增量編譯工程,名稱(chēng)是: incre_compile_demo;

樣本3:原始工程復(fù)制一份出來(lái),不進(jìn)行增量編譯,直接修改代碼(見(jiàn)圖6),重新綜合實(shí)現(xiàn),名稱(chēng)是:modify_project。

打開(kāi)三個(gè)工程,之后open implemented design,選取幾個(gè)模塊,觀察其在FPGA上的位置,發(fā)現(xiàn)樣本1和樣本2位置完全一樣,而樣本3和前兩個(gè)樣本不一樣,說(shuō)明設(shè)計(jì)鎖定是成功的,如圖12、13、14所示。 956a2d62-485c-11ed-a3b6-dac502259ad0.png

圖12 樣本1位置觀察

966cec22-485c-11ed-a3b6-dac502259ad0.png

圖13 樣本2位置觀察

96999c54-485c-11ed-a3b6-dac502259ad0.png

圖14 樣本3位置觀察

Vivado下如何鎖定設(shè)計(jì)的模塊的布局布線(xiàn)

Xilinx官方論壇上也有相關(guān)問(wèn)題的回答。

Vivado下如何鎖定設(shè)計(jì)模塊的布局布線(xiàn) 問(wèn)題: 我現(xiàn)在設(shè)計(jì)了一個(gè)延時(shí)模塊,應(yīng)用后需要把該模塊的布局和布線(xiàn)全部鎖定,然后在別的項(xiàng)目中直接調(diào)用?,F(xiàn)在布局沒(méi)有問(wèn)題??梢酝ㄟ^(guò)約束文件來(lái)鎖定,就是布線(xiàn)不能大范圍鎖定,否則應(yīng)用時(shí)會(huì)失敗。

我已經(jīng)嘗試過(guò)增量編譯(調(diào)用DCP文件)的功能,發(fā)現(xiàn)在增量編譯中布局布線(xiàn)并不是全部不變的,個(gè)別走線(xiàn)也是會(huì)變的。

請(qǐng)問(wèn)有辦法把布線(xiàn)也固定下來(lái)嗎?(Tool: Vivado17.3 Device: K7)

回答1:如果你用的是Ultrascale/Ultrascale+ , 我覺(jué)得PR是個(gè)不錯(cuò)的選擇,你的目標(biāo)模塊可以放在靜態(tài)部分,只占據(jù)很小的一塊面積,剩下大塊的動(dòng)態(tài)部分.但是7系列有很多primitive不能放在動(dòng)態(tài),靜態(tài)的部分包含的邏輯過(guò)多,剩下供你修改的邏輯偏少,不太適合目前的應(yīng)用場(chǎng)景.

回答2:關(guān)于鎖定某一個(gè)net的布線(xiàn)路徑,請(qǐng)參考以下步驟:

1.打開(kāi)跑完布局布線(xiàn)的工程,Open Implemented Design

2.找到你要鎖定布線(xiàn)的net,選中,右鍵菜單點(diǎn)擊Fixed Routing,如下圖所示:

96cb2d64-485c-11ed-a3b6-dac502259ad0.png

3. Tcl Console里面會(huì)打印出一些命令,然后在Tcl Console里面敲命令:write_xdc/dirt.xdc

4. 打開(kāi)導(dǎo)出的xdc,在最下面的部分會(huì)有所有元件的位置鎖定以及FIXED_ROUTE,示例如下:

96f93f6a-485c-11ed-a3b6-dac502259ad0.png

5. 另外還需注意的是,負(fù)載中有LUT的話(huà)需要將LUT的輸入pin也鎖住。以下圖的LUT2為例,在其property窗口中找到Cell pins,信號(hào)是連到LUT2的I0端,映射到BEL pin是A3。

971e8090-485c-11ed-a3b6-dac502259ad0.png


因此上述導(dǎo)出的位置鎖定約束中還有一個(gè)LOCK_PINS的設(shè)置:

set_property LOCK_PINS {I0:A3} [get_cells clk_gen_i0/rst_meta_i_1] 6. 將這部分有關(guān)鎖定的約束拷貝到你工程的約束文件中,重新跑implementation,這條線(xiàn)會(huì)按照原先的結(jié)果布。

溫馨提示: 我們并不建議完全鎖死某個(gè)模塊的所有布線(xiàn),當(dāng)合入的工程比較復(fù)雜,用到的布線(xiàn)資源較密集時(shí),工具沒(méi)有靈活性去調(diào)整和優(yōu)化,有很大的概率會(huì)布線(xiàn)失敗。

劃分靜態(tài)區(qū)和動(dòng)態(tài)區(qū)

除了上述的邏輯鎖定方法之外,Xilinx 的FPGA還提供了靜態(tài)區(qū)和動(dòng)態(tài)區(qū)的劃分也可以實(shí)現(xiàn)邏輯的鎖定。只不過(guò)靜態(tài)區(qū)占據(jù)了大多數(shù)的空間,動(dòng)態(tài)區(qū)是可以隨意修改的小部分空間。

FPGA提供了現(xiàn)場(chǎng)編程和重新編程的靈活性,無(wú)需通過(guò)改進(jìn)的設(shè)計(jì)進(jìn)行重新制造。部分重配置(PR)進(jìn)一步提高了這種靈活性,允許通過(guò)加載部分配置文件(通常是部分BIT文件)來(lái)修改操作FPGA設(shè)計(jì)。

在完整的BIT文件配置FPGA之后,可以下載部分BIT文件以修改FPGA中的可重配置區(qū)域,而不會(huì)影響在未重新配置的設(shè)備部分上運(yùn)行的應(yīng)用程序的完整性。

9738fe84-485c-11ed-a3b6-dac502259ad0.png

部分可重構(gòu)的基本前提

如圖所示,通過(guò)下載幾個(gè)部分BIT文件A1.bit,A2.bit,A3.bit或A4.bit中的一個(gè)來(lái)修改在重新配置塊A中實(shí)現(xiàn)的功能。

FPGA設(shè)計(jì)中的邏輯分為兩種不同的類(lèi)型,可重構(gòu)邏輯和靜態(tài)邏輯。FPGA塊的灰色區(qū)域表示靜態(tài)邏輯,標(biāo)記為Reconfig Block“A”的塊部分表示可重配置邏輯。靜態(tài)邏輯仍然有效,并且不受加載部分BIT文件的影響??芍嘏渲眠壿嬘刹糠諦IT文件的內(nèi)容替換。

為什么在單個(gè)FPGA器件上動(dòng)態(tài)地對(duì)多個(gè)硬件進(jìn)行時(shí)間復(fù)用的能力是有利的。

這些包括:

?減小實(shí)現(xiàn)給定功能所需的FPGA器件尺寸,從而降低成本和功耗

?為應(yīng)用可用的算法或協(xié)議選擇提供靈活性

?實(shí)現(xiàn)設(shè)計(jì)安全性的新技術(shù)

?提高FPGA容錯(cuò)能力

?加速可配置計(jì)算 除了減小尺寸,重量,功耗和成本之外,部分重配置還可以實(shí)現(xiàn)沒(méi)有它的新型FPGA設(shè)計(jì)。




審核編輯:劉清

聲明:本文內(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)投訴
  • FPGA設(shè)計(jì)
    +關(guān)注

    關(guān)注

    9

    文章

    428

    瀏覽量

    26423
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114215
  • DCP
    DCP
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    17140
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    797

    瀏覽量

    65855

原文標(biāo)題:Vivado中增量編譯與設(shè)計(jì)鎖定

文章出處:【微信號(hào):Hack電子,微信公眾號(hào):Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析可提升Vivado編譯效率的增量編譯方法

    增量編譯:使用增量編譯滿(mǎn)足最后時(shí)刻 HDL 變動(dòng)需求,僅針對(duì)已變動(dòng)邏輯進(jìn)行布局布線(xiàn),從而可節(jié)省時(shí)間。
    的頭像 發(fā)表于 12-13 10:14 ?5105次閱讀

    介紹一種設(shè)計(jì)鎖定增量編譯方法

    增量實(shí)現(xiàn)由哪幾個(gè)流程構(gòu)成?增量實(shí)現(xiàn)流程有哪幾種模式?怎么證明增量編譯后,原始設(shè)計(jì)成功鎖定了呢?
    發(fā)表于 02-16 07:54

    鼠標(biāo)HID例程()簡(jiǎn)

    鼠標(biāo) HID 例程簡(jiǎn) 緊接《鼠標(biāo) HID 例程簡(jiǎn)(上)》一文,繼續(xù)向大家介紹鼠 標(biāo) HID 例程的未完的內(nèi)容。
    發(fā)表于 07-26 15:18 ?0次下載

    Vivado的Incremental Compile增量編譯技術(shù)詳解

    Incremental Compile增量編譯Vivado提供的一項(xiàng)高階功能。目的旨在當(dāng)設(shè)計(jì)微小的改變時(shí),重用綜合和布局布線(xiàn)的結(jié)果,縮短編譯時(shí)間。
    的頭像 發(fā)表于 07-05 06:06 ?1.1w次閱讀

    Vivado Design Suite 2015.3的新功能介紹

    了解Vivado實(shí)現(xiàn)2015.3的新增量編譯功能,包括更好地處理物理優(yōu)化和自動(dòng)增量
    的頭像 發(fā)表于 11-20 06:55 ?2511次閱讀

    Vivado Design Suite 2015.3新增量編譯功能介紹

    了解Vivado實(shí)現(xiàn)2015.3的新增量編譯功能,包括更好地處理物理優(yōu)化和自動(dòng)增量
    的頭像 發(fā)表于 11-20 06:56 ?2731次閱讀

    引入增量編譯流程進(jìn)行調(diào)試的好處與步驟

    了解使用Vivado 2016.1引入的增量編譯流程進(jìn)行調(diào)試的好處,以及在使用增量編譯實(shí)現(xiàn)時(shí)添
    的頭像 發(fā)表于 11-30 06:19 ?2922次閱讀
    引入<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>流程進(jìn)行調(diào)試的好處與步驟

    Vivado 2015.3的新增量編譯功能介紹

    了解Vivado實(shí)現(xiàn)2015.3的新增量編譯功能,包括更好地處理物理優(yōu)化和自動(dòng)增量
    的頭像 發(fā)表于 11-29 06:32 ?3538次閱讀

    Vivado 2015.3的新增量編譯功能

    了解Vivado實(shí)現(xiàn)2015.3的新增量編譯功能,包括更好地處理物理優(yōu)化和自動(dòng)增量
    的頭像 發(fā)表于 11-30 19:24 ?4416次閱讀

    講述增量編譯方法,提高Vivado編譯效率

    當(dāng)RTL代碼修改較少時(shí),使用增量編譯功能可以提高工程的編譯速度,Incremental Compile增量編譯
    的頭像 發(fā)表于 01-22 17:27 ?9831次閱讀
    講述<b class='flag-5'>增量</b><b class='flag-5'>編譯</b><b class='flag-5'>方法</b>,提高<b class='flag-5'>Vivado</b><b class='flag-5'>編譯</b>效率

    如何在Vivado實(shí)現(xiàn)邏輯鎖定增量編譯工程實(shí)例說(shuō)明

    本文針對(duì)Vivado實(shí)現(xiàn)的邏輯鎖定增量編譯進(jìn)行的工程實(shí)例介紹,文中有對(duì)應(yīng)工程的下載地址。友情提示:(1)
    的頭像 發(fā)表于 07-06 10:32 ?6966次閱讀
    如何在<b class='flag-5'>Vivado</b><b class='flag-5'>中</b>實(shí)現(xiàn)邏輯<b class='flag-5'>鎖定</b>和<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>工程實(shí)例說(shuō)明

    淺析Vivado增量編譯與設(shè)計(jì)鎖定方法與驗(yàn)證

    所謂增量實(shí)現(xiàn),更嚴(yán)格地講是增量布局和增量布線(xiàn)。它是在設(shè)計(jì)改動(dòng)較小的情形下參考原始設(shè)計(jì)的布局、布線(xiàn)結(jié)果,將其中未改動(dòng)的模塊、引腳和網(wǎng)線(xiàn)等直接復(fù)用,而對(duì)發(fā)生改變的部分重新布局、布線(xiàn)。
    的頭像 發(fā)表于 04-14 12:01 ?2695次閱讀
    淺析<b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>與設(shè)計(jì)<b class='flag-5'>鎖定</b><b class='flag-5'>方法</b>與驗(yàn)證

    Vivadoz增量編譯與設(shè)計(jì)鎖定

    關(guān)于增量編譯所謂增量實(shí)現(xiàn),更嚴(yán)格地講是增量布局和增量布線(xiàn)。它是在設(shè)計(jì)改動(dòng)較小的情形下參考原始設(shè)計(jì)的布局、布線(xiàn)結(jié)果,將其中未改動(dòng)的模塊、引腳和
    發(fā)表于 12-20 19:11 ?6次下載
    Vivadoz<b class='flag-5'>中</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>與設(shè)計(jì)<b class='flag-5'>鎖定</b>

    Quartus的邏輯鎖定增量編譯

    邏輯鎖定功能可以將FPGA的代碼模塊在固定區(qū)域?qū)崿F(xiàn),優(yōu)化時(shí)序性能,提升設(shè)計(jì)可靠性。 增量編譯功能,可以使設(shè)計(jì)更快速時(shí)序收斂,加快編譯速度。
    的頭像 發(fā)表于 05-25 11:22 ?1314次閱讀
    Quartus<b class='flag-5'>中</b>的邏輯<b class='flag-5'>鎖定</b>與<b class='flag-5'>增量</b><b class='flag-5'>編譯</b>

    Vivado增量編譯的基本概念、優(yōu)點(diǎn)、使用方法以及注意事項(xiàng)

    隨著FPGA設(shè)計(jì)的復(fù)雜度不斷提高,設(shè)計(jì)人員需要選擇更為高效的設(shè)計(jì)流程來(lái)保證開(kāi)發(fā)效率和減少開(kāi)發(fā)成本。其中,Vivado增量編譯是一種非常重要的設(shè)計(jì)流程。本文將介紹Vivado
    的頭像 發(fā)表于 05-25 18:25 ?4324次閱讀
    <b class='flag-5'>Vivado</b><b class='flag-5'>增量</b><b class='flag-5'>編譯</b>的基本概念、優(yōu)點(diǎn)、使用<b class='flag-5'>方法</b>以及注意事項(xiàng)