文章目录
一、HLS介绍
1.1 HLS是什么
基本概念
高层次综合(High-level Synthesis)简称 HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。
所谓的高层次语言,包括 C、C++、SystemC 等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如 Verilog、VHDL、SystemVerilog 等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前 ASIC 或 FPGA 设计最为普遍使用的电路建模和描述方法。
通过 HLS 这个过程可以显著加快 FPGA 的设计进程,而不用从底层的 FPGA 语言编起。
HLS一般流程
- HLS 自动分析一个算法中的潜在并发性
- HLS 自动在需要的路径插入寄存器,并自动选择最理想的时钟
- HLS 自动产生控制数据在一个路径上的出入方向的逻辑
- HLS 自动完成设计部分与系统中的其他接口
- HLS 自动映射数据到存储单元中以平衡资源使用与带宽
- HLS 自动将程序中计算的部分映射到对应逻辑单元,在实现等效运算的前提下选择有效运算
HLS开发所需
大多数 HLS 工具需要用户提供功能的规范,交互的描述
- 一个对接的计算设备,和目标优化方向。
- 一个用C/C++/System C编写的函数
- 一个测试平台用于验证结果(C testbench)
- 一个FPGA开发版
- 期望的时钟周期
- 一个简单的实施指导
1.2 HLS 与 VHDL/Verilog 有什么关系?
在 FPGA 硬件开发上,VHDL/Verilog 与 HLS 相比,就好比是几十年前的汇编语言与现在的 C 语言。
RTL(寄存器传输级别,基于 VHDL/Verilog 语言)逐步发展,但 VLSI 系统的复杂性呈指数级增长,使 RTL
设计和验证过程成为生产力的瓶颈。 HLS(高级综合)通过提高抽象级别,
可以减少最初的设计工作量,设计人员可以集中精力描述系统的行为,而不必花费时间来实现微体系结构的细节,且验证被加速、设计空间探索(DSE)更快、定位新平台非常简单、软件工程师可以访问HLS 等这些好处加在一起,减少了设计和验证时间,降低了开发成本,并降低了进行硬件项目的门槛,因此缩短了产品上市时间,并且在异构系统上使用硬件加速已成为更具吸引力的选择。
但是在结果质量(QoR)上,HLS 工具还落后于 RTL,但 HLS 的开发时间少、生产率高这些优点还是当前用于快速原型设计和较短上市时间的可行选择。
1.3 HLS 有哪些技术问题?
字长分析和优化
:
FPGA 的一个最主要特点就是可以使用任意字长的数据通路和运算。因此,FPGA 的 HLS 工具不需要拘泥于某种固定长度(如常见的 32 位或 64 位)的表达方式,而可以对设计进行全局或局部的字长优化,从而达到性能提升和面积缩减的双重效果。
循环优化
:
循环优化一直是 HLS 优化方法的研究重点和热点,因为这是将原本顺序执行的高层软件循环有效映射到并行执行的硬件架构的重点环节。
一个流行的循环优化方法,就是所谓的多面体模型,即 Polyhedral Model。多面体模型的应用非常广泛,在 HLS 里主要被用来将循环语句以空间多面体表示(见下图),然后根据边界约束和依赖关系,通过几何操作进行语句调度,从而实现循环的变换。
需要指出的是,多面体模型在 FPGA HLS 里已经取得了相当的成功,很多研究均证明多面体模型可以帮助实现性能和面积的优化,同时也能帮助提升 FPGA 片上内存的使用效率。
了解优化过