CN115905018A - 一种寄存器设计方法及装置、电子设备和存储介质 - Google Patents
一种寄存器设计方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115905018A CN115905018A CN202211678028.1A CN202211678028A CN115905018A CN 115905018 A CN115905018 A CN 115905018A CN 202211678028 A CN202211678028 A CN 202211678028A CN 115905018 A CN115905018 A CN 115905018A
- Authority
- CN
- China
- Prior art keywords
- register
- module
- file
- document
- error information
- 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
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种寄存器设计方法及装置、电子设备和存储介质,所述方法包括:获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。本公开实施例能够提高寄存器设计的自动化程度,从而提升寄存器设计的效率。
Description
技术领域
本公开涉及芯片开发领域,尤其涉及一种寄存器设计方法及装置、电子设备和存储介质。
背景技术
芯片的寄存器设计和验证已经实现了自动化方法,即根据统一的寄存器文档,来自动生成设计和验证的代码,以及测试序列及测试序列发生器。这极大的提高了验证人员的工作效率,同时减轻了设计人员撰写寄存器设计和验证代码的工作量,还提高了准确率。
通用验证方法学(Universal Verification Methodology,UVM)提供了成熟的寄存器验证环境的验证方法,包括验证环境的组件、内建的测试序列等可以实现对整个寄存器的健康检查。在UVM验证方法学的基础上,业界已经实现了一定程度的寄存器自动化验证,但自动化实现的程度各不相同。同时,实现寄存器验证的自动化程度相对较高,但寄存器设计相关的自动化实现相对较弱。
当芯片包含上千甚至上万个寄存器时,需要更高程度的寄存器设计和验证自动化来进一步提高验证效率。并且现有技术可验证寄存器故障较单一,效率比较低,且复用性较差。
发明内容
有鉴于此,本公开提出了一种寄存器设计方法及装置、电子设备和存储介质,提高了寄存器设计的自动化程度,从而提升了寄存器设计效率。
根据本公开的一方面,提供了一种寄存器设计方法,包括:获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;
对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;
获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;
根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。
在一种可能的实现方式中,所述错误信息包括格式错误信息和内容错误信息,所述对所述第一寄存器文档进行检查,得到错误信息,包括:
对所述第一寄存器文档进行格式检查,得到所述格式错误信息;
对所述第一寄存器文档进行内容检查,得到所述内容错误信息。
在一种可能的实现方式中,所述对所述第一寄存器文档进行格式检查,得到所述格式错误信息,包括:
检查所述第一寄存器文档中的偏移地址区域中是否存在大写字母以及所述第一寄存器文档中的域名区域中是否存在空格;
在所述偏移地址区域中存在大写字母的情况下和/或所述域名区域中存在空格的情况下,生成所述格式错误信息,所述格式错误信息用于指示出现格式错误的位置以及出现的格式错误的类型。
在一种可能的实现方式中,所述寄存器模块包括至少一个寄存器,每个寄存器包括至少一个寄存器域,每个寄存器域包括至少一个比特位,所述第一寄存器文档包括第一识别信息、第二识别信息和第三识别信息,其中,所述第一识别信息用于识别所述每个寄存器的数据宽度,所述第二识别信息用于识别所述寄存器模块中包括的寄存器的数量,所述第三识别信息用于识别所述每个寄存器中每个寄存器域的起始比特位和截止比特位;
所述对所述第一寄存器文档进行内容检查,得到所述内容错误信息,包括:
基于所述第一识别信息、所述第二识别信息和所述寄存器模块的预设数据宽度,检查所述第一寄存器文档中的地址范围是否正确;
在确定所述第一寄存器文档中的地址范围存在错误的情况下,生成所述内容错误信息,所述内容错误信息用于指示出现内容错误的位置以及出现的内容错误的类型;
和/或,
基于所述第一识别信息和所述第三识别信息,获取所述寄存器模块的数据宽度和所述寄存器模块的比特位范围是否一致;
在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成所述内容错误信息;
和/或,
基于所述第三识别信息检查所述第一寄存器文档中比特位是否连续;
在所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
在一种可能的实现方式中,所述方法还包括:
基于所述第一识别信息、所述第二识别信息和所述第三识别信息对所述第二寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位;
采用所述拆分后的各寄存器域的起始比特位和截止比特位,更新所述第二寄存器文档。
在一种可能的实现方式中,所述获取第二寄存器文档包括:
读取第一文本文档,所述第一文本文档中包括所述第二寄存器文档的存储地址和名称;
按照所述存储地址和名称获取所述第二寄存器文档;
所述根据所述第二寄存器文档生成寄存器设计代码,包括:
读取第二文本文档,所述第二文本文档中包括所述寄存器模块的硬件地址;
根据所述第二寄存器文档和所述寄存器模块的硬件地址,生成所述寄存器设计代码。
在一种可能的实现方式中,所述方法还包括:
获取第一测试用例,所述第一测试用例用于存放所述寄存器模块验证需要的测试序列以及将测试序列挂载到序列发生器上;
根据所述第一测试用例和所述第一文本文档,生成针对所述寄存器模块的第二测试用例。
在一种可能的实现方式中,所述方法还包括:
读取第三文本文档,所述第三文本文档中包括寄存器验证代码,所述寄存器验证代码用于验证所述寄存器模块;
根据所述第二测试用例和所述寄存器验证代码对寄存器进行验证。
在一种可能的实现方式中,所述方法还包括:
根据所述第三文本文档,生成寄存器模型层次化结构代码,所述寄存器模型层次化结构代码用于生成层次化寄存器模型。
根据本公开的一方面,提供了一种寄存器设计装置,包括:
第一获取模块,获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;
检测模块,对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;
第二获取模块,获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;
第一生成模块,根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。
在一种可能的实现方式中,所述错误信息包括格式错误信息和内容错误信息,所述检测模块用于:
对所述第一寄存器文档进行格式检查,得到所述格式错误信息;
对所述第一寄存器文档进行内容检查,得到所述内容错误信息。
在一种可能的实现方式中,所述对所述第一寄存器文档进行格式检查,得到所述格式错误信息,包括:
检查所述第一寄存器文档中的偏移地址区域中是否存在大写字母以及所述第一寄存器文档中的域名区域中是否存在空格;
在所述偏移地址区域中存在大写字母的情况下和/或所述域名区域中存在空格的情况下,生成所述格式错误信息,所述格式错误信息用于指示出现格式错误的位置以及出现的格式错误的类型。
在一种可能的实现方式中,所述寄存器模块包括至少一个寄存器,每个寄存器包括至少一个寄存器域,每个寄存器域包括至少一个比特位,所述第一寄存器文档包括第一识别信息、第二识别信息和第三识别信息,其中,所述第一识别信息用于识别所述每个寄存器的数据宽度,所述第二识别信息用于识别所述寄存器模块中包括的寄存器的数量,所述第三识别信息用于识别所述每个寄存器中每个寄存器域的起始比特位和截止比特位;
所述对所述第一寄存器文档进行内容检查,得到所述内容错误信息,包括:
基于所述第一识别信息、所述第二识别信息和所述寄存器模块的预设数据宽度,检查所述第一寄存器文档中的地址范围是否正确;
在确定所述第一寄存器文档中的地址范围存在错误的情况下,生成所述内容错误信息,所述内容错误信息用于指示出现内容错误的位置以及出现的内容错误的类型;
和/或,
基于所述第一识别信息和所述第三识别信息,获取所述寄存器模块的数据宽度和所述寄存器模块的比特位范围是否一致;
在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成所述内容错误信息;
和/或,
基于所述第三识别信息检查所述第一寄存器文档中比特位是否连续;
在所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
在一种可能的实现方式中,所述方法还包括:
基于所述第一识别信息、所述第二识别信息和所述第三识别信息对所述第二寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位;
采用所述拆分后的各寄存器域的起始比特位和截止比特位,更新所述第二寄存器文档。
在一种可能的实现方式中,所述第二获取模块用于:
读取第一文本文档,所述第一文本文档中包括所述第二寄存器文档的存储地址和名称;
按照所述存储地址和名称获取所述第二寄存器文档;
所述第一生成模块用于:
读取第二文本文档,所述第二文本文档中包括所述寄存器模块的硬件地址;
根据所述第二寄存器文档和所述寄存器模块的硬件地址,生成所述寄存器设计代码。
在一种可能的实现方式中,所述装置还包括:
第三获取模块,用于获取第一测试用例,所述第一测试用例用于存放所述寄存器模块验证需要的测试序列以及将测试序列挂载到序列发生器上;
第二生成模块,用于根据所述第一测试用例和所述第一文本文档,生成针对所述寄存器模块的第二测试用例。
在一种可能的实现方式中,所述装置还包括:
读取模块,用于读取第三文本文档,所述第三文本文档中包括寄存器验证代码,所述寄存器验证代码用于验证所述寄存器模块;
验证模块,用于根据所述第二测试用例和所述寄存器验证代码对寄存器进行验证。
在一种可能的实现方式中,所述装置还包括:
第三生成模块,用于根据所述第三文本文档,生成寄存器模型层次化结构代码,所述寄存器模型层次化结构代码用于生成层次化寄存器模型。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
在本公开的实施例中,首先对寄存器文档进行检查修改,然后基于修改后的寄存器文档生成寄存器设计代码和寄存器验证代码,通过寄存器文档的自动化检查修改提高了寄存器设计的自动化程度,从而提升了寄存器设计的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开实施例的寄存器设计方法的流程图。
图2示出了根据本公开实施例的错误信息示意图。
图3示出了根据本公开实施例的寄存器设计装置的框图。
图4示出了根据本公开实施例的一种电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开实施例的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在本公开实施例的描述中,需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开实施例的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本公开实施例中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开实施例中的具体含义。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
在实际使用中,当芯片的规模越大时,验证人员在后期对寄存器进行验证时,需要针对大量的寄存器文档去一一核实,这里面可能会包含一定数量的寄存器信息填写错误导致的报错问题,而且其中的有些问题还容易在验证时被忽略掉。因此在寄存器设计和验证代码的生成都是基于同一个寄存器文档的前提下,确保寄存器文档的填写准确性尤为重要。本公开实施例中,提出了一种寄存器设计方法,通过自动化检查修改寄存器文档,提高了寄存器设计和验证的自动化程度,从而提升了了寄存器设计和验证的效率。
图1示出了根据本公开实施例的寄存器设计方法的流程图。如图1所示,所述寄存器设计方法可以包括:
步骤S11,获取第一寄存器文档。
其中,所述第一寄存器文档可以用于描述寄存器模块的信息。
步骤S12,对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息。
步骤S13,获取第二寄存器文档。
其中,所述第二寄存器文档可以为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档。
步骤S14,根据所述第二寄存器文档生成寄存器设计代码。
其中,所述寄存器设计代码可以用于设计所述寄存器模块。
在一种可能的实现方式中,所述寄存器设计方法可以由电子设备执行。示例性地,本实施例中的电子设备包括但不限于台式电脑、电视机、具有大尺寸屏幕的移动设备如手机、平板电脑等其他常见的需要多个芯片级联连接来实现驱动的电子设备。示例性的,电子设备还可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、手持设备、计算设备或者车载设备等,示例性的,一些终端的举例为:智能手机或便携设备、手机(MobilePhone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(Mobile Internetdevice,MID)、可穿戴设备,虚拟现实(Virtual Reality,VR)设备、增强现实(Augmentedreality,AR)设备、工业控制(Industrial Control)中的无线终端、智能电网(Smart Grid)中的无线终端等。例如,服务器可以是本地服务器,也可以是云服务器。
在步骤S11中,电子设备可以获取第一寄存器文档。
寄存器文档可以用于描述寄存器模块的信息,如寄存器模块、寄存器模块中包括的寄存器以及寄存器模块或寄存器中包括的寄存器域等的地址、名称、读写权限、复位值等信息。在实施中,无论是生成寄存器的设计代码还是验证代码都需要使用寄存器文档,提前将寄存器模块的信息填写到Excel等类型的表格中得到寄存器文档,可以大大减少使用者的工作量。为了减少因寄存器文档填写错误导致的报错问题,在本申请实施例中,首先对寄存器文档进行检查,以提高寄存器设计效率,步骤S11中电子设备获取的第一寄存器文档可以表示待进行检查的寄存器文档,其描述的寄存器模块的信息需要进行检查。
在一个示例中,以Excel类型的表格作为寄存器文档为例,一个寄存器文档可以用来描述一个芯片,寄存器文档中可以包括多个表(sheet),芯片中包括可以包括多个功能模块,寄存器文档中的一个表对应芯片中的一个功能模块,也就是说,将芯片中相互配合实现某种功能的寄存器的信息记录在同一个表中。为了方便设计人员填写,当几个连续地址的寄存器功能相同时,可以将这几个寄存器放在一起填写,组成寄存器模块。也就是说,寄存器文档中的一个表用于描述芯片中可以实现某种功能的至少一个寄存器模块的信息,且每个寄存器模块包括至少一个寄存器,每个寄存器包括至少一个寄存器域,每个寄存器域包括至少一个比特位。因此,寄存器文档的一个表中包括至少一个寄存器模块的信息,每个寄存器模块的信息可以包括至少一个寄存器的信息,每个寄存器的信息包括至少一个寄存器域的信息。此外,由于连续地址的功能相同的寄存器组成了寄存器模块,而一个寄存器包括至少一个寄存器域,因此每个寄存器模块中包括至少一个寄存器域,并且此时的寄存器域的数据宽度是可以超越寄存器的数据宽度的。在本申请实施例中,第一寄存器文档可以是技术人员预先按照一定的配置格式建立表格并向其中填写寄存器信息后得到的,第一寄存器文档中任意一个表的配置格式如表一所示。
表一
如表一所示,Slave_ID表示寄存器模块的基地址。Offset表示寄存器模块的偏移地址。寄存器模块的基地址和寄存器模块的偏移地址共同指示了寄存器模块的地址。Byte列表示寄存器模块包含的寄存器数量,例如,Byte为1表示寄存器模块中包含一个寄存器,Byte为3表示寄存器模块中包含三个寄存器。一个寄存器模块对应至少一个偏移地址。一个寄存器模块的偏移地址的数量与该寄存器模块中包括的寄存器的数量相同。例如Byte为1表示寄存器模块的偏移地址为“0x2a”,Byte为3的寄存器模块的偏移地址为“0x27”、“0x28”和“0x29”。基于寄存器模块的基地址和寄存器模块的任意一个偏移地址可以确定唯一一个寄存器。
需要说明的是,表一所示的第二列的列名是可以改变的,通过该列的列名可以识别寄存器模块中包括的寄存器的数据宽度。例如:表一所示的第二列的列名Byte可以替换为Word。在第二列的列名为Byte的情况下,取值为3表示这个寄存器模块是由三个8位寄存器组成的;在第二列的列名为Word的情况下,取值为3表示这个寄存器模块是由三个32位寄存器组成的。寄存器偏移地址的取值也与寄存器的数据宽度(即表一所示的第二列的列名)有关。举例来说,对于8位的寄存器(即第二列的列名为Byte),地址的偏移相隔1字节;对于32位的寄存器(即第二列的列名为Word),地址的偏移相隔4字节。
考虑到一个寄存器可以包括至少一个寄存器域。表一所示的Bit可以表示一个寄存器的每个寄存器域在寄存器中的起始比特位和截止比特位。在实施中,为了设计人员的填写方便,对于连续地址功能相同的寄存器域可以放在一起填写,例如表一中[23:20]、[19:0]表示寄存器模块包含的三个寄存器域按照功能划分为了两个连续的寄存器域,如果严格按照域的宽度不超过寄存器本身数据宽度的规则填写的话,表一中的[23:20]、[19:0]应该在[23:0]范围内划分为三个寄存器域。
如表一所示,FieldName表示寄存器域的名字。Tpye表示寄存器域的属性,例如表中RW(Read and Write)表示可写可读。常见的寄存器域的属性还包括:RO(Read Only,只读)、RC(Read Clear,读取时清零)、WC(Write Clear,写入时清零)、W1C(Write 1Clear,写1清0)、W0C(Write 0Clear,写0清0)以及WO(Write Only,只写)等。
另外,表一中的RegName表示寄存器的名称,BitValue表示寄存器的复位值(取值可以根据需要进行设置),Description表示对寄存器进行的描述、添加的注释或者注意事项等。
在本步骤中,通过获取提前编写的第一寄存器文档,大大减少了使用人员的工作量。
在步骤S12中,对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息。
在本申请实施例中,错误信息可以包括格式错误信息和内容错误信息。在一种可能的实现方式中,步骤S12可以包括:对所述第一寄存器文档进行格式检查,得到所述格式错误信息;对所述第一寄存器文档进行内容检查,得到所述内容错误信息。
其中,格式错误信息可以用于指示所述第一寄存器文档中出现格式错误的位置以及出现的格式错误的类型。在一个示例中,所述对所述第一寄存器文档进行格式检查,得到所述格式错误信息可以包括:检查所述第一寄存器文档中的偏移地址区域中是否存在大写字母以及所述第一寄存器文档中的域名区域中是否存在空格;在所述偏移地址区域中存在大写字母的情况下和/或所述域名区域中存在空格的情况下,生成所述格式错误信息。
其中,偏移地址区域表示第一寄存器文档中寄存器模块的偏移地址所在的区域,例如表一所示的Offset列所在的区域。偏移地址区域中内容通常会以类似0x03、0x1c~0x1e这种方式表示。考虑到在偏移地址区域中,内容不能以大写的0X这种不合法的方式出现。因此,电子设备可以检查第一寄存器文档中的偏移地址区域中是否存在0X,并在偏移地址区域中出现0X的情况下,生成错误信息,此时错误信息用于指示第一出现0X的位置,以及指示出现的错误的类型为偏移地址中存在大写字母。
以第一寄存器文档为Excel类型的表格为例。在一个示例中,错误信息指示的出现格式错误的位置可以具体到Excel文档中第几个表中的寄存器功能模块出错,并且在指示出具体的表后可以指示出所在的表中第几行出现的错误,即可以指示出具体的寄存器模块中的哪一个寄存器出现的错误。在一个示例中,错误信息指示的出现错误的类型具体可以指示出错误所在的表中哪一列出现的错误,通过这种方式可以指示出现的错误的类型。例如,在表一中,如果Offset列的0x2a填写为0X2a,则可以发出用于提示Offset列出现问题的错误信息。
域名区域表示第一寄存器文档中寄存器域的名字所在的区域,例如表一所示的FieldName列所在的区域。域名区域中通常会以类似CFG_VPLL_FBDIV_FRAC这种方式表示。考虑到在域名区域中,内容不能存在空格。因此,电子设备可以检查第一寄存器文档中的域名区域中是否存在空格,在所述域名区域中出现空格的情况下,生成错误信息,此时错误信息用于指示第一寄存器文档中出现空格的位置,以及指示出现的错误的类型为域名区域中存在空格。
以第一寄存器文档为Excel类型的表格为例。在一个示例中,错误信息指示的出现的错误的位置具体可以指示到第几个表中,即哪个寄存器功能模块中出错,并且在指示出具体的表后可以指示出所在的表中第几行出现的错误,即可以指示出具体的寄存器模块中的哪一个寄存器出现的错误。在一个示例中,错误信息指示的出现错误的类型具体可以指示出错误所在的表中哪一列出现的错误,通过这种方式可以指示出现的错误的类型。例如,在表一中,如果FieldName列中的CFG_VPLL_FBDIV_FRAC填写为CFG_VPLL FBDIV_FRAC,则可以发出错误信息,提示FieldName列出现了问题。
在本申请实施例中,第一寄存器文档可以包括第一识别信息、第二识别信息和第三识别信息。第一识别信息可以用于识别寄存器模块中每个寄存器的数据宽度。举例来说,第一识别信息表示第一寄存器文档中的Byte/Word列的列名信息,即通过识别Byte/Word列的列名识别寄存器的数据宽度。例如,当列名是Byte时,通过第一识别信息可以识别,所述寄存器的数据宽度是8位(bit,也可以称为比特位)的,当列名是Word时,通过第一识别信息可以识别,所述寄存器的数据宽度是32位的。
第二识别信息可以用于识别寄存器模块中包括的寄存器的数量。举例来说,第二识别信息表示第一寄存器文档中的Byte/Word列填写的内容,即通过识别Byte/Word列填写的内容识别寄存器模块中包括寄存器的数量。例如,当表中Byte/Word列填写的内容是3时,通过第二识别信息可以识别,所述寄存器模块中包含3个寄存器,当表中Byte/Word列填写的内容是1时,通过第二识别信息可以识别,所述寄存器模块中包含1个寄存器。
第三识别信息可以用于识别寄存器模块中每个寄存器中每个寄存器域的起始比特位和截止比特位。举例来说,第三识别信息表示第一寄存器文档中的Bit列填写的内容,即通过识别Bit列填写的内容识别对应寄存器中每个寄存器域的起始比特位和截止比特位。例如,当表中Bit列填写的内容是[7:0]时,通过第三识别信息可以识别,所述寄存器域的起始比特位是7,截止比特位是0,当表中Bit列填写的内容是[23:20]、[19:0]时,通过第三识别信息可以识别,所述寄存器域的起始比特位为23、19,截止比特位为20、0。
内容错误信息可以用于指示出现内容错误的位置以及出现的内容错误的类型。在一种可能的实现方式中,对所述第一寄存器文档进行内容检查,得到所述内容错误信息可以包括:基于所述第一识别信息、所述第二识别信息和所述寄存器模块的预设数据宽度,检查所述第一寄存器文档中的地址范围是否正确;在确定所述第一寄存器文档中的地址范围存在错误的情况下,生成所述内容错误信息。
在一种可能的实现方式中,检查所述第一寄存器文档中的地址范围错误的情况下,生成错误信息,所述错误信息用于指示出现错误的位置以及出现错误的类型。
在一个示例中,一片寄存器的预设数据宽度是128位,根据第一识别信息判断寄存器的数据宽度是8位,那么对应的地址范围应该是16,如果不正确就会生成错误信息。
在一种可能的实现方式中,对所述第一寄存器文档进行内容检查,得到所述内容错误信息可以包括:基于所述第一识别信息和所述第三识别信息,获取所述寄存器模块的数据宽度和所述寄存器模块的比特位范围是否一致;在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成所述内容错误信息。
在一种可能的实现方式中,基于所述第一识别信息和所述第三识别信息,在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成错误信息。
在一个示例中,Byte/Word列的列名为Byte,Bit列填写的内容是[6:0],则通过第一识别信息得到寄存器的数据宽度是8位,通过第三识别信息得到该寄存器的比特位范围只有7位,与数据宽度不一致,生成错误信息。
可以理解的是,可以基于所述第一识别信息、第二识别信息和第三识别信息,在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成错误信息。
在一个示例中,Byte/Word列的列名为Byte,Byte/Word列中填写的内容是3,Bit列中填写的内容是[22:0],则通过第一识别信息得到寄存器的数据宽度是8位,通过第二识别信息得到所述寄存器模块包含的寄存器数量是3,进一步的得到所述寄存器模块的数据宽度应为24位,通过第三识别信息得到所述寄存器模块的比特位范围是23位,与数据宽度不一致,生成错误信息。
在一种可能的实现方式中,对所述第一寄存器文档进行内容检查,得到所述内容错误信息可以包括:基于所述第三识别信息检查所述第一寄存器文档中比特位是否连续;在所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
在一种可能的实现方式中,基于所述第三识别信息检查所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
在一个示例中,Bit列中填写的内容为[7:7]和[5:0],则通过第三识别信息得到两个域的截止比特位和起始比特位,即第一个寄存器域的尾和第二个寄存器域的头,即7和5,进一步判断两个域的比特位不连续,生成错误信息。
在一个示例中,Bit列中填写的内容为[23:20]和[18:0],则通过第三识别信息得到寄存器模块的两个域的截止比特位和起始比特位,即20和18,进一步判断两个域的比特位不连续,生成错误信息。
图2示出了根据本公开实施例的错误信息示意图,如图2所述,在一种可能的实现方式中,上述所有错误信息可以通过日志(log)文件的形式显示,错误信息以日志形式精准显示出错误出现的所在具体表,以及在表格中具体的哪一行哪一列。通过这种方式准确的定位到出现错误的具体寄存器功能模块,寄存器模块,寄存器。并通过这种方式显示出现的具体错误。例如,图2第一行表示在表3中出现了错误,错误出现的位置是第61行Bit列。通过这条信息,可以通过表直接看出具体哪个寄存器出现的问题。
可以理解的是,通过检查第一寄存器文档,获取第一寄存器文档的错误信息可以让验证人员在后期核对寄存器文档时减少工作量,并且通过自动化的方式可以将常见的因人为原因导致的寄存器文档填写错误检查出来,提高了寄存器文档填写的准确性。
在步骤S13中,电子设备可以获取第二寄存器文档。其中,第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档。
在获得第一寄存器文档和错误信息后,本领域技术人员可以根据错误信息指示出的具体寄存器的具体错误对第一寄存器文档进行修改,得到修改后的寄存器文档即第二寄存器文档。
在实际工作中,设计人员在填写寄存器文档时,会将几个连续地址、功能相同的寄存器一起填写,这样就会造成寄存器的域的填写超越寄存器本身数据宽度的现象,即在寄存器文档的Bit列的填写内容中出现超越寄存器本身数据宽度的值,因此需要通过电子设备将这种情况下的寄存器域进行自动拆分。
在一种可能的实现方式中,在设计人员根据错误信息修改完第一寄存器文档后,可以对其进行寄存器域的拆分,方法包括基于所述第一识别信息、所述第二识别信息和所述第三识别信息对所述第二寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位;采用所述拆分后的各寄存器域的起始比特位和截止比特位,更新所述第二寄存器文档。
在一个示例中,首先获取寄存器文档中的第二识别信息,判断第二识别信息是否大于1,如果第二识别信息大于1则可认为对应的寄存器模块出现了域值超越寄存器本身的数据宽度,需要对该寄存器模块的第三识别信息进行拆分处理。
例如,识别寄存器文档中的Byte/Word列的内容时,其中填写的内容为3,则可以认为该寄存器模块包含多个寄存器,域值超越了寄存器本身的数据宽度,需要对该寄存器模块的Bit列填写的内容进行拆分。
在一种可能的实现方式中,对寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位,更新第三识别信息,可以根据第一识别信息、第二识别信息和第三识别信息对寄存器域进行计算以得到拆分后的寄存器域。
在一个示例中,电子设备可以先根据第一识别信息确定对应寄存器模块的数据宽度,之后对第三识别信息进行从上到下的识别,自动计算需要进行拆分的部分和拆分后的域值,更新第三识别信息。
需要说明的是,所述电子设备可以对单个域的寄存器模块进行拆分,例如,对如下寄存器模块进行拆分(Byte/Word列列名为Byte,Byte列的内容为80,Bit列的内容为[639:0]),则电子设备根据Byte/Word列的内容可以得到对应寄存器模块包含的寄存器数量是80,因为数量大于1,所以需要对该寄存器模块进行拆分,根据Byte/Word列的列名信息为Byte可以得到该寄存器模块的数据宽度是8位的,对Bit列进行从上到下的识别,获得新的起始比特位和截止比特位,即需要填入80个[7:0],然后将这80个新的寄存器域代替原来的寄存器域。到此为止,实现了单个域的拆分。
需要说明的是,所述电子设备还可以对多个域的寄存器模块进行拆分,例如,对如下寄存器模块进行拆分(Byte/Word列列名为Byte,Byte列的内容为3,Bit列的内容为[23:20]、[19:0]),则电子设备根据Byte/Word列的内容可以得到对应寄存器模块包含的寄存器数量是3,因为数量大于1,所以需要对该寄存器模块进行拆分,根据Byte/Word列的列名信息为Byte可以得到该寄存器模块的数据宽度是8位的,对Bit列进行从上到下的识别,获得新的起始比特位和截止比特位,即[7:4]、[3:0]、[7:0]、[7:0],将这4个新的寄存器域代替原来的寄存器域。到此为止,实现了多个域的拆分。
在步骤S14中,电子设备可以根据所述第二寄存器文档生成寄存器设计代码。其中,寄存器设计代码可以用于设计所述寄存器模块。
在本公开的实施例中,首先对寄存器文档进行检查修改,然后基于修改后的寄存器文档生成寄存器设计代码,通过寄存器文档的自动化检查修改提高了寄存器设计的自动化程度,从而提升了寄存器设计效率。
为了提高效率,在本申请实施例中提供两个文本文档即第一文本文档和第二文本文档,其中,第一文本文档中可以包括第二寄存器文档的存储地址和名称,第二文本文档中可以包括寄存器模块的硬件地址。在一个示例中,第一文本文档和第二文本文档可以为txt格式的文档,也可以为其他格式的文档,对此本申请实施例不做限制。可以理解的是,在通过步骤S11和步骤S12获得第二寄存器文档后,可以根据第二寄存器文档的存储地址和名称创建上述第一文本文档,以及根据寄存器模块的硬件地址创建第二文本文档。
考虑到电子设备生成寄存器设计代码需要的文件包括第二寄存器文档和寄存器模块的硬件路径。因此,在一种可能的实现方式中,步骤S13包括:读取第一文本文档;按照所述存储地址和名称获取所述第二寄存器文档。步骤S14可以包括读取第二文本文档;根据所述第二寄存器文档和所述寄存器模块的硬件地址,生成所述寄存器设计代码。
在本申请实施例中,在电子设备生成寄存器设计代码时,通过读取上述第一文本文档和第二文本文档来快速准确地寻找第二寄存器文档和寄存器模块的硬件路径。
在一个示例中,电子设备生成寄存器设计代码时,可以读取第一文本文档中存放的信息,即文件路径和文件名,例如,电子设备根据需要通过第一文本文档获取第二寄存器文档的文件路径和文件名,进而读取到第二寄存器文档。
在一个示例中,电子设备生成寄存器设计代码时,可以读取第二文本文档中存放的信息,进而读取到寄存器模块的硬件路径。
本申请公开了一种从第一文本文档和第二文本文档获取生成寄存器设计代码需要的文件,进而自动生成设计代码。这样当第二寄存器文档和/或寄存器模块的硬件地址改动时,只需要修改第一文本文档和第二文本文档即可,进一步提高了复用率,使其可以在不同的项目上移植,减少了技术人员的工作量。
在对寄存器进行自动化验证时,除了需要寄存器的验证代码还需要每个寄存器模块的测试用例,在实际工作时,人工编写每个寄存器模块的测试用例浪费人力,且容易出现错误,为了提高验证效率,所述方法还包括:获取第一测试用例;根据所述第一测试用例和所述第一文本文档,生成针对所述寄存器模块的第二测试用例。
其中,所述第一测试用例用于存放所述寄存器模块验证需要的测试序列以及将测试序列挂载到序列发生器上。所述第一测试用例可以由使用人员根据一个寄存器模块提前编写。其中,第一测试用例(case)可以包括寄存器模块验证期间需要用到的测试序列(sequence),将测试序列挂载到序列发生器(sequencer)上,和驱动(driver)针对不同寄存器位宽对总线操纵的位宽。
在一种可能的实现方式中,所述方法还包括:读取第三文本文档,所述第三文本文档中包括寄存器验证代码,所述寄存器验证代码用于验证所述寄存器模块;根据所述第二测试用例和所述寄存器验证代码对寄存器进行验证。
在一种可能的实现方式中,验证过程支持对一个寄存器模块,其寄存器内部分块,且分配在不同的硬件路径下的自动化验证。例如,一个寄存器模块包含4部分,这4部分有不同的硬件路径,验证代码生成脚本会将这种情况下的寄存器模块的硬件路径自动根据对应部分进行划分,然后进行相应的前后门遍历访问。其中,因为是一个寄存器模块,所以前门访问不需要考虑硬件路径不同,但在进行后门访问的时候需要按照对应的硬件路径,针对该情况,所述验证代码生产脚本支持根据第三文本文档自动生成对应验证脚本,且遍历访问路径。
第三文本文档的格式可以参照第一文本文档和第二文本文档,这里不再赘述。第三文本文档的生成方式可以参照相关技术,这里不再赘述。
在一种可能的实现方式中,通过读取第一文本文档得到寄存器描述文档,根据对寄存器描述文档进行扫描,自动检测到有效的寄存器模块。
在检测到有效的寄存器模块和寄存器功能模块后,针对不同的寄存器功能模块,替换第一测试用例中的信息,从而实现测试用例与不同寄存器功能模块的对应。
在一种可能的实现方式中,不同的寄存器功能模块的位宽是不一样的,所以电子设备可以根据不同的寄存器位宽生成对应的测试用例,以此控制驱动操纵总线访问寄存器的位宽对应。
在一个示例中,电子设备可以一次性直接生成所有寄存器功能模块的测试用例,自动为生成的测试用例进行连续编号,例如:001、002……,并且将位宽和模块名字一起编写到测试用例的名字中,方便使用人员理解。
根据本公开的实施例,可以自动生成第二测试用例,极大的提高了程序的复用率,当项目需要对测试用例的内容进行修改时,只需要对第一测试用例进行修改,通过电子设备实时更新其它的测试用例,不需要手动修改大量的内容,极大的提高了验证人员的工作效率。
在一种可能的实现方式中,所述方法还可以包括:根据所述第三文本文档,生成寄存器模型层次化结构代码,所述寄存器模型层次化结构代码用于生成层次化寄存器模型。
在一种可能的实现方式中,电子设备可以根据第三文本文档得到寄存器描述文档和寄存器的硬件地址,据此生成寄存器的层次化结构模型。
根据本公开的实施例,可以自动生成层次化的结构模型,在寄存器的验证过程中,减少了验证人员的操作,提高了效率。
本申请公开了一种寄存器设计方法,先获取使用人员提前编写完成的第一寄存器文档,然后对其进行错误检查并输出错误信息,再获取基于第一寄存器文档和错误信息修改过的第二寄存器文档,基于第二寄存器文档生成寄存器设计代码、各寄存器模块对应的测试用例。
根据本公开的实施例,提高了寄存器设计和验证的自动化程度,进一步提高验证效率。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了一种寄存器设计装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种寄存器设计方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图3示出了根据本公开实施例的寄存器设计装置的框图。如图3所示,所述装置300可以包括:
第一获取模块301,获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;
检测模块302,对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;
第二获取模块303,获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;
第一生成模块304,根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。
在一种可能的实现方式中,所述错误信息包括格式错误信息和内容错误信息,所述检测模块用于:
对所述第一寄存器文档进行格式检查,得到所述格式错误信息;
对所述第一寄存器文档进行内容检查,得到所述内容错误信息。
在一种可能的实现方式中,所述对所述第一寄存器文档进行格式检查,得到所述格式错误信息,包括:
检查所述第一寄存器文档中的偏移地址区域中是否存在大写字母以及所述第一寄存器文档中的域名区域中是否存在空格;
在所述偏移地址区域中存在大写字母的情况下和/或所述域名区域中存在空格的情况下,生成所述格式错误信息,所述格式错误信息用于指示出现格式错误的位置以及出现的格式错误的类型。
在一种可能的实现方式中,所述寄存器模块包括至少一个寄存器,每个寄存器包括至少一个寄存器域,每个寄存器域包括至少一个比特位,所述第一寄存器文档包括第一识别信息、第二识别信息和第三识别信息,其中,所述第一识别信息用于识别所述每个寄存器的数据宽度,所述第二识别信息用于识别所述寄存器模块中包括的寄存器的数量,所述第三识别信息用于识别所述每个寄存器中每个寄存器域的起始比特位和截止比特位;
所述对所述第一寄存器文档进行内容检查,得到所述内容错误信息,包括:
基于所述第一识别信息、所述第二识别信息和所述寄存器模块的预设数据宽度,检查所述第一寄存器文档中的地址范围是否正确;
在确定所述第一寄存器文档中的地址范围存在错误的情况下,生成所述内容错误信息,所述内容错误信息用于指示出现内容错误的位置以及出现的内容错误的类型;
和/或,
基于所述第一识别信息和所述第三识别信息,获取所述寄存器模块的数据宽度和所述寄存器模块的比特位范围是否一致;
在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成所述内容错误信息;
和/或,
基于所述第三识别信息检查所述第一寄存器文档中比特位是否连续;
在所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
在一种可能的实现方式中,所述方法还包括:
基于所述第一识别信息、所述第二识别信息和所述第三识别信息对所述第二寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位;
采用所述拆分后的各寄存器域的起始比特位和截止比特位,更新所述第二寄存器文档。
在一种可能的实现方式中,所述第二获取模块用于:
读取第一文本文档,所述第一文本文档中包括所述第二寄存器文档的存储地址和名称;
按照所述存储地址和名称获取所述第二寄存器文档;
所述第一生成模块用于:
读取第二文本文档,所述第二文本文档中包括所述寄存器模块的硬件地址;
根据所述第二寄存器文档和所述寄存器模块的硬件地址,生成所述寄存器设计代码。
在一种可能的实现方式中,所述装置还包括:
第三获取模块,用于获取第一测试用例,所述第一测试用例用于存放所述寄存器模块验证需要的测试序列以及将测试序列挂载到序列发生器上;
第二生成模块,用于根据所述第一测试用例和所述第一文本文档,生成针对所述寄存器模块的第二测试用例。
在一种可能的实现方式中,所述装置还包括:
读取模块,用于读取第三文本文档,所述第三文本文档中包括寄存器验证代码,所述寄存器验证代码用于验证所述寄存器模块;
验证模块,用于根据所述第二测试用例和所述寄存器验证代码对寄存器进行验证。
在一种可能的实现方式中,所述装置还包括:
第三生成模块,用于根据所述第三文本文档,生成寄存器模型层次化结构代码,所述寄存器模型层次化结构代码用于生成层次化寄存器模型。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
图4示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图4,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
以上所述仅是本发明的示范性实施方式,而非用于限制本发明的保护范围,本发明的保护范围由所附的权利要求确定。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
应当说明的是,在本文中,所含术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种寄存器设计方法,其特征在于,所述方法包括:
获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;
对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;
获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;
根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。
2.根据权利要求1所述的方法,其特征在于,所述错误信息包括格式错误信息和内容错误信息,所述对所述第一寄存器文档进行检查,得到错误信息,包括:
对所述第一寄存器文档进行格式检查,得到所述格式错误信息;
对所述第一寄存器文档进行内容检查,得到所述内容错误信息。
3.根据权利要求2所述的方法,其特征在于,所述对所述第一寄存器文档进行格式检查,得到所述格式错误信息,包括:
检查所述第一寄存器文档中的偏移地址区域中是否存在大写字母以及所述第一寄存器文档中的域名区域中是否存在空格;
在所述偏移地址区域中存在大写字母的情况下和/或所述域名区域中存在空格的情况下,生成所述格式错误信息,所述格式错误信息用于指示出现格式错误的位置以及出现的格式错误的类型。
4.根据权利要求2所述的方法,其特征在于,所述寄存器模块包括至少一个寄存器,每个寄存器包括至少一个寄存器域,每个寄存器域包括至少一个比特位,所述第一寄存器文档包括第一识别信息、第二识别信息和第三识别信息,其中,所述第一识别信息用于识别所述每个寄存器的数据宽度,所述第二识别信息用于识别所述寄存器模块中包括的寄存器的数量,所述第三识别信息用于识别所述每个寄存器中每个寄存器域的起始比特位和截止比特位;
所述对所述第一寄存器文档进行内容检查,得到所述内容错误信息,包括:
基于所述第一识别信息、所述第二识别信息和所述寄存器模块的预设数据宽度,检查所述第一寄存器文档中的地址范围是否正确;
在确定所述第一寄存器文档中的地址范围存在错误的情况下,生成所述内容错误信息,所述内容错误信息用于指示出现内容错误的位置以及出现的内容错误的类型;
和/或,
基于所述第一识别信息和所述第三识别信息,获取所述寄存器模块的数据宽度和所述寄存器模块的比特位范围是否一致;
在所述寄存器模块的数据宽度和所述寄存器模块的比特位范围不一致的情况下,生成所述内容错误信息;
和/或,
基于所述第三识别信息检查所述第一寄存器文档中比特位是否连续;
在所述第一寄存器文档中比特位不连续的情况下,生成所述内容错误信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于所述第一识别信息、所述第二识别信息和所述第三识别信息对所述第二寄存器文档中的各寄存器域进行拆分,得到拆分后的各寄存器域的起始比特位和截止比特位;
采用所述拆分后的各寄存器域的起始比特位和截止比特位,更新所述第二寄存器文档。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述获取第二寄存器文档5包括:
读取第一文本文档,所述第一文本文档中包括所述第二寄存器文档的存储地址和名称;
按照所述存储地址和名称获取所述第二寄存器文档;
所述根据所述第二寄存器文档生成寄存器设计代码,包括:
0读取第二文本文档,所述第二文本文档中包括所述寄存器模块的硬件地址;
根据所述第二寄存器文档和所述寄存器模块的硬件地址,生成所述寄存器设计代码。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取第一测试用例,所述第一测试用例用于存放所述寄存器模块验证需要的测试序列以及将测试序列挂载到序列发生器上;
5根据所述第一测试用例和所述第一文本文档,生成针对所述寄存器模块的第二测试用例。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
读取第三文本文档,所述第三文本文档中包括寄存器验证代码,所述寄存器验证代码用于验证所述寄存器模块;
0根据所述第二测试用例和所述寄存器验证代码对寄存器进行验证。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
根据所述第三文本文档,生成寄存器模型层次化结构代码,所述寄存器模型层次化结构代码用于生成层次化寄存器模型。
10.一种寄存器设计装置,其特征在于,包括:
5第一获取模块,获取第一寄存器文档,所述第一寄存器文档用于描述寄存器模块的信息;
检测模块,对所述第一寄存器文档进行检查,得到所述第一寄存器文档的错误信息;
第二获取模块,获取第二寄存器文档,所述第二寄存器文档为基于所述错误信息对所述第一寄存器文档进行修改后得到的寄存器文档;
0第一生成模块,根据所述第二寄存器文档生成寄存器设计代码,所述寄存器设计代码用于设计所述寄存器模块。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
5其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至9中任意一项所述的方法。
12.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,
所述计算机程序指令被处理器执行时实现权利要求1至9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211678028.1A CN115905018A (zh) | 2022-12-26 | 2022-12-26 | 一种寄存器设计方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211678028.1A CN115905018A (zh) | 2022-12-26 | 2022-12-26 | 一种寄存器设计方法及装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115905018A true CN115905018A (zh) | 2023-04-04 |
Family
ID=86474615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211678028.1A Pending CN115905018A (zh) | 2022-12-26 | 2022-12-26 | 一种寄存器设计方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905018A (zh) |
-
2022
- 2022-12-26 CN CN202211678028.1A patent/CN115905018A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8156559B2 (en) | Systematic approach to uncover GUI logic flaws | |
CN109947637B (zh) | 网页兼容性自动化测试方法、装置、设备及介质 | |
CN111985202A (zh) | 基于模板生成pdf电子签章的方法、设备及存储介质 | |
CN111563218B (zh) | 一种页面的修复方法及装置 | |
KR100952882B1 (ko) | 결합 체크 지원 장치 및 결합 체크 지원 프로그램을 기록한컴퓨터로 판독가능한 기록 매체 | |
EP4184313A1 (en) | Demand conformity analysis method and system, and electronic device and storage medium | |
JP2012150535A (ja) | プログラム検証方法及び検証プログラム | |
CN114090671A (zh) | 数据导入方法、装置、电子设备及存储介质 | |
CN108763341B (zh) | 电子装置、自动化建表方法及存储介质 | |
US20070094427A1 (en) | System and method for verifying the coupled locations of computer devices | |
EP1297457A2 (en) | Accessing state information in a hardware/software co-simulation | |
CN112363935A (zh) | 数据联调方法、装置、电子设备及存储介质 | |
US8140489B2 (en) | System and method for analyzing content on a web page using an embedded filter | |
US20080147652A1 (en) | Physical address verification within electronic documents | |
US20100269080A1 (en) | Computer-aided design system and method for simulating pcb specifications | |
CN115905018A (zh) | 一种寄存器设计方法及装置、电子设备和存储介质 | |
JP2005276040A (ja) | デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム | |
US9824175B1 (en) | Method and system of evaluation of validity of a refinement rule for a hardware emulation | |
CN114610305A (zh) | 隐形网页资源的开发方法、装置、电子设备及介质 | |
US20040015792A1 (en) | Method for creating standard VHDL test environments | |
CN113761873A (zh) | Pdf解析方法、装置、电子设备及可存储介质 | |
CN113010129A (zh) | 虚拟演播厅全流程多终端板书提取方法和装置 | |
CN114253642A (zh) | 系统信息处理方法、装置、电子设备及介质 | |
CN113704650A (zh) | 信息展示方法、装置、系统、设备及存储介质 | |
CN111694700A (zh) | 一种监测dcpmm内存性能的方法、装置、终端及存储介质 |
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 |