概观
AMD Vitis™ HLS 助力直观设计与高效开发
AMD Vitis™ HLS 工具允许用户将 C/C++ 函数综合至 RTL,从而轻松创建复杂的 FPGA 算法。Vitis HLS 工具与面向综合和布局布线的 Vivado™ Design Suite 以及面向异构系统设计和应用的 Vitis™ 统一软件平台紧密集成。
- 使用 Vitis HLS 流程,用户可针对 C 代码应用指令,创建专门用于所需实现方案的 RTL。
- 不仅可从 C 语言源代码创建多个设计架构,而且还可启用用于高质量自动建构校正 RTL 的路径。
- C 语言仿真可用于验证设计,相对于基于 RTL 的传统仿真,能够实现更快的迭代。
- Vitis HLS 工具具有一系列丰富的分析及调试工具,可促进设计优化。

设计方法

Vitis HLS 编程模型
Vitis HLS C 代码旨在充分利用 AMD 自适应 SoC 和 FPGA 架构所提供的优势和特性。
Vitis HLS 工具支持并行编程构造,可为所需的实现方案建模。这些构造包括:
- 允许进程级并行的 HLS 任务
- 允许数据级并行的 HLS 矢量
- 允许在并行任务之间进行通信的 HLS 流
- 综合编译指示可用来控制结果。这些编译指示包括流水线、展开、数组分组以及接口协议等。
- 有关更多详细信息,请参阅 Vitis 高层次综合用户指南中的“HLS 编程员指南”一节。
MATLAB-to-HLS C++ 代码生成
借助 MATLAB R2025a 中 MathWorks HDL Coder 的代码生成功能,可将在 MATLAB® 中编写的函数综合至适用于 AMD Vitis™ HLS 的 C++ 代码。
通过这种方式生成的可综合 C++ 代码可用作 Vitis™ HLS 的输入。此工作流程有助于加快转换过程,推动从高层算法设计(通常在 MATLAB 中完成)更快进入低层 RTL 实现。
您可以使用 MATLAB 和 HDL Coder 设计和创建测试激励文件,然后使用 HDL Coder 生成代码并将其输入到 Vitis HLS,以便对 AMD 自适应 SoC 和 FPGA 进行仿真与综合。
如需了解更多信息,请访问 MathWorks HDL Coder 页面。
C 至 RTL 的转换
Vitis HLS 工具将对 C 语言代码的不同部分执行不同的综合:
- C/C++ 代码的顶层函数参数不仅可综合成 RTL I/O 端口,而且还可通过接口综合硬件协议自动执行。
- 其他 C 语言函数将综合至 RTL 模块中,保持设计层级。
- C 语言函数循环保持滚动或流水线化,以提高性能。
- C 语言代码数组可指向任何内存资源,如 BRAM、LUTRAM 和 URAM 等。
- 时延、初始化间隔、循环迭代时延和资源利用率等性能指标可使用综合报告查看。
- Vitis HLS 工具的编译指示及优化指令允许配置 C/C++ 代码的综合结果。


仿真和验证
Vitis HLS 工具内置仿真流程,可加速验证进程:
- C 语言仿真将验证 C 代码的功能性。该步骤很快,并会使用 C 语言测试激励文件。
- C/RTL 协同仿真可重复使用 C 语言测试激励文件,对所生成的 RTL 进行验证:验证 RTL 在功能上是否与 C 语言源代码相同。
- 该流程集成分析、调试和波形查看功能,以及流行的仿真器支持。
IP 导出
Vitis HLS 工具的输出是一个 RTL 执行方案,其可打包成一个已编译的目标文件 (.xo),也可导出至 RTL IP:
- 已编译的目标文件 (.xo) 可用于创建硬件加速函数,用于 Vitis 应用开发流程。
- RTL IP 的使用方式有三种:
- 使用 Vivado™ IP integrator 工具添加
- 在 Vivado IDE 中作为 RTL 块导入
- 在适用于 DSP 的 Vitis Model Composer 应用中用作单个块集

新增功能
- 2025.1
- 2024.2
- 2024.1
- 2023.2
- 2023.1
- 2022.2
- 2022.1
- 2021.2
- 2021.1
2025.1 版本亮点
- 使用 HDL Coder 和 MATLAB R2025a,通过 MATLAB (.m) 设计生成适用于 Vitis HLS 的 C++ 代码
- 全新 Vitis HLS 易用性功能
- 针对在执行过程中更改的线输入和 AXI Lite 输入(直接 I/O)进行建模
- 针对顶层 HLS 设计的性能编译指示(现已开放抢先体验)
- 通过专用的内部库对 Versal Complex Multiplier 提供支持
- Vitis HLS GUI 优化
- 通过 Clang 16 初步支持 C++17
2024.2 版本亮点
Vitis HLS 2024.2 版本包含大量功能,使用户可以更轻松地开发和调试 HLS 设计;其中包括
- 针对在执行过程中更改的标量/线输入(直接 I/O)进行建模
- 支持任意精度浮点类型
- 将 HLS 代码映射到 DSP 块
- 用户确定的代码执行顺序
- 以用户友好的方式显示数据类型的 HLS 调试器(使用 GNU 调试器的 prettyprint 技术)
2024.1 版本亮点
- 新模具编译指示可简化图像和视频过滤器的 HLS C++ 代码
新的库函数向导可以接入 AMD Vitis 库 GitHub 仓库
- 为 AMD Vivado 设计工具创建“Solver”和“Vision”(兼容 OpenCV)IP
- 运行可用库示例
内存接口的编译指示 (ap_memory) 现在可以绑定 AMD Vivado IP Integrator 的端口
最新 HLS 组件比较可并列显示 2 个或更多组件的指标
支持用户提供程序 RTL 代码替换 C++ 函数(黑盒流程)
代码分析器现在可解聚 C++ 结构体成员,以精细化性能分析
适用于 HLS 全局 FSM 编码和安全状态选择的新用户控制
在 C 仿真期间访问 Clang 消错工具,以执行地址及初始化检查
2023.2 版本亮点
- 面向 HLS 组件的最新 Vitis™ Unified IDE
- 最新 Vitis HLS 许可证要求
- 用于在运行 C 综合之前获得性能估计的最新代码分析器特性
- AXI 接口的增强功能:
- 增强了 HLS AXI Stream 侧信道支持
- 支持用户可配置的 AXI 主接口缓存
- 其他增强功能:
- 新的代码复杂性报告,可在 C 合成过程中识别设计大小问题
- 编译时间缩短:与 2023.1 相比,2023.2 的平均编译时间缩短 20%1
2023.1 版本亮点
- 性能提升2:与 2022.2 相比,2023.1 的平均时延缩短了 5.2%
- 在 Vitis HLS 工具中下载、查看和实例化 L1 库函数的简单方法。观看视频
- 在 Vitis HLS 工具中增强了对 AXI 传输事务及突发报告的支持
2022.2 版本亮点
- 为数据处理应用编写“任务级并行”代码的新方法
- 用户可以使用新的 hls::task 函数显式定义任务级并行化
- 针对纯串流设计(例如分组交换)建模变得更容易
- 性能和时序方面的改进
- 工具会自动推断展开、流水线、数组分组和内联编译指示,以获得更好的性能
- 增强了分析和调试功能
- 新功能,可在生成的 RTL 代码中综合来自 C 源代码的 print 语句
- 仿真 RTL 后,这允许跟踪代码块的执行以及变量的值
- 易于使用
- FFT 和 FIR IP 现在支持 hls::stream 接口
2022.1 版本亮点
- 全新时间轴跟踪查看器
- 显示设计中所有存活函数(即那些转换到模块的函数)的运行时配置文件
- 查看数据流区域在协同仿真后的行为特别实用。Vitis™ HLS 原生 - 不再需要启动 xsim 波形查看器
- 新增性能编译指示
- 在 HLS 中,使用 #pragma hls performance 指定吞吐量目标
- 如果可能的话,HLS 将尝试使用最少的资源来达标
- HLS 将指示所执行的转换,而且如果不能达标,还将指示限制因素
- 对块流类型的数组分组支持
- hls::stream 增强,其中每个元素都是一个数组
- 可用于将大型数组处理分解成更小的流水线化片段
2021.2 版本亮点
- 用户控制的突发推理
- 用户可以采用新引入的手动突发优化
- 添加一个新的“hls::burst_maxi”类型来手动控制突发行为 提供与新类搭配使用的全新 HLS API。
- 在 HLS 设计中,用户需要了解 AXI AMBA 协议和硬件事务处理层面的建模
- 时序与 QoR 增强
- 提高了 HLS 时序估算精度。当 HLS 报告时序收敛时,Vivado™ RTL 综合也应该预期满足时序要求
- EoU 增强
- 在 C 语言综合报告中添加接口适配器报告
- 用户需要知道接口适配器对其设计的资源影响
- 接口适配器具有可影响设计 QoR 的可变属性
- 在综合报告中添加新章节,以显示编译指示列表和编译指示警告
- 增强分析与报告功能
- 全新鼠标拖动式缩放功能
- 全新概观特性,不仅可显示全图,而且用户还可放大整体图形的各部位
- 所有函数及环路都与它们的仿真数据一起显示
- 现已提供可在仿真后使用的全新时间轴跟踪查看器。该查看器可显示设计的运行时概况,并允许用户留在 Vitis HLS GUI 中
2021.1 版本亮点
- 图形用户界面中新增的“Flow Navigator”,可快速访问流阶段和报告。 上下文“合成、分析、调试”视图合并到一般默认上下文中
- 为 BIND_OP 和 BIND_STORAGE 指令新增了一个综合报告部分
- 全新的综合后文本报告将反映图形用户界面综合报告中提供的信息
- IP 导出和 Vivado™ 实现运行小部件使用各种选项进行重新设计,可将设置和约束文件传递给 Vivado
- 全新函数调用图查看器,可直观呈现函数和环路,其可使用可选热图高亮显示,以检查 II、时延或 DSP/BRAM 利用率热点
- Versal™ 时序校准以及 DSP 块原生浮点运算的全新控制(config_op 的 -precision 选项)
- 备用可冲洗流水线选项已得到改进(自由运行流水线,又称“frp”)
- 在 Vitis 中,重塑 m_axi 接口应该通过 hls::vector 类型完成
- s_axilite 和 m_axi 数据存储的新自定义选项可以是“auto”、“uram”、“bram”或“lutram”,允许您在设计中调整 RAM 利用率
- 在 Vitis 中,为内核引入了一种全新的连续(又称“永不停止”)运行模式
- 已恢复 axi_lite 辅助时钟选项
成功案例
Vitis HLS 客户成功案例:Intuitive Surgical
作为手术机器人领域的全球领导者,Intuitive Surgical 使用 FPGA 来满足部分高性能图像处理需求。
该公司需要完成一项功能的原型设计,即以 4K 分辨率和 60 帧/秒 (FPS) 实现图像扭曲的功能。这一设计对于延迟具有严格要求。由于时间限制,该公司决定采用 Vitis HLS 来实现这项功能。AMD Vitis HLS 团队给予技术支持,帮助该公司从零开始编写代码。整个设计流程持续了约两周时间,而且成功实现了预期的性能目标。
“在 FPGA 中实现图像扭曲功能是一项复杂任务,若使用 RTL,可能需要耗费数月时间。通过采用基于 Vitis HLS 的方法,我们得以快速设计并实现此功能。虽然设计尚未完全优化,但我们完成原型设计的速度令人惊叹,这充分展现了 HLS 的显著优势。这种方法促进了快速迭代,在 AMD HLS 团队的支持下,我们对所应用的编译指示进行调整,以前所未有的速度成功在 FPGA SoC 上实现并运行此功能。我们一直在使用 HLS 来开发图像处理功能,今后也将一直如此。”
- Intuitive Surgical 固件与图像处理高级经理 Azhar Sufi
利用 Vitis HLS 加快设计空间探索
“依我看,AMD Vitis™ HLS 工具的主要优势是设计空间探索特性。您可通过使用优化指令(流水线以及展开等),用适当的时间生成不同的架构及实现方案。如果使用 VHDL/Verilog 手动编码,则无法做到这一点。Vitis HLS 的一个良好特性是可以对 HDL 代码进行协同仿真和验证,以确保 HDL 代码功能正确。”德国普福尔茨海姆大学教授 Frank Kesel 博士
客户案例研究

资源
附注
- 根据 2023 年 8 月 10 日的测试结果,对比 Vitis HLS 2023.2 和 Vitis HLS 2023.1,在 1000 个 Vitis L2/L3 代码库设计上测试。测试期间的系统配置:Intel Xeon E5-2690 v4 @ 2.6GHz CPU,256GB RAM,RedHat Enterprise Linux 8.6.实际性能会有所不同。系统制造商可能会采用不同的配置,因而得到不同的结果。-VGL-04
- 截至 2023 年 2 月 12 日,在所有 1208 个 Vitis L1 库 C 代码设计上完成基准测试。所有设计都使用一个配备 2P Intel Xeon E5-2690 CPU 的系统运行,系统装有 CentOS Linux,启用 SMT 并禁用了 Turbo Boost。预计硬件配置不会影响软件测试结果。结果可能会因软件及固件设置和配置而异 - VGL-03
- 根据 2023 年 8 月 10 日的测试结果,对比 Vitis HLS 2023.2 和 Vitis HLS 2023.1,在 1000 个 Vitis L2/L3 代码库设计上测试。测试期间的系统配置:Intel Xeon E5-2690 v4 @ 2.6GHz CPU,256GB RAM,RedHat Enterprise Linux 8.6.实际性能会有所不同。系统制造商可能会采用不同的配置,因而得到不同的结果。-VGL-04
- 截至 2023 年 2 月 12 日,在所有 1208 个 Vitis L1 库 C 代码设计上完成基准测试。所有设计都使用一个配备 2P Intel Xeon E5-2690 CPU 的系统运行,系统装有 CentOS Linux,启用 SMT 并禁用了 Turbo Boost。预计硬件配置不会影响软件测试结果。结果可能会因软件及固件设置和配置而异 - VGL-03