CN115758973A - 芯片寄存器设计文件的生成方法及装置、设备、存储介质 - Google Patents
芯片寄存器设计文件的生成方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN115758973A CN115758973A CN202211419572.4A CN202211419572A CN115758973A CN 115758973 A CN115758973 A CN 115758973A CN 202211419572 A CN202211419572 A CN 202211419572A CN 115758973 A CN115758973 A CN 115758973A
- Authority
- CN
- China
- Prior art keywords
- register
- code
- description
- file
- template
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本公开实施例公开了一种芯片寄存器设计文件的生成方法及装置、计算机设备、存储介质。其中,所述方法包括:获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。通过该方法,为芯片开发节省人力和时间,且方便寄存器设计的二次开发和维护。
Description
技术领域
本公开涉及但不限于半导体技术领域,尤其涉及一种芯片寄存器设计文件的生成方法及装置、计算机设备、存储介质。
背景技术
数字芯片中,寄存器是硬件和软件之间相互信息交互的窗口,在整个芯片设计周期的过程中,寄存器的定义、设计和验证也排在了任务前列,首先只有保证寄存器的功能正确,才使得硬件和软件之间的信息交互是通畅的。
而当前大多数芯片设计公司在芯片功能开发过程中,对于寄存器相关功能的设计和验证大都采用人工设计或者脚本半自动化生成设计,上述任务需要花费数天到一周以上时间才能完成收敛,且在同一个公司不同团队或者项目中也有可能寄存器的设计验证实现流程不统一,不利于日后的维护工作。
发明内容
有鉴于此,本公开实施例至少提供一种芯片寄存器设计文件的生成方法及装置、计算机设备、存储介质。
第一方面,本公开实施例提供一种芯片寄存器设计文件的生成方法,所述方法包括:
获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;
根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。
在一些实施例中,所述获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息,包括:
利用第一代码语言加载所述描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
所述方法还包括:
利用第二代码语言生成所述寄存器文档模板;
所述根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档。
在一些实施例中,所述方法还包括:
利用第三代码语言生成所述寄存器代码模板;
所述根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件。
在一些实施例中,所述利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并分析所述寄存器文档模板中的字段名;
在所述寄存器的描述信息中找到与所述字段名关联的信息,并用所述信息对所述字段名进行赋值后生成所述描述文档。
在一些实施例中,所述利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并分析所述寄存器代码模板中的变量名;
在所述寄存器的描述信息中找到与所述变量名关联的信息,并用所述信息对所述变量名进行赋值后生成所述代码文件。
在一些实施例中,所述生成关联所述寄存器的代码文件,包括:
生成关联所述寄存器的,寄存器传输级RTL代码、验证代码、软件驱动代码以及验证激励代码。
在一些实施例中,所述生成所述寄存器的描述文档,包括:
生成以下至少之一格式的描述文档:PDF文档、HTML文档、DOC文档、IP-XACT XML文档。
第二方面,本公开实施例提供一种芯片寄存器设计文件的生成装置,所述装置包括:
获取模块,配置为获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
第一生成模块,配置为根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;
第二生成模块,配置为根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。
在一些实施例中,所述获取模块,配置为利用第一代码语言加载所述描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
所述装置还包括:
第三生成模块,配置为利用第二代码语言生成所述寄存器文档模板;
所述第一生成模块,配置为利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档。
在一些实施例中,所述装置还包括:
第四生成模块,配置为利用第三代码语言生成所述寄存器代码模板;
所述第二生成模块,配置为利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件。
在一些实施例中,所述第一生成模块,配置为利用所述第一代码语言调用所述寄存器文档模板,并分析所述寄存器文档模板中的字段名;在所述寄存器的描述信息中找到与所述字段名关联的信息,并用所述信息对所述字段名进行赋值后生成所述描述文档。
在一些实施例中,所述第二生成模块,配置为利用所述第一代码语言调用所述寄存器代码模板,并分析所述寄存器代码模板中的变量名;在所述寄存器的描述信息中找到与所述变量名关联的信息,并用所述信息对所述变量名进行赋值后生成所述代码文件。
在一些实施例中,所述第二生成模块,配置为生成关联所述寄存器的,寄存器传输级RTL代码、验证代码、软件驱动代码以及验证激励代码。
在一些实施例中,所述第一生成模块,配置为生成以下至少之一格式的描述文档:PDF文档、HTML文档、DOC文档、IP-XACT XML文档。
第三方面,本公开实施例提供一种计算机设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行第一方面中所述的方法。
第四方面,本公开实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面中所述的方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例中,计算机设备解析寄存器的描述文件获得描述信息后,结合预设的寄存器文档模板生成寄存器的描述文档,结合预设的寄存器代码模板生成关联寄存器的代码文件,一方面,无需依赖商业EDA工具,通过自动化方式生成包括代码和文档在内的一站式解决方案,可以有效的解决寄存器设计相关需求,为芯片开发节省人力和时间;另一方面,后续若有新的寄存器设计需求,本公开实施例的方案可方便二次开发和维护。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本公开实施例提供的一种芯片寄存器设计文件的生成方法实现流程示意图;
图2为本公开实施例提供的一种寄存器PDF格式的描述文档示例图;
图3为本公开实施例提供的一种寄存器HTML格式的描述文档示例图;
图4为本公开实施例提供的一种芯片寄存器设计文件的生成方法流程示例图;
图5为本公开实施例提供的一种芯片寄存器设计文件的生成装置结构示意图;
图6为本公开实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面结合附图和实施例对本公开的技术方案进一步详细阐述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
本公开所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开的目的,不是旨在限制本公开。
当前业界很多芯片设计公司有在使用IP-XACT XML格式的寄存器功能定义描述文件,IP-XACT格式是一种IEEE(IEEE-1685)标准的寄存器定义格式,使用IP-XACT格式定义描述寄存器信息的优点是可以很好的和很多EDA工具无缝对接,如Synopsys的ralgen工具、Cadence公司的ireggen工具、Mentor公司的Register Assistant工具等,可以通过IP-XACTXML格式的寄存器描述文件作为输入,自动化产生对应模块的UVM(UniversalVerification Methodology,通用验证方法学)寄存器模型代码。但是IP-XACT XML格式描述的寄存器信息缺点是可读性差,后期对于寄存器信息的修改更新查阅等都不太方便;并且最重要的一点是通过上述EDA工具不能产生寄存器设计相关的RTL(Register TransferLevel,寄存器传输级)代码和寄存器功能文档等;此外,再加上如果使用到EDA工具,还需要相应的许可,例如商业工具License。
由此可见,相关商业EDA工具并不能很好的支持寄存器设计过程中涉及的代码和文档需求,加上商业工具的学习成本和工具本身以及配套License的费用不小,基于商业EDA工具对芯片寄存器进行设计的局限性太大。
对此,本公开实施例提供一种芯片寄存器设计文件的生成方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑等具备数据处理能力的设备。
图1为本公开实施例提供的一种芯片寄存器设计文件的生成方法实现流程示意图,如图1所示,该方法包括如下步骤:
S11、获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
S12、根据所述寄存器的描述信息以及寄存器文档模板,生成所述寄存器的描述文档;
S13、根据所述寄存器的描述信息以及寄存器代码模板,生成关联所述寄存器的代码文件。
本公开实施例中,计算机设备获取寄存器的描述文件,该描述文件例如是Excel格式或Word格式等方便用户编辑和查阅的文件。描述文件中包括寄存器的描述信息,该描述信息可包括:寄存器的名称、寄存器的注释、寄存器地址、偏移地址、寄存器位宽、读写权限类型、初始值和寄存器域信息等,其中,寄存器域信息包括域名称、域注释、域的偏移地址、域的读写权限类型以及域的初始值等。比如常见的读写权限类型有可读可写(RW)类型、只读(RO)类型、只写类(WO)型、读清(RC)类型、写1清(W1C)类型等等。
需要说明的是,一个芯片上可包括一个或多个寄存器,寄存器的一个或多个比特(bit)的拼接称为一个寄存器域,一个寄存器可划分为一个或多个寄存器域。本公开实施例中,描述文件中可包括一个或多个寄存器的描述信息,还可包括一个寄存器的一个或多个寄存器域的描述信息。
本公开实施例中,计算机设备解析获得描述文件中寄存器的描述信息,在一种实施例中,计算机设备根据预存的关键字段,在描述文件中查找上述关键字段,并按已知的格式获取关键字段对应的内容,从而建立关键字段与内容之间的映射。
示例性的,表1为Excel格式的描述文件中的部分内容示例,如表1所示:
表1寄存器的描述文件中内容
其中,“Register Name”是寄存器的名称,“Register Description”是寄存器的注释,“Register Address”是寄存器地址,“Register Width”是寄存器位宽,“RegisterAccess”是寄存器读写权限,“Register Reset Value”是寄存器初始值。
通常,Excel格式文件中,首行各列中的内容用于表征关键字段,首行之外的各行中,依据列的关键字段填入对应的内容。因此,计算机设备可基于该已知的格式与预存的关键字段,解析后获得关键字段与内容之间的映射。
在另一种实施例中,可基于深度学习模型解析描述文件中的内容,从而建立关键字段与内容之间的映射,即获得寄存器的描述信息。本公开实施例中,深度学习模型可以为基于训练样本数据以及标签值,对如卷积神经网络(Convolutional Neural Networks,CNN)、深度学习网络(Deep Neural Networks,DNN)等网络进行训练调参后得到的。其中,训练样本数据包括寄存器的不同字段名、寄存器的描述内容,标签值即为字段名与描述内容之间的对应关系。需要说明的是,训练样本数据中表征同一意义的字段名可以包括不同的描述形式,例如寄存器的名称,可以用“Register Name”来表达,也可以用“寄存器名称”来表达;再例如,寄存器读写权限可以用“Register Access”来表达,也可以用“寄存器权限”来表达,对应的支持读写的权限类型可以用“RW”表达,也可以用“读写”或“可读/可写”来表达。
基于训练好的深度学习模型,将描述文件中的内容输入到该深度学习模型,即可通过模型获得寄存器的描述信息。可以理解的是,基于该种方式,对描述文件中内容的排布格式以及内容的描述形式约束较小,用户无需依据固定格式编辑描述文件,因而本公开实施例基于深度学习模型解析的方案具有更高的灵活度,且方案的普适性较好。
本公开实施例中,解析后获得的寄存器的描述信息可以在计算机设备中按如下格式存储:[{'regName':'REG_HEAD','regDescription':'register header','regAddr':'0x00','regWidth':'32','regAccess':'RW','regResetVal':'0x0'}],示例性的,'regName':'REG_HEAD'即为一组关键字段与内容之间的映射。
本公开实施例中,计算机设备在解析获得寄存器的描述信息后,即可结合预设的寄存器文档模板,生成寄存器的描述文档。其中,寄存器文档模板可以是存储于计算机内部的代码文件,寄存器文档模板中包括通用的寄存器描述信息关联的字段名,还包括寄存器描述信息的布局样式,布局样式中包括各字段名的位置,字段内容的待填充位置,还可包括字段名、待填充内容的字体、字体大小、字体颜色等等,本公开实施例不做限制。
需要说明的是,在本公开的实施例中,寄存器文档模板是没有填充具体的寄存器信息的模板,寄存器的描述文档是渲染并填充了寄存器信息之后的文档,寄存器的描述文档是以文件格式保存的文档,非代码文件格式。
本公开实施例中,计算机设备在解析获得寄存器的描述信息后,还可结合预设的寄存器代码模板,生成关联寄存器的代码文件。其中,寄存器代码模板可以是存储于计算机内部的代码文件,寄存器代码模板中包括寄存器描述信息关联的字段名,还包括寄存器功能的逻辑描述,例如寄存器的可写功能,逻辑描述包括:将数据写入寄存器;寄存器代码模板中还可包括功能验证代码,例如判断寄存器中的存储的内容和写入的内容是否一致。此外,寄存器代码模板中还包括C/C++模型代码和软硬件仿真激励代码等,本公开实施例不做限制。
需要说明的是,预设的寄存器文档模板和寄存器代码模板均可以是开发人员事先开发的,例如通过收集和分析芯片设计中寄存器定义的类型需求以及对应的功能实现需求后开发形成。模板库中可最大限度地封装寄存器相关的通用的数据结构和方法,且寄存器文档模板库中可最大限度的封装文档的生成样式等等,由此节省开发寄存器的工作量,提升寄存器开发的效率。且,若寄存器的通用需求有升级,开发人员可通过更新升级寄存器文档模板和寄存器代码模板以应对寄存器的发展需求;此外,若存在对寄存器开发的个性化需求,开发人员也可通过扩展例如寄存器代码模板中的基类来定义自己所需的类,添加寄存器的特定信息即可。
可以理解的是,本公开实施例中,计算机设备解析寄存器的描述文件获得描述信息后,结合预设的寄存器文档模板生成寄存器的描述文档,结合预设的寄存器代码模板生成关联寄存器的代码文件,一方面,无需依赖商业EDA工具,通过自动化方式生成包括代码和文档在内的一站式解决方案,可以有效的解决寄存器设计相关需求,为芯片开发节省人力和时间;另一方面,后续若有新的寄存器设计需求,本公开实施例的方案可方便二次开发和维护。
如前所述的,本公开实施例中,描述文件可以是Excel格式,相对IP-XACT XML格式的描述文件,由于IP-XACT XML是IEEE定义的一种标准格式,属于不支持人为编辑的格式,且直接打开查看的话其可视化效果对用户来说很差,而Excel表格格式对用户来说,比起XML格式使用方法更简单,因此可以理解的是,选用Excel格式作为寄存器的描述文件的格式的可读性和可使用性也会更好。
在一些实施例中,所述获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息,包括:
利用第一代码语言加载所述描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
所述方法还包括:
利用第二代码语言生成所述寄存器文档模板;
所述根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档。
本公开实施例中,第一代码语言可以是Python语言,也可以是其他代码语言比如Ruby或者Perl等。由于本公开实施例中寄存器设计文件的生成方法是一种基于全软件的方法,考虑到代码跨平台移植性、代码语言使用的便利性(例如内存管理或标准库的使用等),以及代码的可扩展性,本公开实施例可选用第一代码语言为Python语言。
本公开实施例中,第二代码语言可以包括Java语言,也可以是C/C++代码语言等。考虑到Python语言和Java语言的广泛使用,以及Java语言也具有跨平台的优势,可以移植到不同的操作***上运行,因而本公开实施例也可利用Java语言生成寄存器文档模板,利用Python语言加载并解析描述文件获得描述信息,并利用Python语言调用Java语言的寄存器文档模板,以根据描述信息填充寄存器文档模板中生成寄存器的描述文档。
可以理解的是,在本公开实施例中,结合软件开发优秀思想,一方面,通过软件为寄存器进行建模,生成寄存器文档模板,方便后续维护升级;另一方面,使用不同的代码语言各自执行各自的功能,计算机设备利用第一代码语言进行跨平台的接口调用(即调用第二代码语言生成的寄存器文档模板),使得不同的功能模块之间互相解耦,能减少对开发人员的技术限制,利于合作开发,使得本公开实施例提供的芯片寄存器设计文件的生成方法的适用性更广。
在一些实施例中,所述方法还包括:
利用第三代码语言生成所述寄存器代码模板;
所述根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件。
在本公开实施例中,第三代码语言可以包括Mako语言、jinja2等代码模板语言,还可包括Verilog等硬件描述语言。Mako和Jinja2均是基于python的模板引擎,考虑到Mako支持的代码模板语言功能更多,因而本公开实施例可选用第一代码语言为Python语言,第三代码语言包括Mako语言,利用Mako语言生成寄存器代码模板,利用Python调用基于Mako生成的寄存器文档模板,以根据描述信息填充寄存器代码模板生成寄存器的代码文件。
可以理解的是,在本公开实施例中,结合软件开发优秀思想,一方面,通过软件为寄存器进行建模,生成寄存器代码模板,方便后续维护升级;另一方面,不同的代码语言各自执行各自的功能,计算机设备利用第一代码语言进行跨平台的接口调用(即调用第三代码语言生成的寄存器代码模板),使得不同的功能模块之间互相解耦,减少对开发人员的技术限制,利于合作开发,使得本公开实施例提供的芯片寄存器设计文件的生成方法的适用性更广。
在一些实施例中,所述利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并分析所述寄存器文档模板中的字段名;
在所述寄存器的描述信息中找到与所述字段名关联的信息,并用所述信息对所述字段名进行赋值后生成所述描述文档。
在本公开实施例中,计算机设备利用第一代码语言调用寄存器文档模板后,会分析寄存器文档模板中的字段名,例如计算机设备在寄存器文档模板中找到“Address”、“Register Name”、“Description”等字段名。需要说明的是,寄存器文档模板中的字段名并不限定是以英文字符描述,还可以是以任意一种语言描述,例如中文等,本公开实施例不做限制。
计算机设备在分析获得寄存器文档模板中的字段名后,即可在寄存器的描述信息中查询与字段名关联的信息,并用信息对字段名进行赋值后生成描述文档。需要说明的是,在描述信息中查询与字段名关联的信息时,计算机设备优先在描述信息中查找与字段名对应的关键字段,并利用关键字段对应的内容对字段名进行赋值。
示例性的,针对寄存器文档模板中的“Address”字段,计算机设备优先在描述信息中查找与“Address”字段对应的关键字段“regAddr”,然后利用'regAddr'对应的内容'0x00'对“Address”字段进行赋值。
在一些实施例中,计算机设备中可以事先存储寄存器文档模板中的字段名与描述信息中关键字段之间的映射关系,基于该映射关系方便计算机设备查询与字段名关联的信息并进行赋值。
在另一些实施例中,计算机设备中还包括语义分析模型,计算机设备可利用该语义分析模型识别寄存器文档模板中的字段名的语义,以及描述信息中关键字段的语义,并建立语义相似度大于预设相似度阈值的字段名和关键字段之间的映射。随后,计算机设备即可基于该映射查询与字段名关联的信息并进行赋值。
需要说明的是,本公开实施例中,语义分析模型是能基于文本内容提取重要标签的模型,例如文本内容是“寄存器的地址”或“地址”,则提取的标签是“地址”。该语义分析模型也可以是基于神经网络模型训练获得的,例如,为基于训练样本数据以及标签值,对如CNN等网络进行训练调参后得到的。其中,训练样本数据包括不同的文本内容、标签值为文本内容对应的标签。
可以理解的是,基于语义分析模型的方式,无需事先存储寄存器文档模板中的字段名与描述信息中关键字段之间的映射关系,因而对开发人员的约束会更小,利于不同团队的合作开发,使得本公开实施例提供的芯片寄存器设计文件的生成方法更加智能。
本公开实施例中,计算机设备通过对寄存器文档模板中的字段名进行分析,基于解析出来的描述信息传递到寄存器文档模板中对应的字段名以渲染生成文档,方案简单有效。
在一些实施例中,所述利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并分析所述寄存器代码模板中的变量名;
在所述寄存器的描述信息中找到与所述变量名关联的信息,并用所述信息对所述变量名进行赋值后生成所述代码文件。
在本公开实施例中,计算机设备利用第一代码语言调用寄存器代码模板后,会分析寄存器代码模板中的变量名,例如计算机设备在寄存器代码模板中找到“fieldName”、“width”、“offset”等变量名,随后在寄存器的描述信息中查询与变量名关联的信息,并用信息对变量名进行赋值后生成代码文件。需要说明的是,在描述信息中查询与变量名关联的信息时,计算机设备优先在描述信息中查找与变量名对应的关键字段,并利用关键字段对应的内容对变量名进行赋值。
示例性的,针对寄存器代码模板中的“width”变量名,计算机设备优先在描述信息中查找与“width”变量名对应的关键字段“Register Width”,然后利用'Register Width'对应的内容'32'对“width”变量名进行赋值。
需要说明的是,计算机设备中也可以事先存储寄存器代码模板中的变量名与描述信息中关键字段之间的映射关系,基于该映射关系方便计算机设备查询与变量名关联的信息并进行赋值。
本公开实施例中,计算机设备通过对寄存器代码模板中的变量名进行分析,基于解析出来的描述信息传递到寄存器代码模板中对应的变量名以生成代码文件,方案简单有效。
在一些实施例中,所述生成关联所述寄存器的代码文件,包括:
生成关联所述寄存器的寄存器传输级RTL代码、验证代码、软件驱动代码以及验证激励代码。
在本公开的实施例中,计算机设备根据寄存器的描述信息以及寄存器代码模板生成的代码文件包括RTL代码、验证代码、软件驱动代码以及验证激励代码,还可包括RTL中断代码。其中,RTL代码是对寄存器具体的电路实现进行寄存器传输级别的代码描述,用于描述寄存器本身功能,以及寄存器和寄存器之间的逻辑功能的代码;验证代码是用于对寄存器功能进行验证的代码,例如可以是UVM模型代码,还可以是SV验证代码等;软件驱动代码可以是C/C++驱动代码(即C/C++模型代码);验证激励代码可以是软硬件仿真验证激励代码,软硬件仿真激励代码用于激励分别给如前述UVM模型和寄存器,比对UVM模型的输出值和寄存器的输出值是否一致,以验证寄存器的功能是否正确。
在本公开的实施例中,关联寄存器的代码文件可以包括Verilog格式的文件、Python格式的文件,还可包括VHDL格式的文件、C/C++格式的文件等,本公开实施例不做限制。
可以理解的是,在本公开实施例中,计算机设备根据寄存器的描述信息以及预设的寄存器代码模板,生成RTL代码、验证代码、软件驱动代码以及验证激励代码,提供了一种从寄存器需求定义到设计代码自动化生成再到功能验证激励代码自动化生成的完整方案,相对于基于EDA工具仅能自动化产生UVM寄存器模型代码的方案,本公开实施例提供的方案自动化程度更高,可以有效的解决寄存器设计验证的需求,为芯片开发节省人力和时间。
在一些实施例中,所述生成所述寄存器的描述文档,包括:
生成以下至少之一格式的描述文档:PDF文档、HTML文档、DOC文档、IP-XACT XML文档。
在本公开实施例中,计算机设备可支持生成多种格式的文档,图2为本公开实施例提供的一种寄存器PDF格式的描述文档示例图、图3为本公开实施例提供的一种寄存器HTML格式的描述文档示例图。如图2和图3所示,描述文档中均包括了寄存器的地址、名称和描述信息等内容,对于同一寄存器,不同格式的描述文档中的内容相同,只是布局样式可能不同。
需要说明的是,本公开实施例中,计算机设备还支持生成IP-XACT XML文档,使得生成的描述文档也可以兼容第三方EDA工具,减少了自研工具生成的寄存器文档不能导入三方EDA工具,从而需要做二次开发转换带来的麻烦。
可以理解的是,计算机设备支持多种格式的文档生成,一方面,相对于基于EDA工具仅支持生成UVM模型代码且不能自动化产生寄存器描述文档的方案,本公开实施例提供的方案自动化程度更高;另一方面,本公开实施例还支持IP-XACT XML格式的文档,也便于接入EDA工具,能加速芯片功能开发的速度。
图4为本公开实施例提供的一种芯片寄存器设计文件的生成方法流程示例图,如图4所示,包括如下步骤:
S21、获取Excel格式的寄存器功能需求表;
在本公开实施例中,Excel格式的寄存器功能需求表即计算机设备获取的寄存器的描述文件。
S22、寄存器功能解析;
在本公开实施例中,计算机设备执行寄存器功能解析,以获得寄存器功能需求表中寄存器的描述信息。
S23、建立寄存器信息数据库;
在本公开实施例中,计算机设备建立寄存器信息数据库,即按关键字段与内容之间的映射将解析获得的描述信息保存。
S24a-S24f、生成寄存器RTL设计代码、生成寄存器SV/UVM验证代码、生成寄存器C/C++模型代码、生成寄存器软硬件仿真验证激励代码、生成寄存器DOC/PDF/HTML文档、生成寄存器IP-XACT信息文件。
在本公开实施例中,RTL设计代码、寄存器SV/UVM验证代码、C/C++模型代码、寄存器软硬件仿真验证激励代码均属于关联寄存器的代码文件;DOC/PDF/HTML文档以及寄存器IP-XACT信息文件均属于寄存器的描述文档。
本公开实施例中,计算机设备解析寄存器的功能需求表获得寄存器信息后,自动化生成寄存器的描述文档以及关联寄存器的代码文件,一方面,无需依赖商业EDA工具,通过自动化方式生成包括代码和文档在内的一站式解决方案,可以有效的解决寄存器设计相关需求,为芯片开发节省人力和时间;另一方面,后续若有新的寄存器设计需求,本公开实施例的方案可方便二次开发和维护。
图5为本公开实施例提供的一种芯片寄存器设计文件的生成装置组成结构示意图,如图5所示,芯片寄存器设计文件的生成装置500包括:
获取模块501,配置为获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
第一生成模块502,配置为根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;
第二生成模块503,配置为根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。
在一些实施例中,所述获取模块501,配置为利用第一代码语言加载所述描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
所述装置还包括:
第三生成模块,配置为利用第二代码语言生成所述寄存器文档模板;
所述第一生成模块502,配置为利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档。
在一些实施例中,所述装置还包括:
第四生成模块,配置为利用第三代码语言生成所述寄存器代码模板;
所述第二生成模块503,配置为利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件。
在一些实施例中,所述第一生成模块502,配置为利用所述第一代码语言调用所述寄存器文档模板,并分析所述寄存器文档模板中的字段名;在所述寄存器的描述信息中找到与所述字段名关联的信息,并用所述信息对所述字段名进行赋值后生成所述描述文档。
在一些实施例中,所述第二生成模块503,配置为利用所述第一代码语言调用所述寄存器代码模板,并分析所述寄存器代码模板中的变量名;在所述寄存器的描述信息中找到与所述变量名关联的信息,并用所述信息对所述变量名进行赋值后生成所述代码文件。
在一些实施例中,所述第二生成模块503,配置为生成关联所述寄存器的,寄存器传输级RTL代码、验证代码、软件驱动代码以及验证激励代码。
在一些实施例中,所述第一生成模块502,配置为生成以下至少之一格式的描述文档:PDF文档、HTML文档、DOC文档、IP-XACT XML文档。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述的芯片寄存器设计文件的生成方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本公开实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
图6为本公开实施例提供的一种计算机设备的硬件实体示意图,如图6所示,该计算机设备600的硬件实体包括:处理器601、通信接口602和存储器603,其中:
处理器601通常控制计算机设备600的总体操作。
通信接口602可以使计算机设备通过网络与其他终端或服务器通信。
存储器603配置为存储由处理器601可执行的指令和应用,还可以缓存待处理器601以及计算机设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器601、通信接口602和存储器603之间可以通过总线604进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。此外,在本公开的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。
Claims (10)
1.一种芯片寄存器设计文件的生成方法,其特征在于,所述方法包括:
获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;
根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。
2.根据权利要求1所述的方法,其特征在于,所述获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息,包括:
利用第一代码语言加载所述描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
所述方法还包括:
利用第二代码语言生成所述寄存器文档模板;
所述根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
利用第三代码语言生成所述寄存器代码模板;
所述根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件。
4.根据权利要求2所述的方法,其特征在于,所述利用所述第一代码语言调用所述寄存器文档模板,并根据所述描述信息填充所述寄存器文档模板生成所述寄存器的描述文档,包括:
利用所述第一代码语言调用所述寄存器文档模板,并分析所述寄存器文档模板中的字段名;
在所述寄存器的描述信息中找到与所述字段名关联的信息,并用所述信息对所述字段名进行赋值后生成所述描述文档。
5.根据权利要求3所述的方法,其特征在于,所述利用所述第一代码语言调用所述寄存器代码模板,并根据所述描述信息填充所述寄存器代码模板生成所述寄存器的代码文件,包括:
利用所述第一代码语言调用所述寄存器代码模板,并分析所述寄存器代码模板中的变量名;
在所述寄存器的描述信息中找到与所述变量名关联的信息,并用所述信息对所述变量名进行赋值后生成所述代码文件。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述生成关联所述寄存器的代码文件,包括:
生成关联所述寄存器的,寄存器传输级RTL代码、验证代码、软件驱动代码以及验证激励代码。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述生成所述寄存器的描述文档,包括:
生成以下至少之一格式的描述文档:PDF文档、HTML文档、DOC文档、IP-XACT XML文档。
8.一种芯片寄存器设计文件的生成装置,其特征在于,包括:
获取模块,配置为获取寄存器的描述文件,并解析获得所述描述文件中所述寄存器的描述信息;
第一生成模块,配置为根据所述寄存器的描述信息以及预设的寄存器文档模板,生成所述寄存器的描述文档;
第二生成模块,配置为根据所述寄存器的描述信息以及预设的寄存器代码模板,生成关联所述寄存器的代码文件。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211419572.4A CN115758973A (zh) | 2022-11-14 | 2022-11-14 | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211419572.4A CN115758973A (zh) | 2022-11-14 | 2022-11-14 | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115758973A true CN115758973A (zh) | 2023-03-07 |
Family
ID=85370999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211419572.4A Pending CN115758973A (zh) | 2022-11-14 | 2022-11-14 | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115758973A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115983173A (zh) * | 2023-03-21 | 2023-04-18 | 湖北芯擎科技有限公司 | 寄存器模型生成方法、装置、计算机设备及存储介质 |
-
2022
- 2022-11-14 CN CN202211419572.4A patent/CN115758973A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115983173A (zh) * | 2023-03-21 | 2023-04-18 | 湖北芯擎科技有限公司 | 寄存器模型生成方法、装置、计算机设备及存储介质 |
CN115983173B (zh) * | 2023-03-21 | 2023-07-07 | 湖北芯擎科技有限公司 | 寄存器模型生成方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9613115B2 (en) | Generating programs based on input-output examples using converter modules | |
US7568184B1 (en) | Software documentation generator | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
US20060080603A1 (en) | Method and apparatus for utilizing an object model to manage document parts for use in an electronic document | |
CN111767057A (zh) | 一种数据处理方法及装置 | |
CN108595171B (zh) | 对象的模型生成方法、装置、设备及存储介质 | |
CN111813680B (zh) | 测试脚本的生成方法、装置、计算机设备和存储介质 | |
CN110209387B (zh) | 一种顶层hdl文件生成方法和装置、计算机可读存储介质 | |
CN110705226A (zh) | 电子表格的创建方法、装置及计算机设备 | |
CN115328569B (zh) | 处理数据冲突的方法、***、电子设备及计算机可读存储介质 | |
CN115758973A (zh) | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 | |
CN113094776B (zh) | 可视化组件模型数据构建的方法、***及电子设备 | |
CN113221506A (zh) | 一种讲义排版的方法、装置、电子设备及存储介质 | |
CN110188106B (zh) | 一种数据管理方法和装置 | |
CN117389538A (zh) | 页面组件内容开发方法、装置、设备以及存储介质 | |
CN113297856A (zh) | 文档翻译方法、装置及电子设备 | |
CN111666520A (zh) | 基于表单图像生成电子表单的方法和装置 | |
CN115640279A (zh) | 一种数据血缘关系的构建方法和装置 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN113590115B (zh) | 一种业务***代码自动生成方法及装置 | |
CN113297425B (zh) | 文档转换方法、装置、服务器及存储介质 | |
CN112667202B (zh) | Mda与bpmn相结合的软件设计方法和装置 | |
CN105630761B (zh) | 公式处理方法及装置 | |
CN114238807A (zh) | 数据可视化页面的处理方法和装置 | |
CN112748915A (zh) | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |