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);
}