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

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

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

怎么在Vitis加速設(shè)計(jì)中為Kernel創(chuàng)建面積約束

XILINX開(kāi)發(fā)者社區(qū) ? 來(lái)源:XILINX開(kāi)發(fā)者社區(qū) ? 作者:Hong Han ? 2021-06-18 10:15 ? 次閱讀

本文來(lái)自賽靈思高級(jí)產(chǎn)品應(yīng)用工程師 Hong Han

Alveo系列開(kāi)發(fā)板上的平臺(tái)其實(shí)是一個(gè)DFX設(shè)計(jì)的靜態(tài)部分,在Vitis 統(tǒng)一軟件平臺(tái)中使用Alveo系列開(kāi)發(fā)板設(shè)計(jì)加速Kernel, 最終這些Kernel的邏輯會(huì)在分布在DFX設(shè)計(jì)的動(dòng)態(tài)區(qū)域。

本篇將介紹如何為Kernel的邏輯做floorplan(畫(huà)Pblock),人為控制Kernel邏輯的布局。

我們以經(jīng)典Example design“Vector Addition” 為例:

1. 打開(kāi)Vitis 2020.2,創(chuàng)建新的 Application Project

File -》 New -》 Application project

2. 選擇xilinx_u200_qdma_201910_1平臺(tái) (本篇討論的方法不局限于某個(gè)具體平臺(tái))

3. 選擇打開(kāi)Example Design “Vector Addition”

4. 對(duì)Hardware Flow 在Link階段設(shè)置 “-R2”,然后Build

此處report level 選擇-R2:VPL(Vitis Platform link) 過(guò)程輸出更多中間文件, 后續(xù)我們會(huì)用到畫(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打開(kāi)這個(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模塊畫(huà)Pblock

在這里嘗試把Kernel 放置在pblock_dynamic_SLR0所屬的中心區(qū)域

《1》。 在Vivado的Netlist View中選中Kernel 模塊

例子中的模塊名是 pfm_top_i/dynamic_region/krnl_vadd_1

《2》。 可以在Cells properties 窗口看到這個(gè)模塊當(dāng)前所屬的Pblock是pblock_dynamic_region

《3》。 點(diǎn)擊Device 視圖中的“Draw Pblock” 按鈕, 在Device視圖上原有pblock_dynamic_SLR0的范圍內(nèi)畫(huà)一個(gè)方框,新畫(huà)的Pblock所覆蓋面積要被原Pblock完全包含。 畫(huà)完之后還可以選中Pblock微調(diào)Pblock的邊界,同時(shí)為了不影響原來(lái)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]

《4》。 再看Kernel 模塊的Pblock屬性,已經(jīng)變?yōu)閜block_krnl_vadd_1

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

(在這里保存到kernel_pblock.tcl)

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

《7》 繼續(xù)在TCL CONSOLE執(zhí)行 place_design 命令完成布局

理論上這一步可以跳過(guò),如果你確信你畫(huà)的Pblock沒(méi)有問(wèn)題的話。

《8》 完成place_design之后,可以觀察一下Kernel 的資源在Device 上的實(shí)際分布情況

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

9. 在Vitis的link階段做以下設(shè)置,使之前保存的畫(huà)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è)簡(jiǎn)單的為Kernel邏輯創(chuàng)建面積約束(Pblock)的過(guò)程, 實(shí)際用戶也可以為Kernel的子模塊創(chuàng)建Pblock,這方面工具沒(méi)有限制

編輯:jq

聲明:本文內(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)投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2168

    瀏覽量

    121771
  • TCL
    TCL
    +關(guān)注

    關(guān)注

    10

    文章

    1735

    瀏覽量

    88734
  • DFx
    DFx
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    10559

原文標(biāo)題:開(kāi)發(fā)者分享 | 如何在Vitis加速設(shè)計(jì)中為Kernel創(chuàng)建面積約束

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    Zynq MPSoC 和 AMD Alveo 數(shù)據(jù)中心加速器卡)目標(biāo)的異構(gòu)嵌入式應(yīng)用。 Vitis 工具包括: C++ 編譯器、庫(kù)和本征函數(shù),適用于 AI 引擎和可編程邏輯( PL ) 適用于 Arm
    的頭像 發(fā)表于 01-08 09:33 ?501次閱讀
    使用AMD <b class='flag-5'>Vitis</b>進(jìn)行嵌入式設(shè)計(jì)開(kāi)發(fā)用戶指南

    助力AIoT應(yīng)用:米爾FPGA開(kāi)發(fā)板上實(shí)現(xiàn)Tiny YOLO V4

    的設(shè)置: 將 HLS 輸出的 RTL 文件導(dǎo)入 Vivado。 Vivado 創(chuàng)建模塊設(shè)計(jì),包括連接AXI 接口與 ZU3EG 的 ARM 核連接。 2.I/O 約束與時(shí)序:
    發(fā)表于 12-06 17:18

    時(shí)序約束一主時(shí)鐘與生成時(shí)鐘

    的輸出,對(duì)于Ultrascale和Ultrascale+系列的器件,定時(shí)器會(huì)自動(dòng)地接入到GT的輸出。 1.2 約束設(shè)置格式 主時(shí)鐘約束使用命令create_clock進(jìn)行創(chuàng)建,進(jìn)入Timing
    的頭像 發(fā)表于 11-29 11:03 ?512次閱讀
    時(shí)序<b class='flag-5'>約束</b>一主時(shí)鐘與生成時(shí)鐘

    AMD Vitis Unified Software Platform 2024.2發(fā)布

    近日,全新 AMD Vitis Unified Software Platform 2024.2 版本推出。
    的頭像 發(fā)表于 11-27 15:47 ?273次閱讀

    電路的兩類約束指的是哪兩類

    電路的兩類約束通常指的是電氣約束和物理約束。這兩類約束電路設(shè)計(jì)和分析起著至關(guān)重要的作用。 一
    的頭像 發(fā)表于 08-25 09:34 ?1010次閱讀

    深度解析FPGA的時(shí)序約束

    建立時(shí)間和保持時(shí)間是FPGA時(shí)序約束兩個(gè)最基本的概念,同樣芯片電路時(shí)序分析也存在。
    的頭像 發(fā)表于 08-06 11:40 ?747次閱讀
    深度解析FPGA<b class='flag-5'>中</b>的時(shí)序<b class='flag-5'>約束</b>

    如何在Draftsman創(chuàng)建PCB制造圖紙

    制作PCB的過(guò)程,繪制面板制造圖紙是不可或缺的一步。單個(gè)PCB的制造圖紙只顯示單個(gè)PCB的鉆孔和板特征,但這些需要合并到整個(gè)面板的一張圖紙。根據(jù)不同公司或制造商的具體需求,一些設(shè)計(jì)團(tuán)隊(duì)需要接手
    的頭像 發(fā)表于 07-16 09:30 ?611次閱讀
    如何在Draftsman<b class='flag-5'>中</b><b class='flag-5'>創(chuàng)建</b>PCB制造圖紙

    AMD Vitis?設(shè)計(jì)工具的Libraries新功能介紹

    AMD Vitis? 2023.2 設(shè)計(jì)工具是 Vitis 設(shè)計(jì)工具變化較大的一個(gè)版本,設(shè)計(jì)流程和界面都發(fā)生了變化。
    的頭像 發(fā)表于 05-29 09:50 ?625次閱讀
    AMD <b class='flag-5'>Vitis</b>?設(shè)計(jì)工具<b class='flag-5'>中</b>的Libraries新功能介紹

    Windows 10上創(chuàng)建并運(yùn)行AMD Vitis?視覺(jué)庫(kù)示例

    本篇文章將演示創(chuàng)建一個(gè)使用 AMD Vitis? 視覺(jué)庫(kù)的 Vitis HLS 組件的全過(guò)程。此處使用的是 Vitis Unified IDE。如果您使用的是舊版 AMD
    的頭像 發(fā)表于 05-08 14:02 ?819次閱讀
    <b class='flag-5'>在</b>Windows 10上<b class='flag-5'>創(chuàng)建</b>并運(yùn)行AMD <b class='flag-5'>Vitis</b>?視覺(jué)庫(kù)示例

    時(shí)序約束實(shí)操

    添加約束的目的是為了告訴FPGA你的設(shè)計(jì)指標(biāo)及運(yùn)行情況。在上面的生成約束之后,Result àxx.sdc中提供約束參考(請(qǐng)注意該文件不能直接添加到工程
    的頭像 發(fā)表于 04-28 18:36 ?2354次閱讀
    時(shí)序<b class='flag-5'>約束</b>實(shí)操

    Xilinx FPGA的約束設(shè)置基礎(chǔ)

    LOC約束是FPGA設(shè)計(jì)中最基本的布局約束和綜合約束,能夠定義基本設(shè)計(jì)單元FPGA芯片中的位置,可實(shí)現(xiàn)絕對(duì)定位、范圍定位以及區(qū)域定位。
    發(fā)表于 04-26 17:05 ?1262次閱讀
    Xilinx FPGA的<b class='flag-5'>約束</b>設(shè)置基礎(chǔ)

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    上一章聊了一下vitis2023.2怎樣使用classic Vitis IDE,這章我們來(lái)說(shuō)一說(shuō)基于classic Vitis IDE的工程怎么樣更新到新版本的Vitis Unifie
    發(fā)表于 03-24 17:14

    Vitis2023.2使用之—— classic Vitis IDE

    AMD官網(wǎng)下載全系統(tǒng)安裝包,或下載網(wǎng)頁(yè)版安裝包,安裝好vitis全套組件。打開(kāi)vivado建一個(gè)測(cè)試工程編譯好后,tcl命令輸入框子輸入命令 vitis –classic 即可打開(kāi)傳統(tǒng)的GUI界面
    發(fā)表于 03-24 16:15

    labview 創(chuàng)建mysql 表時(shí) 設(shè)置時(shí)間 怎么mysql是格式是date 而不是datetime?

    選擇 時(shí)間日期 但是mysql是date而不是datetime類型 ,除了sql語(yǔ)句創(chuàng)建表 ,怎么能實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)
    發(fā)表于 02-04 09:46

    機(jī)器人運(yùn)動(dòng)學(xué)的非完整約束與運(yùn)動(dòng)模型推導(dǎo)

    機(jī)器人運(yùn)動(dòng)學(xué)的運(yùn)動(dòng)學(xué)約束是指機(jī)器人在運(yùn)動(dòng)過(guò)程受到的限制,包括位置、姿態(tài)、速度和加速度等因素。這些約束會(huì)對(duì)機(jī)器人的自由度產(chǎn)生影響,從而影響
    的頭像 發(fā)表于 01-18 16:45 ?2003次閱讀
    機(jī)器人運(yùn)動(dòng)學(xué)<b class='flag-5'>中</b>的非完整<b class='flag-5'>約束</b>與運(yùn)動(dòng)模型推導(dǎo)