硬件仿真的速度和精度 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

硬件仿真 (Hardware emulation) 通过混用 SystemC 和 RTL 协同仿真在仿真 (simulation) 精度与速度之间实现平衡。SystemC 模型由纯功能模型与性能近似模型混合而成。硬件仿真模拟硬件的精度无法达到 100%,因此可以预测运行仿真与在硬件上执行应用之间存在一定的行为差异。这可能导致应用性能出现显著差异,有时也可能出现功能差异。

硬件功能差异通常表明设计中存在竞争条件或者某些不可预测的行为。因此,硬件中出现的问题在硬件仿真中可能并非总能复现,但主机与加速器之间或者加速器与存储器之间的交互的大部分相关行为都能在硬件仿真中得到复现。这使硬件仿真成为用于在硬件上运行加速器之前对其问题进行调试的最适合的工具。

下表列出了用于模拟硬件平台的模型及其精度级别。

表 1. 硬件平台
硬件功能 描述
主机到卡的 PCIe® 连接和 DMA

(XDMA 和 SlaveBridge)

对于数据中心平台,通过 PCIe 连接到 x86 主机服务器的操作是作为纯功能模型来执行的,不包含任何性能建模。因此,与 PCIe 带宽有关的任何问题都无法反映在硬件仿真运行中。
AMD UltraScale™ DDR 存储器,SmartConnect 用于 DDR 存储器控制器、AXI SmartConnect 和其他数据路径 IP 的 SystemC 模型通常为吞吐量近似模型。这些模型通常无法对硬件 IP 的精确时延进行建模。此类模型可用于测量您修改应用或加速器内核过程中的相对性能趋势。
AI 引擎 AI 引擎 SystemC 模型是周期近似模型,但它并非旨在实现 100% 周期精确。在 AI 引擎仿真器 (Simulator) 与硬件仿真之间使用公用模型,因此支持对这两个阶段进行合理比较。
AMD Versal™ NoC 和 DDR 模型 Versal NoC 和 DDR SystemC 模型均为周期近似模型。
Arm 处理子系统(PS 和 CIPS) Arm PS 是使用 QEMU 建模的,属于纯功能性执行模型。如需了解更多信息,请参阅 QEMU
用户内核(加速器) 硬件仿真 (Hardware emulation) 会对用户加速器使用 RTL。如下所示,加速器本身行为精度为 100%。但加速器周围有其他近似模型。
其他 I/O 模型 对于硬件仿真,有基于 Python 或 C 语言的通用流量生成器 (Traffic Generator) 可与仿真进程相连。您可在 AXI 协议级别生成抽象流量,用于模拟设计中的 I/O。由于这些模型均为抽象模型,因此特定硬件开发板上观测到的任何问题都不会出现在硬件仿真中。

由于硬件仿真使用 RTL 协同仿真作为其执行模型,因此执行速度相比真实硬件要慢多个数量级。AMD 建议使用较小的数据缓冲器。例如,如有可配置的矢量加法,并且在硬件中执行含 1024 个元素的 vadd,那么在仿真中可以将其限制为 16 个元素。这样您即可通过加速器来测试自己的应用,同时仍可在合理时间内完成执行。