7.4.2 HLS开发
高层次综合工具(high level synthesis,HLS)是Xilinx公司于2012年推出的,它可以将C/C++或System C编写的算法转换为硬件RTL。HLS的出现可以让软件工程师参与到硬件开发中去,使软、硬件工程师在高级语言层面上验证算法的功能,更多关注算法的本身。通过对算法的优化和对综合工具的优化指导,生成高效的RTL代码。使用HLS的优势主要体现在以下几个方面:
(1)由于HLS采用C/C++进行开发,可以快速实现函数的功能;HLS隐藏了硬件细粒度的描述,大大缩短了开发周期。
(2)通过编写一个测试激励,除了用于C仿真以验证算法功能的正确性,还可以用于RTL代码的功能验证,无须再重新编写C test bench,提高了功能验证的效率。
(3)采用高级语言进行开发,有利于更新和维护。一旦功能不满足要求,可以随时修改C/C++代码,从而改变函数的功能,直至满足设计需要。
HLS使设计者不用再局限于传统的硬件描述语言进行开发,可以用C/C++、System C等高级语言编写程序,通过该工具可以将C/C++程序转换为Verilog或VHDL代码。利用HLS进行IP核的设计流程一般分为以下步骤:
(1)新建HLS工程。需要添加源文件、测试文件,并根据设计需求选择时钟周期、时序裕量和目标器件。此外,必须指定每个HLS工程的顶层函数,以此作为输出RTL模块的顶层。
(2)执行C仿真。根据不同算法确定所需要的函数模块以及各个模块的具体功能,编写相应的C/C++代码和测试代码,执行C仿真以验证算法功能的正确性。如果没有达到要求,那么启动Debugger进行调试,直至满足设计的需要。
(3)运行C综合。启动C综合,将C/C++编写的代码转换为硬件Verilog/VHDL代码。综合完成后,可以通过综合报告分析系统性能、硬件资源的使用情况、逻辑接口等各项指标。然后,根据分析结果在程序中添加一些优化指令,以此提高资源的利用率和系统的吞吐量。
(4)联合仿真。使用之前编写的测试代码对C综合得到的RTL代码进行功能验证,由于无须重新编写测试激励,因而显著提高了设计效率。
(5)导出IP核。经过C仿真、C综合和联合仿真后,导出IP核。该IP核包含了驱动程序、参考文档等文件,可以被其他工具进行处理。根据不同的要求,可以设置不同格式的IP核,包括IP Catalog格式、Pcore格式和System Generator格式。