本技术涉及芯片设计,尤其涉及一种寄存器代码和文档的自动化设计方法、装置、设备及介质。
背景技术:
1、随着新技术和新工艺的迅速发展,芯片的功能也变得越来越复杂,芯片内所包含的寄存器的数量也变得越来越多。比如,一个32位的单片机中一般有700至1200个寄存器,寄存器的设计修改贯穿于芯片设计的全过程。
2、目前,芯片寄存器的相关代码和文档主要靠人工进行维护,在芯片开发的不同阶段,需要不断的对寄存器进行增改删,大量人工重复性开发代码和编辑文档会导致极大的出错概率和开发效率的降低,进而影响了芯片的开发周期和设计成本。有数据显示,寄存器的设计错误占芯片设计错误的40%至50%,其主要错误主要集中在寄存器文档描述错误和寄存器功能设计错误,尤其是描述错误容易被忽略,导致产品无法满足用户需求,引起用户抱怨。
3、相关技术中,对于一些复杂芯片的设计,目前主要采用word、excel和html等设计工具进行辅助设计,这些辅助设计方法的缺点是工作量大、正确率不高以及效率较低,并且一旦出现错误将很难及时被发现。
4、因此,如何高效地保证寄存器文档描述和寄存器代码的一致性,是一个亟需解决的技术问题。
技术实现思路
1、本技术的主要目的在于提供一种寄存器代码和文档的自动化设计方法、装置、设备及介质,旨在解决通过人工进行寄存器代码和文档的维护工作量大,正确率不高并且效率较低的技术问题。
2、第一方面,本技术提供一种寄存器代码和文档的自动化设计方法,所述方法包括以下步骤:
3、通过交互式网页获取用户输入的芯片层级模块参数和寄存器参数,并根据所述芯片层级模块参数和所述寄存器参数生成预设格式文件;
4、解析所述预设格式文件,得到用于生成芯片通用命令接口对应的代码的解析芯片层级模块参数和解析寄存器参数,并以哈希表样式进行储存;
5、通过预置程序对所述哈希表进行解析,以自动生成芯片通用命令接口对应的代码。
6、一些实施例中,所述芯片层级模块参数包括:名称、基地址、基址位宽、套数和时钟组;
7、所述寄存器参数包括:寄存器名称,寄存器地址,寄存器套数,域名称,域类型,域位宽和域默认值。
8、一些实施例中,所述根据所述芯片层级模块参数和所述寄存器参数生成预设格式文件,包括:
9、通过所述交互式网页调用xml读写操作document类,将所述芯片层级模块参数和所述寄存器参数类按照芯片层级模块保存为xml文件;
10、其中,所述xml文件中各个芯片层级模块的节点保存为特定名称的元素,与芯片层级模块的节点关联的芯片层级模块参数和寄存器参数保存为元素属性。
11、一些实施例中,所述解析所述预设格式文件,得到用于生成芯片通用命令接口对应的代码的解析芯片层级模块参数和解析寄存器参数,并以哈希表样式进行储存,包括:
12、通过解析器perl中的动态节点解析库模块xml::libxml和xml::libxml::xpathcontext对所述xml文件进行解析,得到解析芯片层级模块参数和解析寄存器参数。
13、一些实施例中,所述解析所述预设格式文件,得到用于生成芯片通用命令接口对应的代码的解析芯片层级模块参数和解析寄存器参数,并以哈希表样式进行储存,包括:
14、将解析芯片层级模块中每一层级模块的相关参数储存为一个哈希表,多个层级模块的哈希表根据层级进行嵌套,形成一个多级嵌套哈希表进行储存;
15、其中,每一层级模块的哈希表中只包括一个键值对key-value,模块自身的参数用预设符号连接组合成字符串作为关键字key,该模块下一级模块的哈希表组合成数组作为值value。
16、一些实施例中,在通过预置程序对所述哈希表进行解析,以自动生成芯片通用命令接口对应的代码之前,还包括:
17、确定所述多级嵌套哈希表中每个key-value中的最底层模块;
18、将所述最底层模块的多级地址解码信息作为key,将储存有与所述最底层模块相关联的参数的哈希表作为value,以将所述多级嵌套哈希表转换为增强型哈希表。
19、一些实施例中,所述通过预置程序对所述哈希表进行解析,以自动生成芯片通用命令接口对应的代码,包括:
20、通过预置的perl程序中的灵活算法对所述增强型哈希表进行解析,自动生成rtl代码、驱动代码、寄存器文档和验证代码;
21、其中,所述rtl代码是所述perl程序按照寄存器包含的域类型调用与域类型对应的rtl模板生成的;
22、其中,所述rtl模板是根据寄存器中的不同的域类型进行预置的,不同的域类型通过域参数access进行区分。
23、第二方面,本技术还提供一种寄存器代码和文档的自动化设计装置,所述装置包括:
24、交互式网页,其用于获取用户输入的项目层级模块参数和寄存器参数,并根据所述项目层级模块参数和所述寄存器参数生成预设格式的目标文件;
25、解析模块,其用于解析所述预设格式文件,得到用于生成芯片通用命令接口对应的代码的解析芯片层级模块参数和解析寄存器参数,并以哈希表样式进行储存;
26、生成模块,通过预置程序对所述哈希表进行解析,以自动生成芯片通用命令接口对应的代码。
27、一些实施例中,所述芯片层级模块参数包括:名称、基地址、基址位宽、套数和时钟组;
28、所述寄存器参数包括:寄存器名称,寄存器地址,寄存器套数,域名称,域类型,域位宽和域默认值。
29、一些实施例中,所述交互式网页还用于:
30、通过所述交互式网页调用xml读写操作document类,将所述芯片层级模块参数和所述寄存器参数类按照芯片层级模块保存为xml文件;
31、其中,所述xml文件中各个芯片层级模块的节点保存为特定名称的元素,与芯片层级模块的节点关联的芯片层级模块参数和寄存器参数保存为元素属性。
32、一些实施例中,所述解析模块还用于:
33、通过解析器perl中的动态节点解析库模块xml::libxml和xml::libxml::xpathcontext对所述xml文件进行解析,得到解析芯片层级模块参数和解析寄存器参数。
34、一些实施例中,所述解析模块还用于:
35、将解析芯片层级模块中每一层级模块的相关参数储存为一个哈希表,多个层级模块的哈希表根据层级进行嵌套,形成一个多级嵌套哈希表进行储存;
36、其中,每一层级模块的哈希表中只包括一个键值对key-value,模块自身的参数用预设符号连接组合成字符串作为关键字key,该模块下一级模块的哈希表组合成数组作为值value。
37、一些实施例中,该装置还用于:
38、确定所述多级嵌套哈希表中每个key-value中的最底层模块;
39、将所述最底层模块的多级地址解码信息作为key,将储存有与所述最底层模块相关联的参数的哈希表作为value,以将所述多级嵌套哈希表转换为增强型哈希表。
40、一些实施例中,所述生成模块还用于:
41、通过预置的perl程序中的灵活算法对所述增强型哈希表进行解析,自动生成rtl代码、驱动代码、寄存器文档和验证代码;
42、其中,所述rtl代码是所述perl程序按照寄存器包含的域类型调用与域类型对应的rtl模板生成的;
43、其中,所述rtl模板是根据寄存器中的不同的域类型进行预置的,不同的域类型通过域参数access进行区分。
44、第三方面,本技术还提供一种计算机设备,所述计算机设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现如上述的寄存器代码和文档的自动化设计方法的步骤。
45、第四方面,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现如上述的寄存器代码和文档的自动化设计方法的步骤。
46、本技术提供一种寄存器代码和文档的自动化设计方法、装置、设备及介质,通过交互式网页获取用户输入的芯片层级模块参数和寄存器参数,并根据所述芯片层级模块参数和所述寄存器参数生成预设格式文件;解析所述预设格式文件,得到用于生成芯片通用命令接口对应的代码的解析芯片层级模块参数和解析寄存器参数,并以哈希表样式进行储存;通过预置程序对所述哈希表进行解析,以自动生成芯片通用命令接口对应的代码。能够有效降低人工重复开发为寄存器代码和文档带来的不确定性,可以保证寄存器代码和文档在设计周期中各版本连续性和稳定性,具有自动化程度高,正确率高、效率高、实时性好并且查错容易等特点。