当前位置: 首页 > news >正文

优化 FPGA HLS 设计

优化 FPGA HLS 设计

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

6ec4f4a7e4197160f31794aef3625910.png

介绍

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

1388abe9f2b8b8d7d22f5ac1694ff24c.png

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

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

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

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

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

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

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

29466734873bd9bca2018ee62e49f604.png

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

96c5bbf402b3afe773464b3b1f466082.png

导出到 RTL 项目

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

c5a246a24a42c695c94a390dfa9c80b1.png

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

1ebddb1253f476ed2451a07618f33b16.png

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

9b7cb9ea654f7c94c07c29f045c34145.png

优化时序

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

2c829e0ab1a04c32544e102ed28ad402.png

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

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

b3f0cc2c963e69103754f424a1634d0c.png

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

优化过程和结果

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

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

02ab185996edbb80a8cc8b3efa437b20.png

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

更高水平的性能

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

http://www.lryc.cn/news/215057.html

相关文章:

  • LVGL库入门 01 - 样式
  • 酷克数据出席永洪科技用户大会 携手驱动商业智能升级
  • 英语教育目标转变:更加注重实际应用能力培养
  • Java中的继承和多态
  • 海外问卷调查现在还可以做吗?
  • CA证书与服务器证书
  • AI智能语音识别模块(二)——基于Arduino的语音控制MP3播放器
  • CentOS部署Minikube
  • 第5章_排序与分页
  • Elasticsearch实战:常见错误及详细解决方案
  • C#添加缓存,删除缓存,修改缓存
  • PADS Router的操作页面及鼠标指令介绍
  • Android studio进入手机调试状态
  • 《Pytorch新手入门》第二节-动手搭建神经网络
  • C++ 模板学习笔记
  • 1、Flink基础概念
  • 分享一下怎么做小程序营销活动
  • Laravel 后台管理 Dcat Admin 使用记录
  • c语言基础:L1-070 吃火锅
  • java spring boot 注解、接口和问题解决方法(持续更新)
  • HMAC_SHA1加密算法和SHA1加密算法的区别
  • Ubuntu连不上WiFi 或者虽然能连上校园网,但是浏览器打不开登录页面
  • Maven第八章:如何解决Maven的jar版本冲突
  • c# 读写内存映射文件
  • 行业揭秘:腾讯共享wifi码推广零加盟费是真的吗?
  • E4980A 精密型 LCR 表,20 Hz 至 2 MHz
  • 【前端工作提效】关于工作提效的一点实践与思考
  • Pytorch 文本情感分类案例
  • Flutter之GetX controller tag使用详解
  • Kubernetes群集调度