<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么在Vitis加速設計中為Kernel創建面積約束

XILINX開發者社區 ? 來源:XILINX開發者社區 ? 作者:Hong Han ? 2021-06-18 10:15 ? 次閱讀

本文來自賽靈思高級產品應用工程師 Hong Han

Alveo系列開發板上的平臺其實是一個DFX設計的靜態部分,在Vitis 統一軟件平臺中使用Alveo系列開發板設計加速Kernel, 最終這些Kernel的邏輯會在分布在DFX設計的動態區域。

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

我們以經典Example design“Vector Addition” 為例:

1. 打開Vitis 2020.2,創建新的 Application Project

File -》 New -》 Application project

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

3. 選擇打開Example Design “Vector Addition”

4. 對Hardware Flow 在Link階段設置 “-R2”,然后Build

此處report level 選擇-R2:VPL(Vitis Platform link) 過程輸出更多中間文件, 后續我們會用到畫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. 把這個XX_opt.dcp拷貝到另外的目錄,并用Vivado打開這個dcp 文件

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

在這個視圖可以看到平臺已經為動態區域在各個SLR中設置了相應的Pblock, 而且需要注意的是,設計中已有的Pblock是有層級關系的

例如:pblock_dynamic_region 包含三個下級pblock:

pblock_dynamic_SLR0,

pblock_dynamic_SLR1,

pblock_dynamic_SLR2,

提醒:不同平臺SLR的數目也可能是不同的。 不同平臺中自帶pblock的名字有差異是正常的。 需要用戶自己觀察。

為Kernel模塊生成的Pblock應該是pblock_dynamic_SLR0 這一級Pblock 的子模塊, 工具支持把同一個Kernel的不同部分放置到多個SLR中,用戶需要保證跨SLR路徑的時序。

8. 為Kernel模塊畫Pblock

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

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

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

《2》。 可以在Cells properties 窗口看到這個模塊當前所屬的Pblock是pblock_dynamic_region

《3》。 點擊Device 視圖中的“Draw Pblock” 按鈕, 在Device視圖上原有pblock_dynamic_SLR0的范圍內畫一個方框,新畫的Pblock所覆蓋面積要被原Pblock完全包含。 畫完之后還可以選中Pblock微調Pblock的邊界,同時為了不影響原來Pblock的結構,在TCL CONSOLE中用以下命令把新Pblock的Parent Pblock設置成pblock_dynamic_SLR0:

set_property PARENT pblock_dynamic_SLR0 [get_pblocks pblock_krnl_vadd_1]

《4》。 再看Kernel 模塊的Pblock屬性,已經變為pblock_krnl_vadd_1

《5》 在TCL CONSOLE中會打印出了畫pblock相應的約束,我們可以將這些約束拷貝到一個新的tcl文件中保存。

(在這里保存到kernel_pblock.tcl)

《6》 看下更新的Pblock結構,新生成的pblock_krnl_vadd_1 是pblock_dynamic_SLR0的Child Pblock

《7》 繼續在TCL CONSOLE執行 place_design 命令完成布局

理論上這一步可以跳過,如果你確信你畫的Pblock沒有問題的話。

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

可以看到Kernel的邏輯全部都分布在剛才所畫的Pblock 區域內

9. 在Vitis的link階段做以下設置,使之前保存的畫Pblock的命令在VPL(Vitis Platform link) 的place_design步驟執行之前生效

--vivado.prop run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=XX/kernel_pblock.tcl

10. 重新build Vitis 的Hardware flow, 之前加入的命令就會生效。

總結: 這就是一個簡單的為Kernel邏輯創建面積約束(Pblock)的過程, 實際用戶也可以為Kernel的子模塊創建Pblock,這方面工具沒有限制

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Xilinx
    +關注

    關注

    70

    文章

    2121

    瀏覽量

    119505
  • TCL
    TCL
    +關注

    關注

    10

    文章

    1668

    瀏覽量

    87995
  • DFx
    DFx
    +關注

    關注

    0

    文章

    35

    瀏覽量

    10383

原文標題:開發者分享 | 如何在Vitis加速設計中為Kernel創建面積約束

文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在Windows 10上創建并運行AMD Vitis?視覺庫示例

    本篇文章將演示創建一個使用 AMD Vitis? 視覺庫的 Vitis HLS 組件的全過程。此處使用的是 Vitis Unified IDE。如果您使用的是舊版 AMD
    的頭像 發表于 05-08 14:02 ?97次閱讀
    在Windows 10上<b class='flag-5'>創建</b>并運行AMD <b class='flag-5'>Vitis</b>?視覺庫示例

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

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

    Vitis2023.2使用之—— classic Vitis IDE

    AMD官網下載全系統安裝包,或下載網頁版安裝包,安裝好vitis全套組件。打開vivado建一個測試工程編譯好后,tcl命令輸入框子輸入命令 vitis –classic 即可打開傳統的GUI界面
    發表于 03-24 16:15

    kernel到android核心啟動過程

    總結一個圖:kernel 到android核心啟動過程 kernel鏡像執行跳轉到start_kernel開始執行,在rest_init會創建兩個k
    的頭像 發表于 12-04 16:59 ?249次閱讀
    <b class='flag-5'>kernel</b>到android核心啟動過程

    Vitis加速庫:廣泛且性能優化的開源庫

    Vitis 統一軟件平臺包括一組廣泛的、性能優化的開源庫,這些庫提供了即開即用的加速功能,并且對現有應用實現最小化代碼更改或零更改。
    的頭像 發表于 10-30 17:23 ?352次閱讀
    <b class='flag-5'>Vitis</b><b class='flag-5'>加速</b>庫:廣泛且性能優化的開源庫

    【KV260視覺入門套件試用體驗】KV260系列之Petalinux鏡像+Resnet 50探索

    的工具、功能強大的庫、多元化的模型和直觀的設計示例。Vitis AI 以高效和易用性核心,使其得以 AMD SoC 和自適應 SoC 上成功解鎖 AI 加速的全部潛能。
    發表于 10-16 04:22

    【KV260視覺入門套件試用體驗】Vitis AI 構建開發環境,并使用inspector檢查模型

    高),所以我直接使用CPU版本的Vitis AI docker來進行模型的量化、編譯和部署。Vitis AI docker 是一個預先配置好的 Vitis AI 環境,它可以讓我一個
    發表于 10-14 15:34

    【KV260視覺入門套件試用體驗】硬件加速之—使用PL加速矩陣乘法運算(Vitis HLS)

    ,基于FPGA的矩陣乘法加速器,運算效率可以比通用CPU提高一個數量級以上,非常適合大規??茖W計算和深度學習應用。 本文主旨 通過Xilinx Vitis HLS設計一個高效矩陣乘法kernel
    發表于 10-13 20:11

    【KV260視覺入門套件試用體驗】Vitis-AI加速的YOLOX視頻目標檢測示例體驗和原理解析

    本文將介紹如何使用Vitis-AI加速YOLOX模型實現視頻的目標檢測,并對相關源碼進行解讀。由于演示的示例程序源碼是Vitis-AI開源項目提供的,本文演示之前會介紹所需要的準備工
    發表于 10-06 23:32

    Vitis統一軟件平臺文檔——應用程序加速開發

    電子發燒友網站提供《Vitis統一軟件平臺文檔——應用程序加速開發.pdf》資料免費下載
    發表于 09-15 11:40 ?0次下載
    <b class='flag-5'>Vitis</b>統一軟件平臺文檔——應用程序<b class='flag-5'>加速</b>開發

    揭秘Vitis嵌入式加速平臺的創建

    電子發燒友網站提供《揭秘Vitis嵌入式加速平臺的創建.pdf》資料免費下載
    發表于 09-14 11:05 ?0次下載
    揭秘<b class='flag-5'>Vitis</b>嵌入式<b class='flag-5'>加速</b>平臺的<b class='flag-5'>創建</b>

    【KV260視覺入門套件試用體驗】部署DPU鏡像并運行Vitis AI圖像分類示例程序

    AMD 平臺上的 AI 推理。該工具鏈提供優化的IP、工具、庫、模型以及資源,例如示例設計和教程,可在整個開發過程用戶提供幫助。它在設計時充分考慮了高效率和易用性, AMD 自適應 SoC
    發表于 09-10 23:01

    【KV260視覺入門套件試用體驗】部署vitis-ai環境以及測試demo

    %BD-Vitis-AI-Library 從步驟3下載 vitis-ai-runtime-3.0.0.tar.gz 安裝位置/usr/lib 和 /usr/include 這里面包含了所有需要的庫。
    發表于 08-27 23:35

    【KV260視覺入門套件試用體驗】+02.開發環境安裝Vitis/Vivado(zmj)

    CentOS 7 和CentOS 8的操作方式有些差異,需要在配置前注意系統版本,此處以CentOS-7.9例進行說明。 1. 系統軟件安裝 Vitis需要一些軟件或者依賴庫,
    發表于 08-27 21:22

    創建約束隨機測試目標

    為了實現驗證目標,測試用例開發者需要控制測試激勵的生成以覆蓋特定的場景。測試用例開發者可以用下面這些方法控制測試激勵的創建: 添加約束條件來控制單個數據項。 使用UVM sequences來控制多個
    的頭像 發表于 06-17 14:06 ?378次閱讀
    <b class='flag-5'>創建</b><b class='flag-5'>約束</b>隨機測試目標
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>