处理 HLS 内核的功能模型 - 2022.1 简体中文

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

在硬件仿真期间,Vitis HLS 内核的功能模型的使用方法属于高级用例,它支持在功能模式下进行内核编译,使用围绕 C 语言代码的 SystemC 封装文件来生成 XO。

HW Emulation 主要用于硬件内核调试,可提供内核活动的周期精确的详细视图。功能 (TLM) 模型能在功能模式下(而不是使用 RTL 代码)编译所需内核,从而加速仿真。由于无需完整执行 C 语言到 RTL 综合,因此内核编译时间更短,并且由于对 C 语言代码进行仿真而不是进行 RTL 仿真,因此执行时间也更短。您也可以在硬件仿真中混用 C 语言和 RTL 内核以加速 RTL 块的调试。

功能模型特性仅支持对 AXI4-Stream 接口 (axis) 进行建模。但不同于周期精确的模型,凭借此方法,内核将成为纯功能内核,无时延信息。

用户 HLS 函数使用 TLM 接口封装到 SystemC 模块内,根据生成的代码创建 IP,这样即可生成兼容 HW_EMU 的 XO,可供在 IP integrator 内用于通过硬件仿真流程来拼接 v++ 链接设计。这样还可支持 Wrapper IP 与其它 RTL 和 SystemC 模型进行交流。因此以功能模式编译的 HLS C/C++ 内核将在仿真期间拥有 TLM 传输事务,用户可在存储器模型(如 DDR)与 TLM 内核之间看到流量。

提示: 功能模型使用 C 语言代码执行内核的 C 语言仿真。不同于周期精确的模型,内核将成为纯功能内核,无时延信息。但在硬件仿真期间,您仍可通过 TLM 接口看到边界传输事务。

利用功能模型执行 XO 生成

v++ 编译步骤期间创建硬件仿真 (hw_emu) XO 文件时,可以提供开关以描述执行功能仿真的意图,即生成 XO 并且在 C 语言代码中包含 SystemC 封装文件的目的。您需要在编译期间提供 --advanced.param 选项。只需添加编译器选项 --advanced.param compiler.emulationMode=func 即可,如 --advanced 选项 中所述。

生成的 XO 使用 v++ --link 命令来链接,与常规 XO 一样。如需获取示例,请访问 https://github.com/Xilinx/Vitis_Accel_Examples/tree/master/emulation/stream_func_mode