优化 FPGA HLS 设计

优化 FPGA HLS 设计

用工具用 C 生成 RTL 的代码基本不可读。以下是如何在不更改任何 RTL 的情况下提高设计性能。

介绍

高级设计能够以简洁的方式捕获设计,从而减少错误并更容易调试。然而,经常出现的问题是性能权衡。在高度复杂的 FPGA 设计中实现高性能需要手动优化 RTL 代码,而这对于HLS开发环境生成的 RTL 代码来说是不可能的。然而,存在一些解决方案,可以通过使用 FPGA 工具设置优化设计本身来最大限度地减少性能损失。

高效找到正确的 FPGA 工具设置

尽管设计人员知道 FPGA 工具设置的存在,但这些设置往往没有得到充分利用。通常,只有在出现设计问题时才使用工具设置。然而,对于已达到性能目标的设计,还有额外10% 至 50% 性能改进的巨大潜力。

上面的核心问题在于选择正确的工具设置,因为不同的 FPGA 工具提供 30 到 70 种用于综合和布局布线的设置。可能的组合太多了。可以编写脚本来创建不同的运行并尝试推荐的标准指令/策略。

最后一个挑战问题是计算能力不足。典型的嵌入式应用程序是在单台计算机上设计的。运行多个编译需要更多的计算能力。这是与时间的权衡。如果可以同时运行更多(使用云)综合策略,周转时间将会更短。

如何优化高级设计 - Sobel 滤波器

Sobel 滤波器是视频处理中常用的参考设计。该参考设计针对具有 Dual ARM® Cortex®-A9 MPCore™ 的 FPGA。

我们使用 Xilinx HLS 工具来打开此设计。

它的时钟周期为 5.00 ns,即 200 MHz。从时序估计(见下文)来看,它仍然缺少 506 ps 的时序,这相当于 181 MHz,比目标速度低 10%。

导出到 RTL 项目

在不更改 C++ 代码的情况下,将设计导出到 RTL 中的 Vivado 项目中。在"解决方案"下,选择"导出 RTL"。

它将在后台执行 Vivado 并生成项目文件 (XPR)。它还应该编译设计,并且应该在控制台中看到实际的时序详细信息。完成后,在/solution/impl/verilog/文件夹中找到项目文件。

找到一个 XPR 文件。可以通过Vivado打开它来验证它,可以看到生成的RTL源码。

优化时序

下一步是使用名为InTime 的设计探索工具(https://www.plunify.com/en/free-evaluation/)。(同样,可以自己编写脚本来尝试 Vivado 工具中提供的标准指令或策略)可以使用免费评估许可证在本地运行 InTime 。或者,使用一些免费积分和预装 FPGA 工具注册 Plunify云帐户。

启动InTime后,打开项目文件。当提示要使用的 Vivado 版本时,请使用"相同"的 Vivado 版本。例如,如果使用2017.3 HLS,请使用2017.3 Vivado。

选择"热启动"。"热启动"是基于之前其他设计经验的推荐策略列表。

单击"Start Recipe"开始优化。如果在云上运行,则应同时运行多个编译以减少时间。

优化过程和结果

在第一轮("热启动")之后,最好的结果是"hotstart_1"策略。然而,它仍然缺少-90ps 的时序。

我们对"HotStart_1"的结果应用了名为"Extra Opt Exploration"的第二个秘诀。这侧重于优化关键路径。这是一种迭代优化,只要每次迭代都显示出改进,就会不断重复。如果达到时间目标或未能显示出改进,它最终将自动停止。

经过两轮优化,共15次编译,该设计能够满足200Mhz的性能目标。这是无需对 RTL 源代码进行任何更改即可实现的。

更高水平的性能

要达到更高的性能水平,需要在所有方面进行优化------架构设计、代码和工具。工具设置探索可以克服更高级别设计的性能权衡,而不会失去它首先带来的生产力优势。这对于高级设计师来说是双赢。

相关推荐
Hello-FPGA18 小时前
基于RFSOC FPGA ZCU216 的CoaXPress 采集demo
fpga开发
9527华安20 小时前
FPGA基于ADV7182解码PAL视频,Video Processing Subsystem去隔行,提供6套工程源码和技术支持
fpga开发·音视频·pal·adv7182
hahaha601620 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
GateWorld20 小时前
Xilinx 7系列FPGA时钟网络详解
fpga开发·时钟网络·xilinx 7系列
szxinmai主板定制专家1 天前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
szxinmai主板定制专家2 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟3 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1283 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light3 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072193 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理