HLS编程环境入门

1.什么是HLS

1.1.简介

将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言.

1.2.作用

加快FPGA的设计进程,而不用从底层的FPGA语言编起。

1.3.阶段

1.scheduling:确定每个时钟周期中执行哪些步骤
2.Binding:确定哪些硬件资源会被用到
3.控制逻辑提取:提取控制逻辑,创建一个有限状态机(FSM:Finite state machine)来进行RTL的设计。

1.4.步骤

1.编译、执行(仿真)、调试相应的c语言代码
2.把c算法综合为RTL实现,在这个过程中可以使用优化指令
3.生成综合分析报告并分析设计
4.验证RTL的实现
5.打包RTL进入IP块

2.HLS与VHDL/Verilog有什么关系

RTL(寄存器传输级别,基于 VHDL/Verilog 语言)逐步发展,但 VLSI 系统的复杂性呈指数级增长,使 RTL 设计和验证过程成为生产力的瓶颈。HLS(高级综合)通过提高抽象级别, 可以减少最初的设计工作量,设计人员可以集中精力描述系统的行为,而不必花费时间来实现微体系结构的细节,且验证被加速、设计空间探索(DSE)更快、定位新平台非常简单、软件工程师可以访问 HLS 等这些好处加在一起,减少了设计和验证时间,降低了开发成本,并降低了进行硬件项目的门槛,因此缩短了产品上市时间,并且在异构系统上使用硬件加速已成为更具吸引力的选择。但是在结果质量(QoR)上,HLS 工具还落后于 RTL。

3.关键技术问题

3.1.字长分析和优化

FPGA 的一个最主要特点就是可以使用任意字长的数据通路和运算。因此,FPGA 的 HLS 工具不需要拘泥于某种固定长度的表达方式,而可以对设计进行全局或局部的字长优化,从而达到性能提升和面积缩减的双重效果。

3.2.循环优化

循环优化一直是 HLS 优化方法的研究重点和热点。一个流行的循环优化方法,多面体模型的应用非常广泛,在 HLS 里主要被用来将循环语句以空间多面体表示,然后根据边界约束和依赖关系,通过几何操作进行语句调度,从而实现循环的变换。

4.技术局限性

1.HLS编译器是静态工具,对理解代码的动态特性没有任何帮助。HLS编译器的行为通常难以预测最终的性能和资源利用率。
2.对于一些简单的逻辑,HLS实现结果较为臃肿。一些简单的逻辑,用HDL实现只需要数十行代码,而HLS的实现结果却相当复杂。
3.HLS对开发人员的要求比较高。HLS使用的语言显然不是标准C/C++语言,应该是扩展类C/C++语言。

posted @ 2021-06-01 21:54  一蓑烟雨任平生噶  阅读(408)  评论(0编辑  收藏  举报