论文部分内容阅读
随着FPGA技术的飞速发展,每个芯片上集成的逻辑门阵列越来越多,基于VHDL或者Verilog这类低层次硬件描述语言(HDL)设计的复杂度也越来越高,而且容易出错且不易定位,因此对于大多数应用来说硬件设计非常困难,花费也非常昂贵,产品的上市时间往往不能确定;而对于软件设计来说,系统验证和错误调试都很容易实现,因为我们可以免费得到很多成熟的调试工具和分析工具。另一方面,硬件实现相比软件实现而言具有更快的速度和更高的效率。高层次综合(HLS)不仅利用了软件的易用性也充分利用了硬件的优良性能。如今,高层次综合已成为硬件电路设计的一个重要研究方向,该方法为软件工程师打开了一道通向FPGA硬件设计的大门,同时也使FPGA硬件设计变得更容易和更简单。本文基于LLVM(Low Level Virtual Machine)系统框架的可重定性设计了一个高层次综合工具——C2Verilog编译器,该系统能够自动实现将C程序转换成寄存器传输级的硬件描述语言输出。本文对LLVM的结构进行了详细的分析和介绍,并据此提出了本文的设计内容和研究方向。本文的主要工作以及结论:(1)研究实现软件多核技术到硬件多核电路的转化。通过前端编译器Clang的特点(支持OpenMP)实现软件多核技术,生成的LLVM中间代码由基本块组成,各个基本块之间通过跳转指令链接,本文采用块级并行提取技术对LLVM中间代码的各个基本块进行无关化处理,最后后端代码生成器生成的硬件多核电路功能正确,并且性能也得到大大提高。(2)实现流水线功能。本文采用模块调度技术对LLVM中间代码的数据依赖图(Data Dependece Graph)进行分析,根据依赖关系对指令进行等级划分和调度,得到流水线的级数;然后根据依赖关系得出关联距离,利用关联距离再次对指令等级进行优化处理,最后得到流水线的启动间隔值(initiation interval),实现流水线的基本功能。通过功能仿真,采用流水线处理后的模块其性能提高33.6%~52.1%。(3)实现C2Verilog系统后端代码生成器。通过对LLVM后端代码生成器的分析得出了本次后端设计的主要工作,包括系统全局描述信息的修改,各个子功能函数模块组成的代码生成器的工作流程,以及整个C2Verilog系统正常运行所需要的配置信息修改等,通过这三部分的设计实现了本系统的后端代码生成器。