一种可用于硬件代码扩展的代码生成方法

文档序号:1391804 发布日期:2020-02-28 浏览:20次 >En<

阅读说明:本技术 一种可用于硬件代码扩展的代码生成方法 (Code generation method for hardware code expansion ) 是由 郑重 隋兵才 倪晓强 雷国庆 王俊辉 郭维 郭辉 孙彩霞 王永文 黄立波 于 2019-11-14 设计创作,主要内容包括:本发明公开了一种可用于硬件代码扩展的代码生成方法,实施步骤包括针对待处理的硬件代码,抽取硬件代码中需要扩展的代码;针对需要扩展的代码提取其中的元操作,所述元操作是指硬件代码扩展时具有规律的代码修改的操作,且预先配置有对应的使用其他软件编程语言实现的软件代码;将需要扩展的硬件代码使用元操作和硬件语言进行混合表示;判断需要扩展的硬件代码使用元操作时是否存在需要配置的参数,如果存在需要配置的参数则配置对应的参数;将元操作表示的软件代码进行扩展,生成目标硬件语言的新的硬件代码。本发明具有效率高、代码清晰、维护性强、便于移植的优点。(The invention discloses a code generation method for hardware code expansion, which comprises the following implementation steps of extracting codes needing to be expanded in hardware codes aiming at the hardware codes to be processed; extracting meta-operation in the code to be expanded, wherein the meta-operation refers to operation of regular code modification when the hardware code is expanded, and is pre-configured with corresponding software code realized by using other software programming languages; performing mixed representation on hardware codes needing to be expanded by using meta-operation and hardware languages; judging whether parameters needing to be configured exist in the hardware code using element operation needing to be expanded, and configuring corresponding parameters if the parameters needing to be configured exist; and expanding the software code represented by the meta-operation to generate a new hardware code of the target hardware language. The invention has the advantages of high efficiency, clear codes, strong maintainability and convenient transplantation.)

一种可用于硬件代码扩展的代码生成方法

技术领域

本发明涉及硬件代码编程领域,具体涉及一种可用于硬件代码扩展的代码生成方法。

背景技术

处理器或者其他硬件设计的工程中,面向不同的需求,例如不同的性能、功耗等,可能会在同一个设计上,通过修改资源大小得到不同的硬件设计代码。或者在进行性能评估时,会配置多个版本的代码,评估最优设计。例如,某个设计中,为了评估不同队列深度对整体性能和功耗的影响,需要实现不同项数的队列的代码。

当前硬件设计语言,例如Verilog,可以通过宏定义方法,实现对部分不同配置的支持。但是宏定义一般用于定义不同宽度的数据,复杂的设计难以通过简单的宏定义进行实现。也可以通过硬件设计人员手工修改出不同的代码版本,这种修改耗时耗力,只能实现几种有限的配置代码,并且这种方法需要维护多套代码,增加了工程的复杂性。另一种方法是将需要修改的代码全部用脚本语言打印,然后根据需要的配置生成新的代码。这样可以避免重复的人力劳动,但是脚本语言自身存在难以阅读,难以维护的问题。同时为了某个特定的硬件代码编写的脚本语言,难以轻松移植到其他工程中。

发明内容

本发明要解决的技术问题:针对现有技术的上述问题,提供一种效率高、代码清晰、维护性强、便于移植的可用于硬件代码扩展的代码生成方法。

为了解决上述技术问题,本发明采用的技术方案为:

一种可用于硬件代码扩展的代码生成方法,实施步骤包括:

1)针对待处理的硬件代码,抽取硬件代码中需要扩展的代码;

2)针对需要扩展的代码提取其中的元操作,所述元操作是指硬件代码扩展时具有规律的代码修改的操作,且预先配置有对应的使用其他软件编程语言实现的软件代码;

3)将需要扩展的硬件代码使用元操作和硬件语言进行混合表示;

4)判断需要扩展的硬件代码使用元操作时是否存在需要配置的参数,如果存在需要配置的参数则配置对应的参数;

5)将元操作表示的软件代码进行扩展,生成目标硬件语言的新的硬件代码。

可选地,为了利于硬件代码的维护,步骤5)之后还包括将使用元操作和硬件语言进行混合表示的硬件代码作为注释添加到硬件代码中以利于硬件代码的维护。

可选地,为了实现硬件编程环境的统一,步骤5)中具体是指在硬件代码的集成开发环境的编辑器中生成目标硬件语言的新的硬件代码。

此外,本发明还提供一种可用于硬件代码扩展的代码生成系统,包括:

代码抽取程序单元,用于针对待处理的硬件代码,抽取硬件代码中需要扩展的代码;

元操作提取程序单元,用于针对需要扩展的代码提取其中的元操作,所述元操作是指硬件代码扩展时具有规律的代码修改的操作,且预先配置有对应的使用其他软件编程语言实现的软件代码;

代码表示程序单元,用于将需要扩展的硬件代码使用元操作和硬件语言进行混合表示;

参数配置程序单元,用于判断需要扩展的硬件代码使用元操作时是否存在需要配置的参数,如果存在需要配置的参数则配置对应的参数;

代码生成程序单元,用于将元操作表示的软件代码进行扩展,生成目标硬件语言的新的硬件代码。

此外,本发明还提供一种可用于硬件代码扩展的代码生成系统,包括计算机设备,该计算机设备被编程或配置以执行所述可用于硬件代码扩展的代码生成方法的步骤。

此外,本发明还提供一种可用于硬件代码扩展的代码生成系统,包括计算机设备,该计算机设备至少包括微处理器和存储器,且该存储器上存储有被编程或配置以执行所述可用于硬件代码扩展的代码生成方法的计算机程序。

此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述可用于硬件代码扩展的代码生成方法的计算机程序。

和现有技术相比,本发明具有下述优点:

1)效率高。在代码通过元操作一次实现后,生成不同的代码只需要配置不同的参数,可以快速生成不同配置的代码,避免了人工修改的耗时操作。

2)代码清晰、便于管理。相比于完全使用脚本语言生成硬件代码,元操作混合硬件语言的实现方式,具有代码清晰易读、便于管理和修改的优点。

3)可移植性强。由于元操作是自定义的,在不同的设计中可以重复使用相同功能的元操作,不必重复定义,避免了完全使用脚本语言时,代码难以重用的问题。

附图说明

图1为本发明实施例方法的基本流程示意图。

图2 为本发明实施例中队列深度为4的需要扩展的代码示意图。

图3 为本发明实施例中队列深度为8的代码示意图。

图4 为本发明实施例中使用元操作和硬件语言编写的可扩展代码示意图。

图5 为本发明实施例中将可扩展代码集成到硬件代码源文件示意图。

具体实施方式

如图1所示,本实施例可用于硬件代码扩展的代码生成方法的实施步骤包括:

1)针对待处理的硬件代码,抽取硬件代码中需要扩展的代码;

根据设计和代码扩展的需求,硬件代码中一般只有部分代码会涉及到部分代码,需要将这部分代码抽取出来,确定需要修改的代码。同时根据扩展的需求,确定代码修改的方式,即扩展到不同需求时,代码应该修改成什么样。该部分的工作不管采用任何代码扩展的方法都是必须的。例如某部分代码中,需要扩展的硬件代码如图2所示。

2)针对需要扩展的代码提取其中的元操作,所述元操作是指硬件代码扩展时具有规律的代码修改的操作,且预先配置有对应的使用其他软件编程语言实现的软件代码;

元操作是指硬件代码扩展时,具有一定规律的代码修改的形式。例如,当队列深度为4时,数据选择的代码如图2所示,当队列深度为8时,数据选择的代码如图3所示。以图2和图3所示,需要总结的代码扩展的元操作就可以有以下两个:一、队列深度个数的赋值,即dst[4:0] = qx_data[4:0],也就是说这里需要能够根据配置,自动生成配置个数的赋值语句。当队列深度为4时,需要4个赋值语句,当队列深度为8时,需要8个赋值语句,并且每个赋值语句的qx不同:从q0到q7。这就需要一个元操作,能自动生成这样的硬件代码。此时可以定义一个元操作为LOOP(N),可以进行N次循环,打印相关代码。二、Case语句条件值的生成,即赋值语句前的常量,例如3’b010。这里需要根据配置在2.1中生成的赋值语句的常量,这里可以看到是规律的0~7的二进制表示,需要一个元操作可以生成某个数的二进制表示。这里可以定义个元操作为n_binary(n),表示将某个数n表示为二进制形式。

需要说明的是,图1记载的使用其他编程语言实现元操作仅仅表示使用其他编程语言实现元操作的时序关系,在实际应用时可根据需要进行预先进行记录以达到对元操作对应软件代码的预先配置。一般来说,硬件语言没有这样的特性,无法实现在硬件语言实现,需要通过其他软件编程语言进行实现。例如,本实施例中前面定义的LOOP和n_binary元操作可以通过脚本语言,如Python进行实现。

3)将需要扩展的硬件代码使用元操作和硬件语言进行混合表示;

将需要扩展的代码使用元操作和硬件语言混合的方式,将需要实现的功能表示出来。此时的代码不是合法的硬件代码,无法直接使用。例如,图2中需要扩展的代码,使用2)中的元操作和硬件语言改写为可扩展代码后,如图4所示,其中Q_NUM是配置参数,表示当前配置的Queue的深度,Q_LOG参数表示Q_NUM的位宽。@符号表示在LOOP循环中,当前循环的数目。ENDLOOP表示循环体的结束。

4)判断需要扩展的硬件代码使用元操作时是否存在需要配置的参数,如果存在需要配置的参数则配置对应的参数;

元操作中需要配置的相关的参数例如前面提到的队列深度,这里需要配置的参数是Q_NUM和Q_LOG。当队列深度为8时,Q_NUM为8,Q_LOG为3。

5)将元操作表示的软件代码进行扩展,生成目标硬件语言的新的硬件代码。

将元操作表示的软件代码作为实现的元操作解释器,将元操作表示的代码进行扩展,生成目标硬件语言的代码。此时新的硬件代码是合法的硬件代码,可直接用于硬件设计的后续流程。当队列深度为8时,图4中代码扩展后,将直接生成图3的硬件代码。

作为一种可选的实施方式,步骤5)之后还包括将使用元操作和硬件语言进行混合表示的硬件代码作为注释添加到硬件代码中以利于硬件代码的维护。这样,整个工程中,只需要维护一个源代码文件,方便工程管理。使用元操作表示的代码不会影响硬件代码,在扩展出的代码有设计问题时,可以在当前代码中修改元操作的表示,重新生成新的代码。例如图5中,将扩展代码部分放到代码的注释中,使用一个文件就能管理所有的可扩展代码和目标代码。同时通过// AUTO CODE Begin和// AUTO CODE End标示出自动扩展生成的代码,从而在重新生成代码时,可以先将原来的代码删除,重新生成对应的代码。

作为一种可选的实施方式,步骤5)中具体是指在硬件代码的集成开发环境的编辑器中生成目标硬件语言的新的硬件代码。可通过将本实施例方法的硬件代码扩展功能集成到编辑器中,例如Vim或者Emacs中,形成编程环境的统一。在使用元操作和硬件语言表示需要扩展的代码后,可以在编辑过程中,立马看到扩展的效果,提高工作效率。例如,将扩展功能放到Vim编辑器的插件中,并定义扩展和删除扩展的快捷键,实现可扩展代码生成和浏览。

此外,本实施例还提供一种可用于硬件代码扩展的代码生成系统,包括:

代码抽取程序单元,用于针对待处理的硬件代码,抽取硬件代码中需要扩展的代码;

元操作提取程序单元,用于针对需要扩展的代码提取其中的元操作,所述元操作是指硬件代码扩展时具有规律的代码修改的操作,且预先配置有对应的使用其他软件编程语言实现的软件代码;

代码表示程序单元,用于将需要扩展的硬件代码使用元操作和硬件语言进行混合表示;

参数配置程序单元,用于判断需要扩展的硬件代码使用元操作时是否存在需要配置的参数,如果存在需要配置的参数则配置对应的参数;

代码生成程序单元,用于将元操作表示的软件代码进行扩展,生成目标硬件语言的新的硬件代码。

此外,本实施例还提供可用于硬件代码扩展的代码生成系统,包括计算机设备,该计算机设备被编程或配置以执行本实施例前述可用于硬件代码扩展的代码生成方法的步骤。

此外,本实施例还提供可用于硬件代码扩展的代码生成系统,包括计算机设备,该计算机设备至少包括微处理器和存储器,且该存储器上存储有被编程或配置以执行本实施例前述可用于硬件代码扩展的代码生成方法的计算机程序。

此外,本实施例还提供 一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述可用于硬件代码扩展的代码生成方法的计算机程序。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于超收敛插值逼近的三维电磁慢扩散数值模拟方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类