0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在AMD Versal自适应SoC上使用QEMU+协同仿真示例

XILINX开发者社区 ? 来源:XILINX开发者社区 ? 2025-08-06 17:21 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:AMD 工程师 Stephen MacMahon

在任意设计流程中,仿真都是不可或缺的关键组成部分。它允许用户在无任何物理硬件的情况下对硬件系统进行确认。这篇简短的博客将介绍如何使用 QEMU + 协同仿真来对 AMD Versal 自适应 SoC Cortex A72 (QEMU) 上运行的固件进行仿真,该固件会访问当前 AMD Vivado Design Suite 仿真中正在进行仿真的 PL 中的 IP。本文将使用 Versal VCK190 和 Vivado 2024.2 来生成仿真环境。

注释:目前这是实验性流程,尚未受到正式的支持。

QEMU 设备树二进制对象

QEMU 使用模型来对 Versal CIPS 进行仿真。每块 AMD 开发板都有预构建的设备树二进制对象 (DTB)。在本博客中使用的是 VCK190 的 DTB。在本系列后续博文中,将介绍用户如何自行编译 DTB,从而与用户自定义系统保持更紧密的一致。目前,该演示的 DTB 文件已随本篇博文一同交付。

硬件设计

使用 Vivado 2024.2 来生成简单的块设计,如下所示:

e679151a-6c6c-11f0-a18e-92fbcf53809c.png

设置仿真脚本

此处使用的是由 Vivado 生成的仿真脚本,但要对这些脚本稍作修改:

希望仿真永久保持运行 (all)

希望运行脚本时启动 GUI (-gui)

e6841672-6c6c-11f0-a18e-92fbcf53809c.png

需要指定仿真要使用的仿真模型。在此例中,要使用的模型是 TLM。

为此,只需在 BD 上运行以下 Tcl 命令:

e6908fd8-6c6c-11f0-a18e-92fbcf53809c.png

下一步,生成输出文件,将其设为 Global。

e69c2da2-6c6c-11f0-a18e-92fbcf53809c.png

生成仿真脚本

生成顶层 RTL 封装文件,然后运行仿真。这样会生成仿真脚本,稍后在 QEMU + 协同仿真脚本中将启动这些仿真脚本。

e6a8799a-6c6c-11f0-a18e-92fbcf53809c.png

这样会在 project_1.simsim_1ehavxsim 中生成仿真脚本以供后续调用。

开发者只需使用 Tcl 命令完成这些操作即可,但希望在本篇博文中通过 GUI 演示。

导出硬件以生成 XSA 文件。此文件将在 AMD Vitis 统一软件平台中用于生成工作空间,以供在本系列后续博文中使用。

生成 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 导出的 XSA 中提取 PLM 文件:

e6b93532-6c6c-11f0-a18e-92fbcf53809c.png

这样会提取 PDI 以及一个解压后的文件夹,其中包含以上使用的 plm.elf 文件。

使用以下命令从 PDI 解压 pmc_cdo.0.0.bin 文件:

e6c2f0ae-6c6c-11f0-a18e-92fbcf53809c.png

QEMU 目前不支持从 JTAG 启动。在本博客中,将从 SD 启动。因此,需要生成 SD 卡启动镜像与启动头文件。要生成 qemu_sd.img 和 BOOT_bh.bin,首先需要生成包含 PDI 的 BOOT.BIN。

为此,可以生成如下 BIF 文件:

e6cd150c-6c6c-11f0-a18e-92fbcf53809c.png

然后,只需在此文件上运行 Bootgen 以生成 BOOT.BIN 即可:

e6d54b28-6c6c-11f0-a18e-92fbcf53809c.png

下一步,创建 QEMU 镜像文件 (qemu_sd.img) 并将 BOOT.BIN 添加到此镜像中。最后,生成启动头文件 (BOOT_bh.bin)。

e741a3b8-6c6c-11f0-a18e-92fbcf53809c.png

启动 QEMU + 协同仿真

生成 Linux 脚本以调用上述 QEMU Multi Proc 实参。例如:

e74e361e-6c6c-11f0-a18e-92fbcf53809c.png

使用 Makefile 启动 QEMU + 协同仿真。使用 tmp 目录充当 TLM 的共享目录。需使用环境变量 COSIM_MACHINE_PATH 将此目录传递给 Vivado 仿真器

e759df82-6c6c-11f0-a18e-92fbcf53809c.png

注释:xsim 路径将根据您的工程而定。

文件夹结构如下,为便于使用,已将所有文件置于单个文件夹内。

e7676fc6-6c6c-11f0-a18e-92fbcf53809c.png

要启动 QEMU + 协同仿真,运行以下命令:

e770bbb2-6c6c-11f0-a18e-92fbcf53809c.png

可以看到,一切都按期望方式启动。

e77947a0-6c6c-11f0-a18e-92fbcf53809c.png

要终止 QEMU,请运行以下命令:

e789a082-6c6c-11f0-a18e-92fbcf53809c.png

后续内容

在下一篇“开发者分享”中,我们将介绍如何在 Vitis 中连接到该 QEMU + 协同仿真,并构建和部署用户应用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5603

    浏览量

    136776
  • soc
    soc
    +关注

    关注

    38

    文章

    4414

    浏览量

    223590
  • 仿真
    +关注

    关注

    52

    文章

    4315

    浏览量

    136238
  • 开发板
    +关注

    关注

    25

    文章

    5765

    浏览量

    106303

原文标题:开发者分享|在 AMD Versal? 自适应 SoC 上使用简单的 QEMU + 协同仿真示例

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在AMD Vitis Unified 2024.2中连接到QEMU

    本篇文章我们将学习如何在 AMD Vitis Unified 2024.2 中连接到 QEMU。 这是本系列的第 2 篇博文。要了解如何设置和使用 QEMU +
    的头像 发表于 08-06 17:24 ?686次阅读
    如何在<b class='flag-5'>AMD</b> Vitis Unified 2024.2中连接到<b class='flag-5'>QEMU</b>

    【ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍(2)

    【ALINX 技术分享】AMD Versal AI Edge 自适应计算加速平台之 Versal 介绍,以及Versal 芯片开发流程的简介
    的头像 发表于 03-07 16:03 ?1863次阅读
    【ALINX 技术分享】<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> AI Edge <b class='flag-5'>自适应</b>计算加速平台之 <b class='flag-5'>Versal</b> 介绍(2)

    Versal? 自适应 SoC 助力 8K 处理 – 为 8K 做好准备(3)

    前代产品的带宽,从而使接口具备更多数据通道、更高速率,或二者兼备。 AMD Versal 自适应 SoC(片系统)非常适合此类接口(线速
    的头像 发表于 08-16 08:10 ?934次阅读

    Versal 自适应SoC设计指南

    电子发烧友网站提供《Versal 自适应SoC设计指南.pdf》资料免费下载
    发表于 12-14 16:22 ?1次下载
    <b class='flag-5'>Versal</b> <b class='flag-5'>自适应</b><b class='flag-5'>SoC</b>设计指南

    Versal自适应SoC系统集成和 确认方法指南

    电子发烧友网站提供《Versal自适应SoC系统集成和 确认方法指南.pdf》资料免费下载
    发表于 01-03 10:48 ?0次下载
    <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b>系统集成和 确认方法指南

    AMD率先推出符合DisplayPort? 2.1 8K视频标准的FPGA和自适应SoC

    AMD UltraScale+ FPGA 和 AMD Versal 自适应 SoC 产品系列已率先成为业界符合 VESA DisplayPo
    的头像 发表于 01-24 09:18 ?870次阅读

    AMD发布第二代Versal自适应SoC,AI嵌入式领域再提速

    AMD表示,第二代Versal系列自适应SoC搭载全新的AI引擎,相较上一代Versal AI Edge系列,每瓦TOPS功率可实现最多3倍
    的头像 发表于 04-11 16:07 ?1284次阅读

    AMD Versal? Adaptive SoC CPM PCIE PIO EP设计CED示例

    本文可让开发者们看懂 AMD Vivado Design Tool 2023.2 中的“AMD Versal Adaptive SoC CPM PCIE PIO EP 设计”CED
    的头像 发表于 05-10 09:39 ?1104次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b>? Adaptive <b class='flag-5'>SoC</b> CPM PCIE PIO EP设计CED<b class='flag-5'>示例</b>

    第二代AMD Versal Prime系列自适应SoC的亮点

    Versal Prime 系列自适应 SoC 视频相关指标中提供了至高 2 倍的性能1,充分释放创造力,是打造多通道 4K 和 8K 内容捕获、制作和分发设备的理想芯片平台。
    的头像 发表于 09-14 15:32 ?1050次阅读
    第二代<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> Prime系列<b class='flag-5'>自适应</b><b class='flag-5'>SoC</b>的亮点

    AMD Versal自适应SoC CPM5 QDMA的Tandem PCIe启动流程介绍

    本文将从硬件设计和驱动使用两个方面介绍基于 CPM5 QDMA 的 AMD Versal 自适应 SoC 的 Tandem 设计和启动流程。
    的头像 发表于 09-18 10:07 ?1819次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b> CPM5 QDMA的Tandem PCIe启动流程介绍

    AMD Versal自适应SoC GTM如何用XSIM仿真和观察PAM4信号

    可以传输两个 Bit 的信息,相比传统的 NRZ 模式,信号传输速率相当于原来的两倍,当前主流的 400G 光模块广泛采用 PAM4 技术。AMD Versal 自适应 SoC 的 G
    的头像 发表于 11-22 13:49 ?1019次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b> GTM如何用XSIM<b class='flag-5'>仿真</b>和观察PAM4信号

    AMD Versal自适应SoC DDRMC如何使用Micron仿真模型进行仿真

    AMD Versal 自适应 SoC 器件 DDR4 硬核控制器 DDRMC 跑仿真时,按照
    的头像 发表于 01-10 13:33 ?1039次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b> DDRMC如何使用Micron<b class='flag-5'>仿真</b>模型进行<b class='flag-5'>仿真</b>

    AMD Versal自适应SoC器件Advanced Flow概览(

    最新发布的 AMD Vivado Design Suite 2024.2 中,引入的新特性之一是启用了仅适用于 AMD Versal 自适应
    的头像 发表于 01-17 10:09 ?780次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b>器件Advanced Flow概览(<b class='flag-5'>上</b>)

    AMD Versal自适应SoC器件Advanced Flow概览(下)

    AMD Vivado Design Suite 2024.2 版本中,Advanced Flow 自动为所有 AMD Versal 自适应
    的头像 发表于 01-23 09:33 ?810次阅读
    <b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b><b class='flag-5'>自适应</b><b class='flag-5'>SoC</b>器件Advanced Flow概览(下)

    利用AMD VERSAL自适应SoC的设计基线策略

    您是否准备将设计迁移到 AMD Versal 自适应 SoC?设计基线是一种行之有效的时序收敛方法,可在深入研究复杂的布局布线策略之前,帮您的 RTL 设计奠定坚实的基础。跳过这些步骤
    的头像 发表于 06-04 11:40 ?331次阅读