在任意設(shè)計(jì)流程中,仿真都是不可或缺的關(guān)鍵組成部分。它允許用戶在無任何物理硬件的情況下對(duì)硬件系統(tǒng)進(jìn)行確認(rèn)。這篇簡(jiǎn)短的博客將介紹如何使用 QEMU + 協(xié)同仿真來對(duì) AMD Versal 自適應(yīng) SoC Cortex A72 (QEMU) 上運(yùn)行的固件進(jìn)行仿真,該固件會(huì)訪問當(dāng)前 AMD Vivado Design Suite 仿真中正在進(jìn)行仿真的 PL 中的 IP。本文將使用 Versal VCK190 和 Vivado 2024.2 來生成仿真環(huán)境。
注釋:目前這是實(shí)驗(yàn)性流程,尚未受到正式的支持。
QEMU 設(shè)備樹二進(jìn)制對(duì)象
QEMU 使用模型來對(duì) Versal CIPS 進(jìn)行仿真。每塊 AMD 開發(fā)板都有預(yù)構(gòu)建的設(shè)備樹二進(jìn)制對(duì)象 (DTB)。在本博客中使用的是 VCK190 的 DTB。在本系列后續(xù)博文中,將介紹用戶如何自行編譯 DTB,從而與用戶自定義系統(tǒng)保持更緊密的一致。目前,該演示的 DTB 文件已隨本篇博文一同交付。
硬件設(shè)計(jì)
使用 Vivado 2024.2 來生成簡(jiǎn)單的塊設(shè)計(jì),如下所示:
設(shè)置仿真腳本
此處使用的是由 Vivado 生成的仿真腳本,但要對(duì)這些腳本稍作修改:
希望仿真永久保持運(yùn)行 (all)
希望運(yùn)行腳本時(shí)啟動(dòng) GUI (-gui)
需要指定仿真要使用的仿真模型。在此例中,要使用的模型是 TLM。
為此,只需在 BD 上運(yùn)行以下 Tcl 命令:
下一步,生成輸出文件,將其設(shè)為 Global。
生成仿真腳本
生成頂層 RTL 封裝文件,然后運(yùn)行仿真。這樣會(huì)生成仿真腳本,稍后在 QEMU + 協(xié)同仿真腳本中將啟動(dòng)這些仿真腳本。
這樣會(huì)在 project_1.simsim_1ehavxsim 中生成仿真腳本以供后續(xù)調(diào)用。
開發(fā)者只需使用 Tcl 命令完成這些操作即可,但希望在本篇博文中通過 GUI 演示。
導(dǎo)出硬件以生成 XSA 文件。此文件將在 AMD Vitis 統(tǒng)一軟件平臺(tái)中用于生成工作空間,以供在本系列后續(xù)博文中使用。
生成 QEMU
此處將使用以下 QEMU 實(shí)參。將 QEMU 實(shí)參置于 Linux 腳本中。例如,分別使用 run_qemu_aarch64.sh 和 run_qemu_microblazeel.sh。
Aarch64 QEMU 實(shí)參
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 實(shí)參
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
此時(shí)需要一些文件??梢允褂?HSI 從 Vivado 導(dǎo)出的 XSA 中提取 PLM 文件:
這樣會(huì)提取 PDI 以及一個(gè)解壓后的文件夾,其中包含以上使用的 plm.elf 文件。
使用以下命令從 PDI 解壓 pmc_cdo.0.0.bin 文件:
QEMU 目前不支持從 JTAG 啟動(dòng)。在本博客中,將從 SD 啟動(dòng)。因此,需要生成 SD 卡啟動(dòng)鏡像與啟動(dòng)頭文件。要生成 qemu_sd.img 和 BOOT_bh.bin,首先需要生成包含 PDI 的 BOOT.BIN。
為此,可以生成如下 BIF 文件:
然后,只需在此文件上運(yùn)行 Bootgen 以生成 BOOT.BIN 即可:
下一步,創(chuàng)建 QEMU 鏡像文件 (qemu_sd.img) 并將 BOOT.BIN 添加到此鏡像中。最后,生成啟動(dòng)頭文件 (BOOT_bh.bin)。
啟動(dòng) QEMU + 協(xié)同仿真
生成 Linux 腳本以調(diào)用上述 QEMU Multi Proc 實(shí)參。例如:
使用 Makefile 啟動(dòng) QEMU + 協(xié)同仿真。使用 tmp 目錄充當(dāng) TLM 的共享目錄。需使用環(huán)境變量 COSIM_MACHINE_PATH 將此目錄傳遞給 Vivado 仿真器。
注釋:xsim 路徑將根據(jù)您的工程而定。
文件夾結(jié)構(gòu)如下,為便于使用,已將所有文件置于單個(gè)文件夾內(nèi)。
要啟動(dòng) QEMU + 協(xié)同仿真,運(yùn)行以下命令:
可以看到,一切都按期望方式啟動(dòng)。
要終止 QEMU,請(qǐng)運(yùn)行以下命令:
后續(xù)內(nèi)容
在下一篇“開發(fā)者分享”中,我們將介紹如何在 Vitis 中連接到該 QEMU + 協(xié)同仿真,并構(gòu)建和部署用戶應(yīng)用。
-
amd
+關(guān)注
關(guān)注
25文章
5622瀏覽量
138352 -
soc
+關(guān)注
關(guān)注
38文章
4472瀏覽量
226096 -
仿真
+關(guān)注
關(guān)注
52文章
4356瀏覽量
137230 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5990瀏覽量
109923
原文標(biāo)題:開發(fā)者分享|在 AMD Versal? 自適應(yīng) SoC 上使用簡(jiǎn)單的 QEMU + 協(xié)同仿真示例
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何在AMD Vitis Unified 2024.2中連接到QEMU

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

Versal? 自適應(yīng) SoC 助力 8K 處理 – 為 8K 做好準(zhǔn)備(3)
Versal 自適應(yīng)SoC設(shè)計(jì)指南

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

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

第二代AMD Versal Prime系列自適應(yīng)SoC的亮點(diǎn)

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

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

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

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

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

評(píng)論