0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

优化FPGA HLS设计

OpenFPGA 来源:OpenFPGA 2023-10-30 11:41 次阅读

优化 FPGA HLS 设计

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

90ddf9de-76d4-11ee-939d-92fbcf53809c.png

介绍

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

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

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

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

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

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

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

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

90fd453c-76d4-11ee-939d-92fbcf53809c.png

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

91020acc-76d4-11ee-939d-92fbcf53809c.png

导出到 RTL 项目

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

9106ab4a-76d4-11ee-939d-92fbcf53809c.png

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

910b09e2-76d4-11ee-939d-92fbcf53809c.png

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

9116cee4-76d4-11ee-939d-92fbcf53809c.png

优化时序

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

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

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

912e76c0-76d4-11ee-939d-92fbcf53809c.png

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

优化过程和结果

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

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

9133d304-76d4-11ee-939d-92fbcf53809c.png

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

更高水平的性能

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21644

    浏览量

    601425
  • 滤波器
    +关注

    关注

    160

    文章

    7714

    浏览量

    177544
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59675
  • 脚本
    +关注

    关注

    1

    文章

    387

    浏览量

    14816
  • HLS
    HLS
    +关注

    关注

    1

    文章

    128

    浏览量

    24012

原文标题:优化 FPGA HLS 设计

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在不改变RTL代码的情况下,优化FPGA HLS设计

    InTime。 前言 高层次的设计可以让设计以更简洁的方法捕捉,从而让错误更少,调试更轻松。然而,这种方法最受诟病的是对性能的牺牲。在复杂的 FPGA 设计上实现高性能,往往需要手动优化 RTL 代码,这也意味着从 C 转化得到 RTL 基本不可能。其实,使用
    的头像 发表于 12-20 11:46 1733次阅读
    如何在不改变RTL代码的情况下,<b class='flag-5'>优化</b><b class='flag-5'>FPGA</b> <b class='flag-5'>HLS</b>设计

    如何优化FPGA HLS设计呢?

    用工具用 C 生成 RTL 的代码基本不可读。以下是如何在不更改任何 RTL 的情况下提高设计性能。
    的头像 发表于 10-30 14:34 991次阅读
    如何<b class='flag-5'>优化</b><b class='flag-5'>FPGA</b> <b class='flag-5'>HLS</b>设计呢?

    优化 FPGA HLS 设计

    优化 FPGA HLS 设计 用工具用 C 生成 RTL 的代码基本不可读。以下是如何在不更改任何 RTL 的情况下提高设计性能。 介绍 高级设计能够以简洁的方式捕获设计,从而
    发表于 08-16 19:56

    怎么利用Synphony HLS为ASIC和FPGA架构生成最优化RTL代码?

    相比,能够为通信和多媒体应用提供高达10倍速的更高的设计和验证能力。Synphony HLS为ASIC 和 FPGA的应用、架构和快速原型生成最优化的RTL。Synphony HLS
    发表于 08-13 08:21

    【正点原子FPGA连载】第一章HLS简介-领航者ZYNQ之HLS 开发指南

    )对正点原子FPGA感兴趣的同学可以加群讨论:8767449005)关注正点原子公众号,获取最新资料第一章HLS简介为了尽快把新产品推向市场,数字系统的设计者需要考虑如何加速设计开发的周期。设计加速
    发表于 10-10 16:44

    FPGA高层次综合HLS之Vitis HLS知识库简析

    重要组成部分,所以我们将重点介绍Vitis HLS。LUT 或 SICELUT 或 SICE是构成了 FPGA 的区域。它的数量有限,当它用完时,意味着您的设计太大了!BRAM 或 Block
    发表于 09-07 15:21

    使用Vivado高层次综合 (HLS)进行FPGA设计的简介

    Introduction to FPGA Design with Vivado High-Level Synthesis,使用 Vivado 高层次综合 (HLS) 进行 FPGA 设计的简介
    发表于 01-06 11:32 65次下载

    FPGA并行编程:基于HLS技术优化硬件设计

    作为集成电路设计领域现场可编程门阵列 (FPGA) 技术的创造者之一,赛灵思一直积极推广高层次综合 (HLS) 技术,通过这种能够解读所需行为的自动化设计流程打造出可实现此类行为的硬件。赛灵思刚刚推出了一本专著,清晰介绍了如何使用 HL
    发表于 11-10 11:01 2914次阅读

    利用FPGA工具设置优化FPGA HLS设计

    高层次的设计可以让设计以更简洁的方法捕捉,从而让错误更少,调试更轻松。然而,这种方法最受诟病的是对性能的牺牲。在复杂的 FPGA 设计上实现高性能,往往需要手动优化 RTL 代码,这也意味着从 C
    发表于 12-16 11:19 1567次阅读
    利用<b class='flag-5'>FPGA</b>工具设置<b class='flag-5'>优化</b><b class='flag-5'>FPGA</b> <b class='flag-5'>HLS</b>设计

    关于优化FPGA HLS设计的分析和介绍

    用软件从 C 转化来的 RTL 代码其实并不好理解。今天我们就来谈谈,如何在不改变 RTL 代码的情况下,提升设计性能。 本项目所需应用与工具:赛灵思HLS、Plunify Cloud 以及 InTime。 前言 高层次的设计可以让设计以更简洁的方法捕捉,从而让错误更少,调试更轻松。
    发表于 09-15 11:56 456次阅读

    使用网络实例比较FPGA RTL与HLS C/C++的区别

    HLSFPGA开发方法是只抽象出可以在C/C++环境中轻松表达的应用部分。通过使用Vivado(Xilinx)或Intel(Quartus)工具,HLS工具流程基本上可用于任何BittWare板。
    发表于 08-02 09:18 1703次阅读
    使用网络实例比较<b class='flag-5'>FPGA</b> RTL与<b class='flag-5'>HLS</b> C/C++的区别

    ThunderGP:基于HLSFPGA图形处理框架

    电子发烧友网站提供《ThunderGP:基于HLSFPGA图形处理框架.zip》资料免费下载
    发表于 10-27 16:49 0次下载
    ThunderGP:基于<b class='flag-5'>HLS</b>的<b class='flag-5'>FPGA</b>图形处理框架

    FPGA基础之HLS

    1、HLS简介 HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来
    的头像 发表于 12-02 12:30 5111次阅读

    FPGA——HLS简介

    HLS  (high-level synthesis)称为高级综合, 它的主要功能是用 C/C++为 FPGA开发 算法。这将提升FPGA 算法开发的生产力。    Xilinx 最新的HLS
    的头像 发表于 01-15 12:10 4738次阅读

    如何使用HLS加速FPGA上的FIR滤波器

    电子发烧友网站提供《如何使用HLS加速FPGA上的FIR滤波器.zip》资料免费下载
    发表于 06-14 15:28 3次下载
    如何使用<b class='flag-5'>HLS</b>加速<b class='flag-5'>FPGA</b>上的FIR滤波器