高层次综合

【下载】:Vivado HLS (高层次综合) 教程

本教程解释和演示所有将C,C ++和SystemC代码转换为RTL实现的步骤。 展示了如何创建初始RTL实现,然后将其转换为低带宽和高吞吐量的实现,方法是在不更改C代码的情况下使用优化指令。敬请点击下载:
https://china.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/u...

关于Vivado HLS 的三大误读

作者:高亚军,赛灵思高级战略应用工程师

目前,在高层次综合(HLS, High Level Synthesis)领域,Vivado HLS可谓独树一帜。它有效地拉近了软件工程师与FPGA之间的距离,加速了算法开发的进程,缩短了产品上市时间。对于工程师,尤其是软件工程师而言是一个福音。在实际工程中,如何利用好这一工具仍值得考究。本文将介绍使用Vivado HLS时的几个误区。

误区1:只要是C或者C++描述的算法都是可综合(可转换成RTL)的。
HLS的可综合功能是有限的,并不是所有的C或者C++语句都可转换成相应的RTL代码。下面这些情形是不可综合的。
1. 动态内存分配
2. 涉及操作系统层面的操作
3. 递归函数
4. 数组规模可变

误区2:既然Vivado HLS支持C、C++和System C,那么用三者任意一种都行。

Vivado HLS 设计优化

在使用高层次综合,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。Vivado Hls总是试图最小化loop和function的latency,为了实现这一点,它在loop和function上并行执行尽可能多的操作。比如说,在function级别上,高级综合总是试图并行执行function。

除了这些自动优化,directive是用来:
(1) 并行执行多个tasks,例如,同一个function的多次执行或同一loop的多次迭代。这是流水线结构。
(2) 调整数组的物理实现((block RAM),函数,循环和端口,以提高数据的可用性,并帮助数据流更快地通过设计。
(3) 提供关于数据dependency的信息,或者缺乏数据dependency,允许执行更多的优化。最终的优化是修改C源代码,以消除在代码中意外的dependency,但是这可能会限制硬件的性能。

本文使用的sample设计是一个matrix multiplier函数。目标是在每一个时钟周期处理一个新的sample,并实现数据流接口。

优化matrix multiplier

solution1

使用Vivado高层次综合工具评估IQ压缩算法

作者:Stefan Petko,赛灵思公司设计工程师 Duncan Cockburn,赛灵思公司设计工程师

赛灵思的 Vivado HLS 工具有助于降低无线去程网络基础设施不断攀升的成本。

 无线网络运营商面临的巨大挑战 在于维持盈亏底线的同时要增大网络的容量和密度。针对无线接口的压缩方案可减少所需的去程网络基础设施投资,有助于应对这种挑战。

  我们使用 Vivado® Design Suite 的高层次综合 (HLS) 工具来评估针对 E-UTRA I/Q 数据的开放无线电设备接口 (ORI) 标准压缩方案,以估计其对信号保真度的影响、造成的时延及其实现成本。我们发现赛灵思的 Vivado HLS 平台能够高效评估和实现所选压缩算法。

无线带宽压力
无线带宽需求的不断增加催生了对新的网络功能的需求,例如更高阶的 MIMO(多输入多输出)配置和载波聚合。这样导致网络日趋复杂,从而要求运营商做出架构调整,例如进行基带处理集中化以优化网络资源的使用。在降低基带处理成本的同时,基带处理资源的共享会增加去程网络的复杂性。

ZYNQ HLS图像处理加速总结(一)——FPGA硬件部分

作者:Thssasuke

概述

HLS工具

以个人的理解,xilinx将HLS(高层次综合)定位于更方便的将复杂算法转化为硬件语言,通过添加某些配置条件HLS工具可以把可并行化的C/C++的代码转化为vhdl或verilog,相比于纯人工使用vhdl实现图像算法,该工具综合出的代码的硬件资源占用可能较多,但并没有相差太大(见论文:基于HLS的 SURF特征提取硬件加速单元设计与实现),而纯人工用硬件描述语言实现一个复杂的图像处理算法要求十分深厚的FPGA功底,下面简单总结下好早之前做的一个在zybo开发板上的HLS图像处理通路。

硬件工程概述
demo工程是在xilinx公司实习的同学给的,现在在github上也有zynq_example 

采用高级语言如C、C++、Matlab对系统建模是ESL设计理念的特征之一,将其称之为高层次综合。高层次综合跨越硬件领域和软件领域。对硬件工程师而言,它可以使硬件工程师工作在有别于传统RTL的抽象度更高的C语言层面上,加速算法开发;对软件工程师而言,它可以使软件工程师将计算密集型算法采用有别于传统CPU处理器的FPGA上实现。高层次综合可以使工程师在C语言层面上同时进行算法开发和算法验证。

Xilinx提供了另一工具Vivado HLS(Vivado High Level Synthesis),用于将C/C++/SystemC函数转换为HDL代码。其输入为待综合的C文件、C测试文件和综合指令,其中综合指令可在图形界面下设置,目的是指导Vivado HLS对特定对象如数组、for循环等如何处理,例如将数组映射为双端口RAM还是FIFO,将for循环展开还是折叠。其输出为经验证的RTL代码和HDL测试文件。其中HDL测试文件用于C/RTL协同仿真。这里C测试文件是必需的,一方面用于验证C算法功能是否正确;另一方面用于生成HDL测试文件以进行C/RTL的协同仿真。Vivado HLS文件构成如图2.15所示。

ZYNQ HLS图像处理加速总结(一)——FPGA硬件部分

概述

HLS工具

以个人的理解,xilinx将HLS(高层次综合)定位于更方便的将复杂算法转化为硬件语言,通过添加某些配置条件HLS工具可以把可并行化的C/C++的代码转化为vhdl或verilog,相比于纯人工使用vhdl实现图像算法,该工具综合出的代码的硬件资源占用可能较多,但并没有相差太大(见论文:基于HLS的 SURF特征提取硬件加速单元设计与实现),而纯人工用硬件描述语言实现一个复杂的图像处理算法要求十分深厚的FPGA功底,下面简单总结下好早之前做的一个在zybo开发板上的HLS图像处理通路。

硬件工程概述
demo工程是在xilinx公司实习的同学给的,现在在github上也有zynq_example 

高层次综合(HLS)-简介

本文是我近段时间的学习总结,主要参考了Xilinx的技术文档以及部分网上其他资料。文档主要包括ug998《Introduction to FPGA Design Using High-Level Synthesis》,ug871《Vivado Design Suite Tutorial :High-level Synthesis》,ug902《Vivado Design Suite User Guide:High-level Synthesis》。受限于个人的FPGA水平,且对于Vivado hls了解不多,如有错误及不当之处,还请指正。

同步内容