针对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倍。

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

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

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

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

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

点击这里下载白皮书

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