1增量實(shí)現(xiàn)
所謂增量實(shí)現(xiàn),更嚴(yán)格地講是增量布局和增量布線。它是在設(shè)計(jì)改動(dòng)較小的情形下參考原始設(shè)計(jì)的布局、布線結(jié)果,將其中未改動(dòng)的模塊、引腳和網(wǎng)線等直接復(fù)用,而對(duì)發(fā)生改變的部分重新布局、布線。這樣做的好處是顯而易見的,即節(jié)省運(yùn)行時(shí)間,能提高再次布局、布線結(jié)果的可預(yù)測(cè)性,并有助于時(shí)序收斂。
增量實(shí)現(xiàn)由兩個(gè)流程構(gòu)成:原始流程和增量流程,如圖所示。其中,原始流程提供網(wǎng)表。這里的網(wǎng)表可以是布局后的DCP文件,也可以是布線后的DCP文件。
增量實(shí)現(xiàn)流程有兩種模式:高復(fù)用模式和低復(fù)用模式。在高復(fù)用模式下,布局、布線會(huì)盡可能地復(fù)用已有布局、布線的結(jié)果。在這種情形下,place_design和route_design都只有三種directive可用,分別為Default、Explore和Quick。
以下兩種情形適合于高復(fù)用模式。
情形1:很小的設(shè)計(jì)改動(dòng)。
情形2:與原始設(shè)計(jì)相比,更新后的設(shè)計(jì)只是添加了調(diào)試模塊,如ILA等。
由此可見,高復(fù)用模式在網(wǎng)表時(shí)序收斂且多達(dá)95%的邏輯單元被復(fù)用時(shí)最為有效。
與高復(fù)用模式相比,低復(fù)用模式則適用于更新后的設(shè)計(jì)與參考設(shè)計(jì)相比有較大的改動(dòng),或者用戶通過read_checkpoint的選項(xiàng)?reuse_objects指定復(fù)用邏輯單元的情況。此時(shí),place_design和route_design的所有?directive均可用。
當(dāng)布局、布線在某些區(qū)域面臨挑戰(zhàn)時(shí),低復(fù)用模式更為有效。例如,從網(wǎng)表中獲得較好的Block RAM和DSP的布局,或者時(shí)序難以收斂的邏輯單元。這些都可通過Tcl命令獲得。
一般來說,增量編譯都是與設(shè)計(jì)鎖定聯(lián)合使用的。
2設(shè)計(jì)鎖定與增量編譯方法
為了實(shí)現(xiàn)對(duì)模塊的布局(place)、布線(route)的鎖定,僅適用增量編譯是不夠的,因?yàn)樵隽烤幾g的本質(zhì)目的是為了實(shí)現(xiàn)編譯時(shí)間的縮短,還需要引入設(shè)計(jì)鎖定,設(shè)計(jì)鎖定的TCL命令是:lock_design –level routing
下面例說操作方法。
(1)建立工程:建立一個(gè)工程,走完綜合實(shí)現(xiàn)的流程,如圖1所示,該工程將作為樣例工程(工程名:incre_compile_demo),將該工程備份一份(工程名:initial_project,后面對(duì)比要用到這個(gè)工程);
圖1 建好的工程
(2)找到dcp文件:增量編譯需要有一個(gè)參考文件,這個(gè)參考文件是“參考設(shè)計(jì)”實(shí)現(xiàn)之后生成的,后綴是“.dcp”,該文件的路徑一般在“。. project_1project_1.runsimpl_1”路徑下,如圖2所示,新建一個(gè)文件夾(名字是dcp_file),將該文件復(fù)制到其中,如圖3所示;
圖2 dcp文件
圖3新建文件夾,復(fù)制dcp文件
(3)鎖定設(shè)計(jì):前面說道,簡(jiǎn)單的增量編譯是不能保證模塊固定在某個(gè)位置的,為了實(shí)現(xiàn)這一點(diǎn),需要對(duì)設(shè)計(jì)進(jìn)行鎖定,方法是,打開一個(gè)新的Vivado界面,然后打開dcp_file文件夾下的dcp文件(注意選擇“open checkpoint”),如圖4所示;打開后,在TCL Console中輸入命令:“l(fā)ock_design –level routing”,點(diǎn)擊左上角保存,如圖5所示,做完這一步后,設(shè)計(jì)就鎖定好了,dcp文件就可以用了;
圖4 vivado打開dcp界面
圖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)開始綜合、實(shí)現(xiàn),完成增量編譯過程。
圖6 改代碼
圖7 選both
圖8 make active
圖9 Do not launch now
圖10 新的run已建好
圖11 選擇參考dcp文件
3、正確性驗(yàn)證
怎么證明增量編譯后,原始設(shè)計(jì)成功鎖定了呢?我們來做一個(gè)對(duì)照實(shí)驗(yàn)。
樣本1:原始工程,名稱是: initial_project;
樣本2:增量編譯工程,名稱是: incre_compile_demo;
樣本3:原始工程復(fù)制一份出來,不進(jìn)行增量編譯,直接修改代碼(見圖6),重新綜合實(shí)現(xiàn),名稱是:modify_project。
打開三個(gè)工程,之后open implemented design,選取幾個(gè)模塊,觀察其在FPGA上的位置,發(fā)現(xiàn)樣本1和樣本2位置完全一樣,而樣本3和前兩個(gè)樣本不一樣,說明設(shè)計(jì)鎖定是成功的,如圖12、13、14所示。
圖12 樣本1位置觀察
圖13 樣本2位置觀察
圖14 樣本3位置觀察
Vivado下如何鎖定設(shè)計(jì)的模塊的布局布線
Xilinx官方論壇上也有相關(guān)問題的回答。
https://forums.xilinx.com/t5/Vivado/Vivado%E4%B8%8B%E5%A6%82%E4%BD%95%E9.。.。
Vivado下如何鎖定設(shè)計(jì)模塊的布局布線
問題:
我現(xiàn)在設(shè)計(jì)了一個(gè)延時(shí)模塊,應(yīng)用后需要把該模塊的布局和布線全部鎖定,然后在別的項(xiàng)目中直接調(diào)用?,F(xiàn)在布局沒有問題??梢酝ㄟ^約束文件來鎖定,就是布線不能大范圍鎖定,否則應(yīng)用時(shí)會(huì)失敗。我已經(jīng)嘗試過增量編譯(調(diào)用DCP文件)的功能,發(fā)現(xiàn)在增量編譯中布局布線并不是全部不變的,個(gè)別走線也是會(huì)變的。請(qǐng)問有辦法把布線也固定下來嗎?(Tool: Vivado17.3 Device: K7)
回答1:如果你用的是Ultrascale/Ultrascale+ , 我覺得PR是個(gè)不錯(cuò)的選擇,你的目標(biāo)模塊可以放在靜態(tài)部分,只占據(jù)很小的一塊面積,剩下大塊的動(dòng)態(tài)部分。但是7系列有很多primitive不能放在動(dòng)態(tài),靜態(tài)的部分包含的邏輯過多,剩下供你修改的邏輯偏少,不太適合目前的應(yīng)用場(chǎng)景。
回答2:關(guān)于鎖定某一個(gè)net的布線路徑,請(qǐng)參考以下步驟:
1.打開跑完布局布線的工程,Open Implemented Design
2.找到你要鎖定布線的net,選中,右鍵菜單點(diǎn)擊Fixed Routing,如下圖所示:
3. Tcl Console里面會(huì)打印出一些命令,然后在Tcl Console里面敲命令:write_xdc/dirt.xdc
4. 打開導(dǎo)出的xdc,在最下面的部分會(huì)有所有元件的位置鎖定以及FIXED_ROUTE,示例如下:
5. 另外還需注意的是,負(fù)載中有LUT的話需要將LUT的輸入pin也鎖住。以下圖的LUT2為例,在其property窗口中找到Cell pins,信號(hào)是連到LUT2的I0端,映射到BEL pin是A3。
因此上述導(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,這條線會(huì)按照原先的結(jié)果布。
溫馨提示:
我們并不建議完全鎖死某個(gè)模塊的所有布線,當(dāng)合入的工程比較復(fù)雜,用到的布線資源較密集時(shí),工具沒有靈活性去調(diào)整和優(yōu)化,有很大的概率會(huì)布線失敗。
劃分靜態(tài)區(qū)和動(dòng)態(tài)區(qū)
除了上述的邏輯鎖定方法之外,Xilinx 的FPGA還提供了靜態(tài)區(qū)和動(dòng)態(tài)區(qū)的劃分也可以實(shí)現(xiàn)邏輯的鎖定。只不過靜態(tài)區(qū)占據(jù)了大多數(shù)的空間,動(dòng)態(tài)區(qū)是可以隨意修改的小部分空間。
FPGA提供了現(xiàn)場(chǎng)編程和重新編程的靈活性,無需通過改進(jìn)的設(shè)計(jì)進(jìn)行重新制造。部分重配置(PR)進(jìn)一步提高了這種靈活性,允許通過加載部分配置文件(通常是部分BIT文件)來修改操作FPGA設(shè)計(jì)。在完整的BIT文件配置FPGA之后,可以下載部分BIT文件以修改FPGA中的可重配置區(qū)域,而不會(huì)影響在未重新配置的設(shè)備部分上運(yùn)行的應(yīng)用程序的完整性。
部分可重構(gòu)的基本前提
如圖所示,通過下載幾個(gè)部分BIT文件A1.bit,A2.bit,A3.bit或A4.bit中的一個(gè)來修改在重新配置塊A中實(shí)現(xiàn)的功能。FPGA設(shè)計(jì)中的邏輯分為兩種不同的類型,可重構(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)沒有它的新型FPGA設(shè)計(jì)。
編輯:lyn
-
DCP
+關(guān)注
關(guān)注
0文章
30瀏覽量
17742 -
Quick
+關(guān)注
關(guān)注
0文章
17瀏覽量
12643 -
Vivado
+關(guān)注
關(guān)注
19文章
844瀏覽量
70071
發(fā)布評(píng)論請(qǐng)先 登錄
Bourns發(fā)布全新增量式微型編碼器
vivado仿真時(shí)GSR信號(hào)的影響

Vivado無法選中開發(fā)板的常見原因及解決方法

編譯器功能安全驗(yàn)證的關(guān)鍵要素
AMD Vivado Design Suite 2025.1現(xiàn)已推出
如何使用One Spin檢查AMD Vivado Design Suite Synth的結(jié)果

用DevEco Studio增量補(bǔ)丁修復(fù)功能,讓鴻蒙應(yīng)用的調(diào)試效率大增
用DevEco Studio增量補(bǔ)丁修復(fù)功能,讓鴻蒙應(yīng)用的調(diào)試效率大增
使用DDS生成三個(gè)信號(hào)并在Vivado中實(shí)現(xiàn)低通濾波器

AMD Vivado Design Suite IDE中的設(shè)計(jì)分析簡(jiǎn)介

Triton編譯器在高性能計(jì)算中的應(yīng)用
每次Vivado編譯的結(jié)果都一樣嗎

Vivado中FFT IP核的使用教程

評(píng)論