在任意設(shè)計流程中,仿真都是不可或缺的關(guān)鍵組成部分。它允許用戶在無任何物理硬件的情況下對硬件系統(tǒng)進行確認。這篇簡短的博客將介紹如何使用 QEMU + 協(xié)同仿真來對 AMD Versal 自適應(yīng) SoC Cortex A72 (QEMU) 上運行的固件進行仿真,該固件會訪問當前 AMD Vivado Design Suite 仿真中正在進行仿真的 PL 中的 IP。本文將使用 Versal VCK190 和 Vivado 2024.2 來生成仿真環(huán)境。
注釋:目前這是實驗性流程,尚未受到正式的支持。
QEMU 設(shè)備樹二進制對象
QEMU 使用模型來對 Versal CIPS 進行仿真。每塊 AMD 開發(fā)板都有預(yù)構(gòu)建的設(shè)備樹二進制對象 (DTB)。在本博客中使用的是 VCK190 的 DTB。在本系列后續(xù)博文中,將介紹用戶如何自行編譯 DTB,從而與用戶自定義系統(tǒng)保持更緊密的一致。目前,該演示的 DTB 文件已隨本篇博文一同交付。
硬件設(shè)計
使用 Vivado 2024.2 來生成簡單的塊設(shè)計,如下所示:
設(shè)置仿真腳本
此處使用的是由 Vivado 生成的仿真腳本,但要對這些腳本稍作修改:
希望仿真永久保持運行 (all)
希望運行腳本時啟動 GUI (-gui)
需要指定仿真要使用的仿真模型。在此例中,要使用的模型是 TLM。
為此,只需在 BD 上運行以下 Tcl 命令:
下一步,生成輸出文件,將其設(shè)為 Global。
生成仿真腳本
生成頂層 RTL 封裝文件,然后運行仿真。這樣會生成仿真腳本,稍后在 QEMU + 協(xié)同仿真腳本中將啟動這些仿真腳本。
這樣會在 project_1.simsim_1ehavxsim 中生成仿真腳本以供后續(xù)調(diào)用。
開發(fā)者只需使用 Tcl 命令完成這些操作即可,但希望在本篇博文中通過 GUI 演示。
導(dǎo)出硬件以生成 XSA 文件。此文件將在 AMD Vitis 統(tǒng)一軟件平臺中用于生成工作空間,以供在本系列后續(xù)博文中使用。
生成 QEMU
此處將使用以下 QEMU 實參。將 QEMU 實參置于 Linux 腳本中。例如,分別使用 run_qemu_aarch64.sh 和 run_qemu_microblazeel.sh。
Aarch64 QEMU 實參
echo 'INFO: Starting aarch64 QEMU'echo 'INFO: TCP PORT is free 9000'echo 'INFO: qemu-system-aarch64 -nographic -M arm-generic-fdt -serial null -serial null -serial mon:stdio -serial null -display none -boot mode=5 -drive if=sd,index=1,file=qemu_sd.img,format=raw -machine-path /tmp/tmp_dir -sync-quantum 1000000 -hw-dtb board-versal-ps-cosim-vitis-vck190.dtb -m 8G -display none -gdb tcp::9000 -net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic'qemu-system-aarch64 -nographic -M arm-generic-fdt -serial null -serial null -serial mon:stdio -serial null -display none -boot mode=5 -drive if=sd,index=1,file=qemu_sd.img,format=raw -machine-path /tmp/tmp_dir -sync-quantum 1000000 -hw-dtb board-versal-ps-cosim-vitis-vck190.dtb -m 8G -display none -gdb tcp::9000 -net nic,netdev=eth0 -netdev user,id=eth0,tftp=/tftpboot -net nic
Microblazeel QEMU 實參
echo 'INFO: Starting microblaze QEMU'echo 'INFO: qemu-system-microblazeel -M microblaze-fdt -serial mon:stdio -display none -device loader,addr=0xf0000000,data=0xba020004,data-len=4 -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 -device loader,file=pmc_cdo.0.0.bin,addr=0xf2000000 -device loader,file=BOOT_bh.bin,addr=0xf201e000,force-raw=on -device loader,file=plm.elf -hw-dtb board-versal-pmc-virt.dtb -machine-path /tmp/tmp_dir -device loader,addr=0xF1110624,data=0x0,data-len=4 -device loader,addr=0xF1110620,data=0x1,data-len=4'qemu-system-microblazeel -M microblaze-fdt -serial mon:stdio -display none -device loader,addr=0xf0000000,data=0xba020004,data-len=4 -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 -device loader,file=pmc_cdo.0.0.bin,addr=0xf2000000 -device loader,file=BOOT_bh.bin,addr=0xf201e000,force-raw=on -device loader,file=plm.elf -hw-dtb board-versal-pmc-virt.dtb -machine-path /tmp/tmp_dir -device loader,addr=0xF1110624,data=0x0,data-len=4 -device loader,addr=0xF1110620,data=0x1,data-len=4
此時需要一些文件??梢允褂?HSI 從 Vivado 導(dǎo)出的 XSA 中提取 PLM 文件:
這樣會提取 PDI 以及一個解壓后的文件夾,其中包含以上使用的 plm.elf 文件。
使用以下命令從 PDI 解壓 pmc_cdo.0.0.bin 文件:
QEMU 目前不支持從 JTAG 啟動。在本博客中,將從 SD 啟動。因此,需要生成 SD 卡啟動鏡像與啟動頭文件。要生成 qemu_sd.img 和 BOOT_bh.bin,首先需要生成包含 PDI 的 BOOT.BIN。
為此,可以生成如下 BIF 文件:
然后,只需在此文件上運行 Bootgen 以生成 BOOT.BIN 即可:
下一步,創(chuàng)建 QEMU 鏡像文件 (qemu_sd.img) 并將 BOOT.BIN 添加到此鏡像中。最后,生成啟動頭文件 (BOOT_bh.bin)。
啟動 QEMU + 協(xié)同仿真
生成 Linux 腳本以調(diào)用上述 QEMU Multi Proc 實參。例如:
使用 Makefile 啟動 QEMU + 協(xié)同仿真。使用 tmp 目錄充當 TLM 的共享目錄。需使用環(huán)境變量 COSIM_MACHINE_PATH 將此目錄傳遞給 Vivado 仿真器。
注釋:xsim 路徑將根據(jù)您的工程而定。
文件夾結(jié)構(gòu)如下,為便于使用,已將所有文件置于單個文件夾內(nèi)。
要啟動 QEMU + 協(xié)同仿真,運行以下命令:
可以看到,一切都按期望方式啟動。
要終止 QEMU,請運行以下命令:
后續(xù)內(nèi)容
在下一篇“開發(fā)者分享”中,我們將介紹如何在 Vitis 中連接到該 QEMU + 協(xié)同仿真,并構(gòu)建和部署用戶應(yīng)用。
-
amd
+關(guān)注
關(guān)注
25文章
5626瀏覽量
138597 -
soc
+關(guān)注
關(guān)注
38文章
4481瀏覽量
226613 -
仿真
+關(guān)注
關(guān)注
52文章
4363瀏覽量
137347 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
6017瀏覽量
110431
原文標題:開發(fā)者分享|在 AMD Versal? 自適應(yīng) SoC 上使用簡單的 QEMU + 協(xié)同仿真示例
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何在AMD Vitis Unified 2024.2中連接到QEMU

【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺之 Versal 介紹(2)

AMD Versal自適應(yīng)SoC內(nèi)置自校準的工作原理
Versal? 自適應(yīng) SoC 助力 8K 處理 – 為 8K 做好準備(3)
Versal 自適應(yīng)SoC設(shè)計指南

Versal自適應(yīng)SoC系統(tǒng)集成和 確認方法指南

AMD率先推出符合DisplayPort? 2.1 8K視頻標準的FPGA和自適應(yīng)SoC
AMD發(fā)布第二代Versal自適應(yīng)SoC,AI嵌入式領(lǐng)域再提速
AMD Versal? Adaptive SoC CPM PCIE PIO EP設(shè)計CED示例

AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動流程介紹

AMD Versal自適應(yīng)SoC GTM如何用XSIM仿真和觀察PAM4信號

AMD Versal自適應(yīng)SoC DDRMC如何使用Micron仿真模型進行仿真

AMD Versal自適應(yīng)SoC器件Advanced Flow概覽(上)

AMD Versal自適應(yīng)SoC器件Advanced Flow概覽(下)

評論