Alveo系列開發(fā)板上的平臺(tái)其實(shí)是一個(gè)DFX設(shè)計(jì)的靜態(tài)部分,在Vitis 統(tǒng)一軟件平臺(tái)中使用Alveo系列開發(fā)板設(shè)計(jì)加速Kernel, 最終這些Kernel的邏輯會(huì)在分布在DFX設(shè)計(jì)的動(dòng)態(tài)區(qū)域。
本篇將介紹如何為Kernel的邏輯做floorplan(畫Pblock),人為控制Kernel邏輯的布局。
我們以經(jīng)典Example design“Vector Addition” 為例:
1. 打開Vitis 2020.2,創(chuàng)建新的 Application Project
File -> New -> Application project
2. 選擇xilinx_u200_qdma_201910_1平臺(tái) (本篇討論的方法不局限于某個(gè)具體平臺(tái))
3. 選擇打開Example Design "Vector Addition"
4. 對(duì)Hardware Flow 在Link階段設(shè)置 "-R2",然后Build
此處report level 選擇-R2:VPL(Vitis Platform link) 過程輸出更多中間文件, 后續(xù)我們會(huì)用到畫Kernel Pblock所需要的opt.dcp

5. 不用等到生成xclbin文件,VPL完成opt_design步驟之后我們就能看到XX_opt.dcp 文件.
XX_opt .dcp 所在目錄及文件名:
vitis_pblock_u200/vadd_test_system_hw_link/Hardware/binary_container_1.build/link/vivado/vpl/prj/prj.runs/impl_1 pfm_top_wrapper_opt.dcp
6. 把這個(gè)XX_opt.dcp拷貝到另外的目錄,并用Vivado打開這個(gè)dcp 文件

7. 查看已有的Pblock。主菜單 Window -> Physical Constraints

在這個(gè)視圖可以看到平臺(tái)已經(jīng)為動(dòng)態(tài)區(qū)域在各個(gè)SLR中設(shè)置了相應(yīng)的Pblock, 而且需要注意的是,設(shè)計(jì)中已有的Pblock是有層級(jí)關(guān)系的
例如:pblock_dynamic_region 包含三個(gè)下級(jí)pblock:
pblock_dynamic_SLR0,
pblock_dynamic_SLR1,
pblock_dynamic_SLR2,
提醒:不同平臺(tái)SLR的數(shù)目也可能是不同的. 不同平臺(tái)中自帶pblock的名字有差異是正常的. 需要用戶自己觀察.
為Kernel模塊生成的Pblock應(yīng)該是pblock_dynamic_SLR0 這一級(jí)Pblock 的子模塊, 工具支持把同一個(gè)Kernel的不同部分放置到多個(gè)SLR中,用戶需要保證跨SLR路徑的時(shí)序.
8. 為Kernel模塊畫Pblock
在這里嘗試把Kernel 放置在pblock_dynamic_SLR0所屬的中心區(qū)域
. 在Vivado的Netlist View中選中Kernel 模塊
例子中的模塊名是 pfm_top_i/dynamic_region/krnl_vadd_1
. 可以在Cells properties 窗口看到這個(gè)模塊當(dāng)前所屬的Pblock是pblock_dynamic_region

. 點(diǎn)擊Device 視圖中的"Draw Pblock" 按鈕, 在Device視圖上原有pblock_dynamic_SLR0的范圍內(nèi)畫一個(gè)方框,新畫的Pblock所覆蓋面積要被原Pblock完全包含. 畫完之后還可以選中Pblock微調(diào)Pblock的邊界,同時(shí)為了不影響原來Pblock的結(jié)構(gòu),在TCL CONSOLE中用以下命令把新Pblock的Parent Pblock設(shè)置成pblock_dynamic_SLR0:
set_property PARENT pblock_dynamic_SLR0 [get_pblocks pblock_krnl_vadd_1]
. 再看Kernel 模塊的Pblock屬性,已經(jīng)變?yōu)閜block_krnl_vadd_1

在TCL CONSOLE中會(huì)打印出了畫pblock相應(yīng)的約束,我們可以將這些約束拷貝到一個(gè)新的tcl文件中保存.
(在這里保存到kernel_pblock.tcl)

看下更新的Pblock結(jié)構(gòu),新生成的pblock_krnl_vadd_1 是pblock_dynamic_SLR0的Child Pblock

繼續(xù)在TCL CONSOLE執(zhí)行 place_design 命令完成布局
理論上這一步可以跳過,如果你確信你畫的Pblock沒有問題的話。
完成place_design之后,可以觀察一下Kernel 的資源在Device 上的實(shí)際分布情況

可以看到Kernel的邏輯全部都分布在剛才所畫的Pblock 區(qū)域內(nèi)


9. 在Vitis的link階段做以下設(shè)置,使之前保存的畫Pblock的命令在VPL(Vitis Platform link) 的place_design步驟執(zhí)行之前生效
--vivado.prop run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=XX/kernel_pblock.tcl

10. 重新build Vitis 的Hardware flow, 之前加入的命令就會(huì)生效。
總結(jié): 這就是一個(gè)簡單的為Kernel邏輯創(chuàng)建面積約束(Pblock)的過程, 實(shí)際用戶也可以為Kernel的子模塊創(chuàng)建Pblock,這方面工具沒有限制。
審核編輯:劉清
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
5669瀏覽量
104521 -
Kernel
+關(guān)注
關(guān)注
0文章
49瀏覽量
11677
發(fā)布評(píng)論請(qǐng)先 登錄
如何在Unified IDE中創(chuàng)建視覺庫HLS組件

使用AMD Vitis Unified IDE創(chuàng)建HLS組件

如何使用AMD Vitis HLS創(chuàng)建HLS IP

西門子再收購EDA公司 西門子宣布收購Excellicon公司 時(shí)序約束工具開發(fā)商

一文詳解Vivado時(shí)序約束

使用AMD Vitis進(jìn)行嵌入式設(shè)計(jì)開發(fā)用戶指南

淺談多目標(biāo)優(yōu)化約束條件下充電設(shè)施有序充電控制策略

迅為瑞芯微RK3588開發(fā)板Android修改kernel logo
時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

AMD Vitis Unified Software Platform 2024.2發(fā)布
如何在TMS320C6727 DSP上創(chuàng)建基于延遲的音頻效果

電路的兩類約束指的是哪兩類
如何在SQL中創(chuàng)建觸發(fā)器
如何在Draftsman中創(chuàng)建PCB制造圖紙

評(píng)論