一种寄存器配置代码自动生成方法及装置与流程

文档序号:12176450阅读:1117来源:国知局
一种寄存器配置代码自动生成方法及装置与流程

本发明涉及计算机语言技术领域,特别涉及一种寄存器配置代码自动生成方法及装置。



背景技术:

目前,为了提高代码编译的工作效率,并减少重复编译代码的手工劳作,通常需要通过代码自动生成工具自动生成代码。以AutoCoder自动代码生成器为例,AutoCoder自动代码生成器是一个根据模板自动生成代码的代码生成工具,根据模板的不同,可以生成任何语言(如:ASP、C#、C++BUILDER、DELPHI、JAVA、JSP、PHP、VB、VC.NET……),不同层次结构(B/S、C/S、n-tiger……),基于不同数据库(ORACLE、MSSQL、MYSQL、DB2、ACCESS、ODBC、OLE……)的代码和开发文档。开发人员无需任何编码,只需将数据库结构导入到AutoCoder中,并做简单的设置即可生成所需的代码,可以大幅度地提高开发效率。

而本发明的目的在于,提供一种可以快速生成满足APB/AHB/AXI Slave等总线接口要求的寄存器配置代码,操作简单,在进一步提高开发效率的同时,提高IC设计(Integrated Circuit Design,集成电路设计)效率。



技术实现要素:

本发明提供了一种寄存器配置代码自动生成方法及装置,旨在至少在一定程度上解决现有技术中的上述技术问题之一。

为了解决上述问题,本发明提供了如下技术方案:

一种寄存器配置代码自动生成方法,包括:

步骤A:根据寄存器手册编写格式编写寄存器手册;

步骤B:将寄存器手册中的内容提取到文本文件中,生成转换脚本需要的输入文本文件;

步骤C:调用转换脚本读取文本文件,根据设置的总线接口属性生成对应的寄存器配置代码。

本发明实施例采取的技术方案还包括:在所述步骤A中,所述寄存器手册编写格式为:

a:B4格填入需要生成的寄存器名称,名称以“REG_”为前缀;

b:D4格填入寄存器的位宽长度;

c:E4格填入寄存器在模块中的偏移地址;

d:H列填入寄存器中各信号的位置;

e:I列填入各信号名称;

f:J列填入各信号的属性,信号属性包括:RW:可读可写;RO:只读;WO:只写;

g:K列填入各信号的复位值。

本发明实施例采取的技术方案还包括:在所述步骤B中,所述将寄存器手册中的内容提取到文本文件中具体为:将寄存器手册中a、b、c、d、e、f、g步队员的内容提取到reg.txt格式的文本文件中。

本发明实施例采取的技术方案还包括:在所述步骤C中,所述寄存器配置代码的生成方式为:转换脚本以关键字“REG_”搜寻寄存器个数,并保存寄存器在模块中的偏移地址,将寄存器中各信号的名称、位置、属性、复位值记录到指定的数组中,然后分段打印输出最终的寄存器配置代码;所生成的代码语言包括Verilog或VHDL。

本发明实施例采取的技术方案还包括:所述分段打印输出最终的寄存器配置代码具体为:将寄存器中各信号分四段打印输出,所述四段分别为:

信号定义段:为模块的输入、输出声明部分;

总线读写信号解析段:解析总线接口时序,抽取出寄存器的读与写信号;

信号写操作解析段:对寄存器中RW、WO属性的信号,进行write操作;

信号读操作解析段:对寄存器中RW、RO属性的信号,进行read操作。

本发明实施例采取的另一技术方案为:一种寄存器配置代码自动生成装置,包括:

寄存器手册编写单元:用于根据寄存器手册编写格式编写寄存器手册;

内容提取单元:用于将寄存器手册中的内容提取到文本文件中,生成转换脚本需要的输入文本文件;

代码转换单元:用于调用转换脚本读取文本文件,根据设置的总线接口属性生成对应的寄存器配置代码。

本发明实施例采取的技术方案还包括:所述寄存器手册编写格式为:

a:B4格填入需要生成的寄存器名称,名称以“REG_”为前缀;

b:D4格填入寄存器的位宽长度;

c:E4格填入寄存器在模块中的偏移地址;

d:H列填入寄存器中各信号的位置;

e:I列填入各信号名称;

f:J列填入各信号的属性,信号属性包括:RW:可读可写;RO:只读;WO:只写;

g:K列填入各信号的复位值。

本发明实施例采取的技术方案还包括:所述内容提取单元将寄存器手册中的内容提取到文本文件中具体为:将寄存器手册中a、b、c、d、e、f、g步队员的内容提取到reg.txt格式的文本文件中。

本发明实施例采取的技术方案还包括:所述代码转换单元生成寄存器配置代码的方式为:转换脚本以关键字“REG_”搜寻寄存器个数,并保存寄存器在模块中的偏移地址,将寄存器中各信号的名称、位置、属性、复位值记录到指定的数组中,然后分段打印输出最终的寄存器配置代码;所生成的代码语言包括Verilog或VHDL。

本发明实施例采取的技术方案还包括:所述分段打印输出最终的寄存器配置代码具体为:将寄存器中各信号分四段打印输出,所述四段分别为:

信号定义段:为模块的输入、输出声明部分;

总线读写信号解析段:解析总线接口时序,抽取出寄存器的读与写信号;

信号写操作解析段:对寄存器中RW、WO属性的信号,进行write操作;

信号读操作解析段:对寄存器中RW、RO属性的信号,进行read操作。

相对于现有技术,本发明实施例产生的有益效果在于:本发明实施例的寄存器配置代码自动生成方法及装置在编写模块寄存器手册时,按设定格式完成寄存器手册,将所需的寄存器手册内容复制成文本文件作为后续转换脚本的输入,并调用转换脚本读取文本文件,根据设置的总线接口类型快速生成对应的寄存器配置代码。本发明操作简单,进一步提高开发效率的同时,提高了IC设计效率。

附图说明

图1是本发明实施例的寄存器配置代码自动生成方法的流程图;

图2是寄存器手册编写格式;

图3为信号定义段格式示意图;

图4为信号写操作解析段格式示意图;

图5为信号读操作解析段格式示意图;

图6是本发明实施例的寄存器配置代码自动生成装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参阅图1,是本发明实施例的寄存器配置代码自动生成方法的流程图。本发明实施例的寄存器配置代码自动生成方法包括以下步骤:

步骤100:根据设定的寄存器手册编写格式编写寄存器手册;

在步骤100中,寄存器手册编写格式如图2所示,其中,D2格填入给模块分配的寄存器首地址,第4至第7行为一个寄存器的表示格式,如果要添加多个寄存器,按此格式在寄存器表单中依次填写即可。具体编写格式如下:

a:B4格填入需要生成的寄存器名称,名称以“REG_”为前缀;

b:D4格填入寄存器的位宽长度;

c:E4格填入寄存器在模块中的偏移地址;

d:H列填入寄存器中各信号的位置;

e:I列填入各信号名称;

f:J列填入各信号的属性,信号属性包括:RW:可读可写;RO:只读;WO:只写;

g:K列填入各信号的复位值。

步骤200:将寄存器手册中的内容提取到文本文件中,生成转换脚本需要的输入文本文件;

在步骤200中,文本文件格式为reg.txt格式,将寄存器手册中a、b、c、d、e、f、g步队员的内容提取到如下reg.txt格式的文本文件中:

步骤300:调用转换脚本读取文本文件,根据设置的总线接口属性生成对应的寄存器配置代码;

在步骤300中,代码生成方式为:转换脚本以关键字“REG_”搜寻寄存器个数,并保存寄存器在模块中的偏移地址,将寄存器中各信号的名称、位置、属性、复位值记录到指定的数组中,然后分段打印输出最终的寄存器配置代码;其中,生成的代码语言包括Verilog或VHDL等,代码的总线接口包括APB、AHB、AXI、Slave等。在代码打印输出时,将寄存器中各信号分四段打印输出,四段分别是信号定义段、总线读写信号解析段、信号写操作解析段、信号读操作解析段,各段内容如下:

信号定义段:为模块的输入、输出声明部分,具体如图3所示,为信号定义段格式示意图。信号定义段格式如下:

标注1:为模块总线接口部分,附图为APB接口信号列表;

标注2:为信号定义部分,信号属性为RW、WO声明为output属性,RO声明为input属性;

标注3:对output属性信号进行reg声明定义,满足verilog/vhdl代码的语法需要。

总线读写信号解析段:此段解析总线接口时序,抽取出寄存器的读与写信号,总线读写信号解析段格式如下:

wire rd_cs=psel&(~pwrite)&(~penable);

wire wr_cs=psel&pwrite&(penable);

信号写操作解析段:此段对寄存器中RW、WO属性的信号,进行W(write)操作,具体如图4所示,为信号写操作解析段格式示意图。信号写操作解析段格式如下:

A1:1和5部分填入寄存器名称;

B1:2部分填入寄存器偏移地址;

C1:3和6部分填入信号名称;

D1:4部分填入信号复位值;

E1:7部分填入信号所占bit位置;

A1—E1填入内容均为在转换脚本第一步搜寻关键字“REG_”后保存的相应数组内容。如有多个寄存器,按以上格式依次打印输出。

信号读操作解析段:此段对寄存器中RW、RO属性的信号,进行R(read)操作,具体如图5所示,为信号读操作解析段格式示意图。信号读操作解析段格式如下:

A2:1部分填入寄存器偏移地址;

B2:2部分根据信号在寄存器中bit位置依次填入相应信号,没有信号的寄存器相应bit位以0填充;

C2:如果多个寄存器,在3部分处按第56行格式依次补充完成。

请参阅图6,是本发明实施例的寄存器配置代码自动生成装置的结构示意图。本发明实施例的寄存器配置代码自动生成装置包括寄存器手册编写单元、内容提取单元和代码转换单元;

寄存器手册编写单元用于根据设定的寄存器手册编写格式编写寄存器手册;其中,寄存器手册编写格式如图2所示,其中,D2格填入给模块分配的寄存器首地址,第4至第7行为一个寄存器的表示格式,如果要添加多个寄存器,按此格式在寄存器表单中依次填写即可。具体编写格式如下:

a:B4格填入需要生成的寄存器名称,名称以“REG_”为前缀;

b:D4格填入寄存器的位宽长度;

c:E4格填入寄存器在模块中的偏移地址;

d:H列填入寄存器中各信号的位置;

e:I列填入各信号名称;

f:J列填入各信号的属性,信号属性包括:RW:可读可写;RO:只读;WO:只写;

g:K列填入各信号的复位值。

内容提取单元用于将寄存器手册中的内容提取到文本文件中,生成转换脚本需要的输入文本文件;其中,文本文件格式为reg.txt格式,将寄存器手册中a、b、c、d、e、f、g步队员的内容提取到如下reg.txt格式的文本文件中:

代码转换单元用于调用转换脚本读取文本文件,根据设置的总线接口属性生成对应的寄存器配置代码;代码生成方式为:转换脚本以关键字“REG_”搜寻寄存器个数,并保存寄存器在模块中的偏移地址,将寄存器中各信号的名称、位置、属性、复位值记录到指定的数组中,然后分段打印输出最终的寄存器配置代码;其中,生成的代码语言包括Verilog或VHDL等,代码的总线接口包括APB、AHB、AXI、Slave等。在代码打印输出时,将寄存器中各信号分四段打印输出,四段分别是信号定义段、总线读写信号解析段、信号写操作解析段、信号读操作解析段,各段内容如下:

信号定义段:为模块的输入、输出声明部分,具体如图3所示,为信号定义段格式示意图。信号定义段格式如下:

标注1:为模块总线接口部分,附图为APB接口信号列表;

标注2:为信号定义部分,信号属性为RW、WO声明为output属性,RO声明为input属性;

标注3:对output属性信号进行reg声明定义,满足verilog/vhdl代码的语法需要。

总线读写信号解析段:此段解析总线接口时序,抽取出寄存器的读与写信号,总线读写信号解析段格式如下:

wire rd_cs=psel&(~pwrite)&(~penable);

wire wr_c5=psel&pwrite&(penable);

信号写操作解析段:此段对寄存器中RW、WO属性的信号,进行W(write)操作,具体如图4所示,为信号写操作解析段格式示意图。信号写操作解析段格式如下:

A1:1和5部分填入寄存器名称;

B1:2部分填入寄存器偏移地址;

C1:3和6部分填入信号名称;

D1:4部分填入信号复位值;

E1:7部分填入信号所占bit位置;

A1—E1填入内容均为在转换脚本第一步搜寻关键字“REG_”后保存的相应数组内容。如有多个寄存器,按以上格式依次打印输出。

信号读操作解析段:此段对寄存器中RW、RO属性的信号,进行R(read)操作,具体如图5所示,为信号读操作解析段格式示意图。信号读操作解析段格式如下:

A2:1部分填入寄存器偏移地址;

B2:2部分根据信号在寄存器中bit位置依次填入相应信号,没有信号的寄存器相应bit位以0填充;

C2:如果多个寄存器,在3部分处按第56行格式依次补充完成。

本发明实施例的寄存器配置代码自动生成方法及装置在编写模块寄存器手册时,按设定格式完成寄存器手册,将所需的寄存器手册内容复制成文本文件作为后续转换脚本的输入,并调用转换脚本读取文本文件,根据设置的总线接口类型快速生成对应的寄存器配置代码。本发明操作简单,进一步提高开发效率的同时,提高了IC设计效率。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1