概述

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 工具具有一系列丰富的分析及调试工具,可促进设计优化。 
AMD Vitis HLS Tool diagram

借助 AMD Vitis HLS,可轻松实现高性能设计。AMD 基准测试结果显示,许多设计都可以通过 Vitis HLS 的高级编程方法达到 500 MHz 或更高的 FMAX。

图像缩放
Designs Benchmarked with vitis HLS-f

AMD Vitis™ HLS 性能编译指示

AMD Vitis HLS 提供全新的顶层性能编译指示,可帮助您提升结果质量。如需详细了解如何使用这项新功能,请参阅技术模块。

设计方法

AMD Vitis HLS Programming Model diagram

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 进行仿真与综合。


如需了解更多信息,请访问 MathWorksHDL Coder 页面。

C 至 RTL 的转换

Vitis HLS 工具将对 C 语言代码的不同部分执行不同的综合:

  • C/C++ 代码的顶层函数参数不仅可综合成 RTL I/O 端口,而且还可通过接口综合硬件协议自动执行。
  • 其他 C 语言函数将综合至 RTL 模块中,保持设计层级。
  • C 语言函数循环保持滚动或流水线化,以提高性能。
  • C 语言代码数组可指向任何内存资源,如 BRAM、LUTRAM 和 URAM 等。
  • 时延、初始化间隔、循环迭代时延和资源利用率等性能指标可使用综合报告查看。
  • Vitis HLS 工具的编译指示及优化指令允许配置 C/C++ 代码的综合结果。 
AMD Vitis HLS C-to-RTL Conversion diagram
AMD Vitis HLS simulation and verification diagram

仿真和验证

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 应用中用作单个块集
AMD Vitis HLS IP Export diagram

新增功能

  1. 2025.1
  2. 2024.2
  3. 2024.1
  4. 2023.2
  5. 2023.1
  6. 2022.2
  7. 2022.1
  8. 2021.2
  9. 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

Audio DSP to FPGA Compilation Solution Powered by AMD Zynq™ SoCs and Vitis™ HLS
通过 Vitis HLS 在音频 DSP 到 FPGA 中实现超低延迟

INSA Lyon 的Emeraude 研究团队正在为嵌入式音频系统开发新的信号处理技术。该团队使用 AMD Vitis HLS 工具实现了超低时延的音频 DSP 程序。点击此处,进一步了解 Vitis HLS 工具如何帮助该团队在 DSP 至 FPGA 的音频编译过程中实现超低时延。

客户案例研究

利用 Vitis HLS 加快设计空间探索

“依我看,AMD Vitis™ HLS 工具的主要优势是设计空间探索特性。您可通过使用优化指令(流水线以及展开等),用适当的时间生成不同的架构及实现方案。如果使用 VHDL/Verilog 手动编码,则无法做到这一点。Vitis HLS 的一个良好特性是可以对 HDL 代码进行协同仿真和验证,以确保 HDL 代码功能正确。”德国普福尔茨海姆大学教授 Frank Kesel 博士

客户案例研究

AMD Zynq™ SoC based Radar Sensor System
附注
  1. 根据 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
  2. 截至 2023 年 2 月 12 日,在所有 1208 个 Vitis L1 库 C 代码设计上完成基准测试。所有设计都使用一个配备 2P Intel Xeon E5-2690 CPU 的系统运行,系统装有 CentOS Linux,启用 SMT 并禁用了 Turbo Boost。预计硬件配置不会影响软件测试结果。结果可能会因软件及固件设置和配置而异 - VGL-03