一种基于图的HDL编译优化方法技术

技术编号:37677662 阅读:16 留言:0更新日期:2023-05-26 04:43
本发明专利技术涉及编译优化技术领域,具体为一种基于图的HDL编译优化方法,包括如下步骤:步骤S1、获取或者构建HDL文件;步骤S2、对HDL文件进行词法、语法分析,并通过词法、语法分析结果构建抽象语法树;步骤S3、依据抽象语法树构建图;步骤S4、在图上实施多种优化算法,得到优化后的图;步骤S5、将优化后的图转换为目标无关的中间代码;步骤S6、调用编译后端程序将中间代码转为目标机器上的可执行文件。本发明专利技术旨在解决在编译过程中优化HDL代码和硬件设计的问题,通过在编译过程中添加图优化的步骤,能够很容易的发掘出原始HDL设计中可被优化的地方,并通过在图上实施,从而达到很好的优化效果。果。果。

【技术实现步骤摘要】
一种基于图的HDL编译优化方法


[0001]本专利技术涉及编译优化
,特别涉及一种基于图的HDL编译优化方法。

技术介绍

[0002]硬件设计通常都是由一系列硬件编程语言(HDL)所写的文件构成,对硬件设计的仿真方法有很多种,其中最常用的方法之一就是将其编译为可以在通用计算机上运行的可执行文件,通过运行这个可执行文件对硬件设计中描述的行为进行模拟仿真。因此,生成的可执行文件的“好”“坏”就直接影响了仿真的速度:如果生成的可执行文件中包含很多大量消耗CPU的逻辑,就会导致仿真速度变得很慢。因此,在将硬件设计编译为可执行文件的过程中,如何尽可能的消除这些大量消耗CPU的逻辑就变的极其重要。
[0003]经过几十年的发展,针对通用CPU编程语言,已经形成了大量成熟可靠的编译优化手段,如死代码消除、常量替换、循环展开等等。由于HDL自身的特殊性,如HDL的并发性、四值特点等,这些手段中有很多是不能直接应用到HDL的编译过程中的。另外,也由于HDL自身的特殊性,往往仅仅采用通用的编译优化手段不能够达到很好的优化效果。

技术实现思路

[0004]本专利技术提供了一种基于图的HDL编译优化方法,以解决现有编译优化方法优化效果不佳的技术问题。
[0005]为达到上述目的,本专利技术的技术方案是这样实现的:本专利技术提供了一种基于图的HDL编译优化方法,包括如下步骤:步骤S1、获取或者构建HDL文件;步骤S2、对HDL文件进行词法、语法分析,并通过词法、语法分析结果构建抽象语法树;步骤S3、遍历抽象语法树,创建多个变量节点和多个语句节点,在多个变量节点和/或多个语句节点之间添加有向边,得到需要构建的图;步骤S4、对图进行优化,得到优化后的图;步骤S5、将优化后的图转换为目标无关的中间代码;步骤S6、调用编译后端程序,将中间代码转为目标机器上的可执行文件。
[0006]进一步地,所述步骤S3具体包括如下步骤:步骤S31、对抽象语法树进行预处理,得到预处理后的抽象语法树;步骤S32、遍历预处理后的抽象语法树,提取其中所有的变量,并为所有变量分别创建变量节点;步骤S33、遍历预处理后的抽象语法树,提取其中所有的语句,并为所有的语句分别创造语句节点;步骤S34、分析并提取步骤S32中所有变量与步骤S33中所有语句之间的依赖关系,并分别为这些依赖关系在多个变量节点和/或多个语句节点之间添加有向边,得到需要构
建的图。
[0007]进一步地,所述步骤S31中的预处理包括补全端口连接关系、生成层次树。
[0008]进一步地,所述步骤S4具体包含如下步骤:步骤S41、对图进行预处理,得到预处理后的图;步骤S42、遍历预处理后的图中所有的变量节点和所有的语句节点,并根据多个优化算法对所有的变量节点和所有的语句节点进行标记和记录;步骤S43、检查图中所有的变量节点和所有的语句节点是否均标记完成,如果均标记完成,则进入到步骤S44,否则返回步骤S42;步骤S44、根据标记和记录对所有的变量节点和所有的语句节点进行修改,得到优化后的图。
[0009]进一步地,所述步骤S41中的预处理包括对变量节点和/或所有语句节点进行染色。
[0010]进一步地,所述步骤S42中的多个优化算法包括always合并、module inline、循环展开、向量化、组合逻辑优化、死代码消除、语句重排、门优化、并行性分析、常量传播、常量折叠、复写传播等。
[0011]进一步地,所述步骤S5具体方法为:遍历图中所有变量节点、所有语句节点以及所有有向边,调用内部接口,为所有变量节点、所有语句节点以及所有有向边生成目标无关的中间表示代码。
[0012]本专利技术的有益效果:1、本专利技术提出一种基于图的HDL编译优化方法,与传统编译流程相比,在抽象语法树到目标无关的中间代码之间添加了图优化的步骤,旨在解决在编译过程中更好地优化HDL代码和硬件设计的问题,通过在编译过程中添加图优化的步骤,能够很容易的发掘出原始HDL设计中可被优化的地方,并通过在图上实施,从而达到很好的优化效果。
[0013]2、本专利技术使用图来表示HDL设计之间的关系,更加直观,便于编译优化;同时本专利技术生成的图能够更方便地应用优化算法和传统编译优化手段;通过对图进行分析,也能够最大程度发现仿真过程中可并行的部分,为并行仿真提供了参考依据。
附图说明
[0014]图1为本专利技术的流程示意图;图2为依据本专利技术实施例中的verilog代码生成的图;图3为采用步骤S4对图进行优化后所形成的图。
具体实施方式
[0015]下面结合附图及具体实施例对本专利技术再作进一步详细的说明。
[0016]参照图1,本申请实施例提供了一种基于图的HDL编译优化方法,包括如下步骤:步骤S1、获取或者构建HDL文件;步骤S2、对HDL文件进行词法、语法分析,并通过词法、语法分析结果构建抽象语法树;步骤S3、遍历抽象语法树,创建多个变量节点和多个语句节点,在多个变量节点
和/或多个语句节点之间添加有向边,得到需要构建的图;图构建是指将原始设计转为图表示的过程,这个过程中的输入为由原始设计得到的抽象语法树(AST),输出是原始设计的图表示。
[0017]步骤S4、对图进行优化,得到优化后的图;步骤S5、将优化后的图转换为目标无关的中间代码;步骤S6、调用编译后端程序,将中间代码转为目标机器上的可执行文件。
[0018]进一步地,所述步骤S3具体包括如下步骤:步骤S31、对抽象语法树进行预处理,得到预处理后的抽象语法树;进行预处理是为了后面更方便的生成图;步骤S32、遍历预处理后的抽象语法树,提取其中所有的变量,并为所有变量分别创建变量节点;在仿真过程中,变量是事件的载体,所有信号变化所产生的的事件都将通过这些变量进行传播。在图中,某个变量A所对应的节点即表示A发生变化的事件。
[0019]步骤S33、遍历预处理后的抽象语法树,提取其中所有的语句,并为所有的语句分别创造语句节点;这些语句通常在仿真程序执行过程中都被表示为一个个信号变化对应的事件。
[0020]步骤S34、分析并提取步骤S32中所有变量与步骤S33中所有语句之间的依赖关系,并分别为这些依赖关系在多个变量节点和/或多个语句节点之间添加有向边,得到需要构建的图。
[0021]进一步地,所述步骤S31中的预处理包括但不限于补全端口连接关系、生成层次树,经过这些预处理后的AST将包含更将丰富细节的信息。
[0022]进一步地,所述步骤S4具体包含如下步骤:步骤S41、对图进行预处理,得到预处理后的图,以方便后面优化算法的实施;例如:always合并算法会给无关的节点添加标记,表明这些节点是可被忽略的,这样后面的步骤中就不需要再对这些节点进行遍历了,提高了仿真效率;步骤S42、遍历预处理后的图中所有的变量节点和所有的语句节点,并根据多个优化算法对所有的变量节点和所有的语句节点进行标记和记录;例如:always合并算法会遍历图中所有的always语句,并对其中满本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于图的HDL编译优化方法,其特征在于:包括如下步骤:步骤S1、获取或者构建HDL文件;步骤S2、对HDL文件进行词法、语法分析,并依据词法、语法分析结果构建抽象语法树;步骤S3、遍历抽象语法树,创建多个变量节点和多个语句节点,在多个变量节点和/或多个语句节点之间添加有向边,得到需要构建的图;步骤S4、对图进行优化,得到优化后的图;步骤S5、将优化后的图转换为目标无关的中间代码;步骤S6、调用编译后端程序,将中间代码转为目标机器上的可执行文件。2.根据权利要求1所述的HDL编译优化方法,其特征在于,所述步骤S3具体包括如下步骤:步骤S31、对抽象语法树进行预处理,得到预处理后的抽象语法树;步骤S32、遍历预处理后的抽象语法树,提取其中所有的变量,并为所有变量分别创建变量节点;步骤S33、遍历预处理后的抽象语法树,提取其中所有的语句,并为所有的语句分别创造语句节点;步骤S34、分析并提取步骤S32中所有变量与步骤S33中所有语句之间的依赖关系,并分别为这些依赖关系在多个变量节点和/或多个语句节点之间添加有向边,得到需要构建的图。3.根据权利要求2所述的HDL编译优化方法,其特征在于,所述步骤S31中的预处理包括补全端口连接关系、生成...

【专利技术属性】
技术研发人员:王彦鹏
申请(专利权)人:湖南泛联新安信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1