概观

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


如需了解更多信息,请访问 MathWorks HDL 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

新增功能

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