针对MATLAB®生成的C/C++代码,快速进行高层次综合HLS分析

HLS常见的一种使用方法是使用第三方C/C ++代码(生成代码或者遗留代码)的算法,使用HLS编译器将其算法进行转换并实现于硬件上,然而如果不具有对底层代码的专业知识或者全面理解,开发人员将面临着诸多挑战。 SLX FPGA的解决方案能够解决这些挑战,帮助开发人员对算法进行理解和优化,为HLS做好充分准备。

 

在最近发表的白皮书的案例里,我们研究了SLX FPGA是如何使用MATLAB嵌入式编码器(MATLAB Embedded Coder™)的算法,通过卡尔曼滤波器(Kalman filter),将C / C ++代码代码进行优化以便用于HLS的。 在这个例子中,相比以前的解决方案,即HLS编译器为原始代码创建的没有插入编译指示的解决方案,使用SLX FPGA自动插入HLS编译指示后,性能提升超过62倍

blog pic 01-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

下面的设计流程步骤在白皮书中有更详细的描述:

 

blog-02-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

为HLS重构不可合成代码 – 通过MATLAB Embedded Coder的算法生成C / C ++代码后,SLX FPGA能够识别HLS编译器无法合成的代码,并提供自动和引导代码重构,以将其转换为HLS可合成代码。

blog-03-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

检测并行性 – SLX FPGA将对并行性进行检测,并指导开发人员如何在硬件实现中利用它。 SLX FPGA还对并行的障碍点(roadblocks)进行标注,帮助用户消除它们以增加并行性。

blog-04-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

硬件优化 –SLX FPGA对适合的流水线函数(function pipelining)和循环展开(loop unrolling)执行探索,通过数组分区(array partitioning)和设计目标平台上可用的接口空间,从而为硬件提供数据。

blog-05-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

插入编译指令 – SLX FPGA能够自动插入HLS编译指示,并引导编译器进行优化。HLS编译指示包括需要调整的各种参数(parameters)。SLX FPGA利用静态和动态分析数据,并将其与优化算法相结合,最后在开发人员提供的约束条件基础上插入调整和优化的编译指示。

blog-06-2019-facilitating-high-level-synthesis-from-matlab-generated-c-c

关于如何使用SLX与 Vivado HLS工具,将嵌入式代码MATLAB™算法实现至FPGA,可以下载我们的白皮书“针对MATLAB®生成的C/C++代码,快速进行高层次综合HLS分析”,文章里有更加详细的描述。也可以跟我们联系进行现场演示或者对SLX FPGA产品进行评估。

 

点击这里下载白皮书

Zubair Wadood-
ZUBAIR WADOOD

Zubair Wadood是Silexica GmbH的技术市场工程师。 他于2014年获得比利时鲁汶大学的计算机科学博士学位,他的研究兴趣为嵌入式系统和高性能计算。 他在加入Silexica之前曾就职于 明导资讯Mentor Graphics和u-blox。

发表评论

电子邮件地址不会被公开。 必填项已用*标注