到目前為止,本文關(guān)于 AMD VersalAIE 驗(yàn)證和 AMD Vitis新的驗(yàn)證功能的研究,所有內(nèi)容都基于仿真完成。
例如我們已經(jīng)研究了如何使用 MATLAB 或 Python 進(jìn)行 Vitis 功能仿真,研究了如何使用 XSIM 模擬 AIE 設(shè)計(jì)。
在這個(gè)項(xiàng)目中,我們將研究如何使用 AMD Vitis 硬件在環(huán)(HIL)功能在實(shí)際硬件上運(yùn)行 Vitis 子系統(tǒng)設(shè)計(jì)。
AMD Vitis 硬件在環(huán)概述
要使用 Vitis HIL 功能,首先必須將 Vitis 設(shè)計(jì)封裝為 Vitis 子系統(tǒng) (VSS)。在通過(guò) Vitis 功能仿真以及 AMD Vivado 中的 XSim 仿真 確認(rèn) VSS 的功能符合預(yù)期之后,我們就可以進(jìn)入硬件測(cè)試階段。通過(guò)對(duì)硬件進(jìn)行測(cè)試,可以在將該子系統(tǒng)集成到更大規(guī)模設(shè)計(jì)之前,驗(yàn)證 VSS 是否能在硬件上按預(yù)期運(yùn)行。
從 VSS 開(kāi)始,HIL 流程會(huì)基于 VSS 創(chuàng)建一個(gè)支持 HIL 的設(shè)計(jì)。設(shè)計(jì)完成后,將創(chuàng)建 HIL 服務(wù)器,并將其與設(shè)計(jì)一起打包到 SD 卡上。目標(biāo)板卡通電并通過(guò) SD 卡啟動(dòng)后,主機(jī)系統(tǒng)即可通過(guò)以太網(wǎng)與目標(biāo)板卡進(jìn)行交互。主機(jī)系統(tǒng)可以使用 Python 或 Matlab 通過(guò)以太網(wǎng)與設(shè)計(jì)進(jìn)行通信。開(kāi)發(fā)人員能夠向目標(biāo)板卡發(fā)送測(cè)試向量,在硬件上執(zhí)行計(jì)算,并通過(guò)以太網(wǎng)將結(jié)果返回主機(jī),從而夠驗(yàn)證硬件上的行為。
目前,VCK190 評(píng)估套件支持此功能,設(shè)計(jì)可以包含 AI 引擎、HLS 或 HDL 模塊或它們的任意組合,只需它們位于 Vitis 子系統(tǒng)內(nèi)即可。
創(chuàng)建 VSS
在 AMD Vitis 中,通過(guò)使用 v++ 鏈接器將可重用的 PL 內(nèi)核和/或 AI 引擎圖打包成一個(gè)與平臺(tái)無(wú)關(guān)的組件而創(chuàng)建的 VSS(Vitis 子系統(tǒng))。該流程首先將 PL 內(nèi)核編譯成 .xo 文件(來(lái)自 HLS 或 RTL),并在需要時(shí)將 AI 引擎圖構(gòu)建成 libadf。
隨后,這些組件在 VSS 配置文件中進(jìn)行描述,該文件定義了內(nèi)核實(shí)例、子系統(tǒng)元數(shù)據(jù)以及各組件之間的互連。

VSIS 的生成方式是:針對(duì)特定目標(biāo)器件型號(hào),以 VSS 模式運(yùn)行鏈接器,生成一個(gè) .vss 歸檔文件。只要使用相同的器件,該文件就可以被重復(fù)使用、仿真或以層次化方式集成到更高級(jí)別的 Vitis 設(shè)計(jì)中。
例如,可以通過(guò)使用配置文件創(chuàng)建一個(gè)僅包含 PL 的 VSS,該文件實(shí)例化一個(gè)內(nèi)核并定義子系統(tǒng)。然后,可以使用以下命令進(jìn)行構(gòu)建,這將生成一個(gè)可重用的 `my_vss.vss` 子系統(tǒng),可以將其導(dǎo)入到另一個(gè) Vitis 項(xiàng)目中。
v++ --link --mode vss --part xcvc1902-vsva2197-2MP-e-S --config vss.cfg my_kernel.xo
創(chuàng)建 Vitis 子系統(tǒng)的另一種方法是使用 Vitis Model Composer 提供的導(dǎo)出為 VSS(Export to VSS) 功能。
在本項(xiàng)目中,我們將使用 AMD 提供的 VSS,它是 Vitis HIL 演示的一部分。這些 VSS 已以壓縮包形式附在項(xiàng)目中供使用。
準(zhǔn)備工作
首先,我們需要確保開(kāi)發(fā)機(jī)器上已安裝 Vitis 2025.2。如果尚未安裝,您可以從這里下載:
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis.htlm

安裝完 Vitis 之后,接下來(lái)我們需要準(zhǔn)備 SDK 和 RootFS,我們也可以從 AMD 網(wǎng)站下載獲取。

下載完成后,第一步是創(chuàng)建 SDK??梢酝ㄟ^(guò)解壓 Versal 通用鏡像并運(yùn)行腳本 sdk.sh 來(lái)完成。

為了能夠運(yùn)行構(gòu)建,我們需要設(shè)置幾個(gè)變量,第一個(gè) SDK_LOCAL 指向剛剛創(chuàng)建的 SDK 的目錄。

第二個(gè) SYSROOT_VERSAL 指向內(nèi)核鏡像的位置,RootFS 也是作為通用鏡像下載的一部分提供的。

現(xiàn)在我們準(zhǔn)備創(chuàng)建目標(biāo) VSS 的 SD 卡鏡像。為此,我們將以通道化器示例為例。
創(chuàng)建 HIL 服務(wù)器 SD 卡鏡像
這將是一個(gè)命令行構(gòu)建過(guò)程,因此我們首先需要從上面使用的終端啟動(dòng) Vitis 2025.2 環(huán)境。

完成后,我們將運(yùn)行該命令。


啟動(dòng)構(gòu)建流程:

構(gòu)建過(guò)程啟動(dòng)后,你會(huì)看到創(chuàng)建了一個(gè)名為 HIL_DUT 的文件夾,它是構(gòu)建的工作目錄。

不久之后,構(gòu)建過(guò)程即可完成。

在構(gòu)建的工作目錄下,您可以看到輸出的 SD 卡信息和 SD 卡鏡像。

SD 卡鏡像和主機(jī)應(yīng)用程序代碼引用的 hil_interface_spec.json 文件通過(guò)唯一的哈希碼關(guān)聯(lián),從而確保使用正確的文件對(duì),防止與之前的版本混淆。
SD 卡的內(nèi)容:

下一步是將此內(nèi)容復(fù)制到 SD 卡中,將其插入 VK190 并啟動(dòng)開(kāi)發(fā)板。
硬件在環(huán) (HIL)
使用 HIL,第一步是將 SD 卡插入 VCK190 并啟動(dòng)開(kāi)發(fā)板。

通過(guò)串口,使用用戶名 petalinux 登錄到 VCK190 上運(yùn)行的嵌入式Linux。

如果開(kāi)發(fā)板已連接到網(wǎng)絡(luò),則 DHCP 服務(wù)器應(yīng)已為其分配 IP 地址,因此可以跳過(guò)此步驟。
但如果開(kāi)發(fā)板的以太網(wǎng)線連接到 PC,則需要執(zhí)行一些步驟才能使開(kāi)發(fā)板可訪問(wèn)網(wǎng)絡(luò)。


在信道化器示例中,Python 文件夾下有兩個(gè) Python 文件。打開(kāi) Hosts 文件并編輯 VCK190 的 IP 地址。

在 VCK190 上,運(yùn)行以下命令:


要啟動(dòng)服務(wù)器,請(qǐng)運(yùn)行以下命令:


這將啟動(dòng)硬件在環(huán)服務(wù)器,等待客戶端連接到主機(jī)。
在主機(jī)上運(yùn)行 hil_host.py 文件,這將啟動(dòng) HIL 示例。您將看到 HIL 按預(yù)期處理數(shù)據(jù)。

在 VCK190 目標(biāo)上,您將看到客戶端連接,并且應(yīng)用程序開(kāi)始在客戶端的控制下運(yùn)行。

腳本詳解
本應(yīng)用使用了兩個(gè)腳本,讓我們來(lái)分析它們的關(guān)鍵要素。 wb_src 文件提供了激勵(lì)引擎,真正實(shí)現(xiàn)了硬件在環(huán) (HIL) 設(shè)置。該模塊生成一個(gè)可重復(fù)且完全可控的寬帶復(fù)雜波形,其外觀和行為都與真實(shí)信號(hào)環(huán)境非常相似。它允許啟用或禁用多達(dá) 16 個(gè)獨(dú)立的子通道,選擇性地應(yīng)用升余弦脈沖整形的 QAM 調(diào)制,甚至可以注入恒定(類似直流)通道以進(jìn)行快速的基本功能檢查。對(duì)于 HIL 至關(guān)重要的是,F(xiàn)IR 濾波器的狀態(tài)在調(diào)用之間得以保留,因此信號(hào)在各個(gè)處理模塊之間保持連續(xù)——這與硬件在實(shí)際數(shù)據(jù)流系統(tǒng)中看到的情況完全一致。






HIL_HOST.py 控制著硬件測(cè)試,它將設(shè)計(jì)作為可調(diào)用的硬件加速器部署在網(wǎng)絡(luò)上。在 Python 主機(jī)上,我們使用接口規(guī)范 JSON 實(shí)例化 HIL 客戶端,并將其指向開(kāi)發(fā)板的 IP 地址和端口。
在主處理循環(huán)中,HIL 流程與流式系統(tǒng)非常相似,使用 wb_src 生成復(fù)數(shù)樣本,并將其量化為定點(diǎn) varray,然后通過(guò) hil_chnlzr.run() 將其傳遞給 FPGA。
一個(gè)重要的實(shí)際問(wèn)題是,硬件返回的數(shù)據(jù)量并非總是均勻分布在所有輸出或不同調(diào)用之間。為了解決這個(gè)問(wèn)題,我們?cè)谥鳈C(jī)上顯式地將每個(gè)輸出流緩沖到 FIFO 中,并且僅在所有通道都有數(shù)據(jù)可用時(shí)才釋放幀。












總結(jié)
本項(xiàng)目完成了三部曲的演示,展示了如何使用硬件在環(huán)驗(yàn)證通用的 AIE、HLS 和 RTL 內(nèi)核子系統(tǒng)。這是驗(yàn)證的最后一個(gè)環(huán)節(jié),驗(yàn)證過(guò)程從功能仿真開(kāi)始,逐步過(guò)渡到在 Vivado 中進(jìn)行 RTL 仿真(使用更廣泛的設(shè)計(jì)),最終完成硬件在環(huán)驗(yàn)證。
-
amd
+關(guān)注
關(guān)注
25文章
5698瀏覽量
140246 -
matlab
+關(guān)注
關(guān)注
189文章
3028瀏覽量
239000 -
仿真
+關(guān)注
關(guān)注
55文章
4511瀏覽量
138540 -
Vitis
+關(guān)注
關(guān)注
0文章
158瀏覽量
8419
原文標(biāo)題:AMD Vitis? 硬件在環(huán) - 如何使用 Vitis 在硬件在環(huán)(HIL)上運(yùn)行 Vitis 子系統(tǒng)
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用AMD Vitis Unified IDE創(chuàng)建HLS組件
如何在AMD Vitis Unified IDE中使用系統(tǒng)設(shè)備樹
閑談Vitis AI|DPU在UltraScale平臺(tái)下的軟硬件流程(1)
使用AMD Vitis進(jìn)行嵌入式設(shè)計(jì)開(kāi)發(fā)用戶指南
Vitis2023.2使用之—— classic Vitis IDE
Vitis2023.2使用之—— updata to Vitis Unified IDE
使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享
AMD全新Vitis HLS資源現(xiàn)已推出
Vitis Unified IDE 和通用命令行參考手冊(cè)
Vitis 統(tǒng)一軟件平臺(tái)文檔
AMD Vitis? Embedded嵌入式軟件開(kāi)發(fā)套件的功能和特性概述
在Windows 10上創(chuàng)建并運(yùn)行AMD Vitis?視覺(jué)庫(kù)示例
AMD Vitis?設(shè)計(jì)工具中的Libraries新功能介紹
如何使用AMD Vitis硬件在環(huán)功能運(yùn)行Vitis子系統(tǒng)設(shè)計(jì)
評(píng)論