HLS编程入门

目录

HLS简要介绍

高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如Verilog、VHDL、SystemVerilog等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前ASIC或FPGA设计最为普遍使用的电路建模和描述方法。

HLS关键技术型问题

AutoPilot的工作流程框图如下图所示。在前端,它使用了基于LLVM的编译器架构,能够处理可综合的ANSI C、C++,以及OSCI SystemC等语言编写的模型。这个名为llvm-gcc的前端编译器会将高层语言模型转换为中间表达式(IR),并进行一系列针对代码复杂度、冗余、并行性等方面的代码优化。然后再根据具体的硬件平台,综合生成RTL代码、验证与仿真环境,以及必须的时序和布局约束等。

AutoPilot的成功之处在于,它的HLS结果在某些应用领域完胜人工优化RTL取得的结果。例如,在一个无线MIMO系统中使用的Sphere解码器IP中,AutoPilot将4000行C代码算法成功综合到Virtex5 FPGA上,运行在225MHz,并取得了比赛灵思Sphere解码器IP更少的逻辑资源使用量,见下图。这个结果放在现在也令人十分震撼,它很好的证明了HLS有潜力取得比RTL IP更为出色的性能。

上一篇:[github repo]根据Excel表格自动生成寄存器RTL/RALF/C header的脚本


下一篇:vivado_hls demo LZ77