使用 C++ 开发 PL 内核 - 2023.2 简体中文

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

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

PL 内核代码通常属于系统内的计算密集部分,应在 AMD 器件的可编程逻辑 (PL) 区域内运行。Vitis 开发环境支持以 C 或 C++ 以及以 RTL 编写的 PL 内核。

对于基于 C/C++ 的内核,HLS 编译器 (v++) 可作为独立命令来使用,也可包含在 Vitis Unified IDE 内使用。该 IDE 可提供语言敏感型编辑器、仿真和代码分析工具、源自 C 或 C++ 代码的 RTL 高层次综合以及 C-RTL 协同仿真,用于对生成的硬件设计进行深入检验。此 HLS 编译器是推荐的 PL 内核开发工具,可在 AMD Vivado™ 传统设计流程内或 Vitis 异构设计流程内使用。

通常,现成软件无法有效转换为可编程逻辑上运行的硬件。即使软件程序可自动转换(或综合)为硬件,但要达成可接受的结果质量 (QoR),仍需要额外工作(例如,设置算法结构)以帮助 HLS 编译器达成期望的性能目标。为此,您需要了解正确编写软件的最佳实践,以确保在可编程逻辑上正常执行软件,如 Vitis HLS 用户指南(UG1399) 中的设计原则 中所述。

在 HLS 组件中编写和最优化的 C++ 内核代码可在 Vitis 工具内从 v++ 命令行进行编译(如 对 C/C++ PL 内核进行编译 中所述),或者也可从 Vitis Unified IDE 内的系统工程进行编译(如 使用 Vitis Unified IDE 中所述)。

重要: 内核函数声明必须在报头文件中使用 extern "C" 链接加以封装,或者必须封装内核源代码中的整个函数。
extern "C" {
           void kernel_function(int *in, int *out, int size);
        }