cuter

【原创】漫谈High Level Synthesis(HLS)

0
阅读(9716)

漫谈High Level Synthesis(HLS)


水平有限,错误纰漏之处难免,欢迎网友们批评雅正。


相信FPGA的资深玩家对这个词不会陌生,印象中很多年之前这个概念就被提出来了,但是一直没有火起来。我第一次比较深入的接触HLS应该是在研究生一年级,因为我个人既懂一些C语言,又会写一点HDL代码,所以对两者交叉的部分有点兴趣,看了一些Binary Synthesis的论文和资料。

High Level Synthesis和一些基于C语言的硬件描述语言的最终目标,是让开发人员使用高级语言,例如CC++,来实现所需要的硬件功能。HLS的愿景是很好的,毕竟高级语言抽象能力、可重用性、可读性都比HDL要好很多。如果能够使用高级语言实现逻辑开发,无疑是有许多好处的——高级语言有大量的从业人员,较完善的设计方法学,大量函数库,很多成熟优秀的算法,这些都可以帮助设计人员提高工作效率,缩短项目周期。

前几年,HLS所面临的主要问题有:如何利用有限的资源达到满意的性能、执行时间以及功耗这三方面。Vivado HLS的出现,或者说最新版本Vivado HLS的出现(Xilinx HLS也不是一年两年了,之前不太实用),宣告了这些问题已经被有效解决,老外开拓进取的精神和能力真是值得学习!


这一段时间也接触了HLS,开发流程掌握起来不难,说一下几点浅显的感受吧:

1、HLS实现软件算法的硬件加速是十分高效的

针对图像、视频处理,HLS内置了函数库,对于图像、视频处理常用的数据格式都有所定义,而且可以和OpenCV联合使用。所以,对于使用FPGA做图像、视频处理的朋友来讲,HLS是很值得尝试的。

至于FFTFIR什么的,我觉得用支持浮点运算的CPUARMDSP)去做,效率也是蛮高的,如果用FPGA去做的话,可能有点浪费资源。

2、Vivado采用了IP-XACT标准构建IP

IP-XACT规范则描述了一个XML源数据模式,用于描述IP设计块和一个应用编程接口;XPSIP核组织结构、描述文件就复杂的多,例如有用于描述端口的mpd文件,用于描述资源文件的pao文件等等,修改IP源码的时候还需要手动修改mpd等文件,之前还特地研究了一番,写了一篇笔记。另外,使用IP-XACT之后会发现创建IP过程较XPSPlanAhead而言十分简便快捷,修改源码后不需要关系其他部分,Vivado采用半自动化的方式协助你完成整个IP核的更新。

所以说,就IP创建、修改和管理方面而言,Vivado完胜ISE

3、对于一些简单的逻辑,HLS实现结果较为臃肿

一些简单的逻辑,用HDL实现只需要数十行代码,而HLS的实现结果却相当复杂。就目前的使用感受而言,HLS还无法替代HDL。当然这可能也是我没有深入接触HLS的原因,对于HLS->HDL的机制不太了解,后续还会深入学习。

4、虽然和C语言有区别,但是差别不大,上手难度适中

HLS使用的语言显然不是标准C/C++语言,应该是扩展类C/C++语言。例如可以使用int1int7等类型定义位宽为17的变量;可以定义图像、视频处理中常用的rgb格式的数据:hls::rgb_8 video_data[1920][1080]。当然,也不可避免的存在可综合语句的问题,不过数量很少,对于编码的限制不是非常大,习惯就好了。


然而HLS也不是完美无暇的,还面临诸多挑战。从商业方面来看,HLS没有取得很大的成功(前几年),究其原因,有以下几点:

对于软件开发人员来说,有一套成熟的开发流程,想要将HLS开发加入到流程中,有一定的困难;要求软件开发人员使用特定的语言、编译器、或者开发环境;对于硬件开发人员来讲,需要改变思维模式,从软件的角度去设计算法,还需要学习新的开发工具和流程。

个人感觉HLS开发对从业人员的要求还是比较高的,需要软硬兼通才比较好,这算是一大问题吧。


番外:Binary Synthesis

Binary Synthesis实际上是High Level Synthesis的一种,是一种可以将编译生成的二进制文件进行综合的设计方法。Vivado HLS综合的对象是软件源码。

Binary Synthesis避免了文中所述的HLS所面临的几点挑战,Binary Synthesis综合对象是二进制文件,对二进制文件进行分析将可综合的软件(例如循环)综合成电路,利用FPGA实现硬件加速。具体的就不细说了,总而言之,对二进制文件进行综合,除了能够进行软件编码之外,对于设计人员没有额外的要求,Binary Synthesis能够自动实现硬件加速。

虽然Binary SynthesisHLS听起来更加诱人,但其实现难度也必然更大,Binary Synthesis是否能够真正实现,还需要时间来证明~


版权声明:

本文由博主“cuter”发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和版权声明。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。

博客官方地址:

ChinaAET:http://blog.chinaaet.com/cuter521

EDN China:http://bbs.ednchina.com/BLOG_cuter521_356737.HTM

Baidu
map