一种基于寄存器流程工具的设计验证芯片方法与流程

专利2022-06-29  68


本发明涉及芯片开发技术领域,具体来说,涉及一种基于寄存器流程工具的设计验证芯片方法。



背景技术:

芯片设计开发过程中,设计部门和验证部门甚至系统软件部门都各自需要与寄存器相关的代码。设计需要的寄存器rtl(register-transfer-level,寄存器传输电平)文件将和其他硬件代码一起被综合成网表和流片的电路。验证所需要的代码主要是寄存器模型和一些芯片配置文件等,包括基于sv(systemverilog,一种广泛使用的芯片验证语言)叠加uvm(universalverificationmethodology,通用验证方法学)方法学的寄存器模型,以及相应的各种配置文件和头文件模板。软件所需要的寄存器相关代码是基于c/c 语言的寄存器模型,以及相应的各种配置文件和头文件模板。此外,还需要给芯片使用者发布一套完整的寄存器文档。所以行业里非常需要有寄存器流程工具来代替人力生成这些代码和文档。而寄存器流程工具就应运而生了。

目前,芯片开发的各大eda工具厂商,特别是cadence和synopsis和mentor都有各自的寄存器流程工具。cadence的工具是ireggen、mentor的是certe、synopsis的是ralgen,都能自动生成sv叠加uvm方法学的寄存器模型和每个寄存器块的c的头文件。

这些商用的工具都有一些不足。首先,他们的流程工具都是只能生成基于sv叠加uvm方法学的寄存器模型,不能提供基于c/c 语言的寄存器模型和配置模板。其次,他们生成的寄存器模型不能提供中断控制器,用户芯片开发需要手动写中断控制器,效率低而且容易出错导致芯片开发失败。还有,现有的寄存器模型都是一个个分离的寄存器块模型和c&sv的头文件,不包含寄存器块的集成部分模型,用户需要手写集成部分模型代码。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的问题,本发明提出一种基于寄存器流程工具的设计验证芯片方法,能为用户提供sv&uvm寄存器块模型和c/c 寄存器块模型及寄存器配置模板,并将中断控制器集成到寄存器流程中,以克服现有相关技术所存在的上述技术问题。

为此,本发明采用的具体技术方案如下:

一种基于寄存器流程工具的设计验证芯片方法,该基于寄存器流程工具的设计验证芯片方法包括以下步骤:

获取芯片寄存器和中断的设计验证需求;

将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中,生成包含中断控制器的寄存器文件;

运行所述寄存器流程工具;

所述寄存器流程工具自动根据xml集中信息将所述中断控制器和寄存器一起集成到芯片寄存器文件中;

所述寄存器流程工具配置有寄存器块集成接口;

将芯片寄存器集成信息填入寄存器流程工具的入口xml集中,生成验证及软件开发所需的寄存器模型和寄存器配置模板。

进一步的,所述寄存器中每个寄存器块占用一个xml文件,一个或多个xml文件一起构成开发对象完整的xml集;

所述寄存器块内包含该寄存器块的属性、寄存器定义及中断的定义。

进一步的,将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中包括以下步骤:

在xml集中定义一个中断块;

所述中断块中包含中断块名称、中断控制器寄存器组的起始偏移地址以及各中断域名等;

其中,所述中断块名称为输出信号名称,所述中断域名为中断源信号名。

进一步的,将芯片寄存器集成信息填入寄存器流程工具的入口xml集中包括以下步骤:

在寄存器块里定义一个寄存器子块;

所述寄存器子块中包含寄存器名称、寄存器通道属性、寄存器偏移地址、寄存器描述以及寄存器域等;

所述寄存器域内包含该域的属性;

所述寄存器域的名称为寄存器内一个或多个比特组成的功能名称。

进一步的,每个所述中断控制器包括控制所述中断控制器寄存器组的七个寄存器及中断信号控制电路;

其中,七个寄存器分别为:xxx-raw寄存器、xxx-stat寄存器、xxx-mask寄存器、xxx-set寄存器、xxx-clr寄存器、xxx-mode寄存器及xxx-polar寄存器;

所述xxx-raw寄存器与所述xxx-stat寄存器为只读寄存器;所述xxx-mask寄存器与所述xxx-set寄存器、所述xxx-clr寄存器、所述xxx-mode寄存器及所述xxx-polar寄存器为可读可写寄存器;

所述xxx-raw寄存器控制中断信号源的状态;

所述xxx-stat寄存器控制经过中断控制器处理后的中断状态;

所述xxx-mask寄存器为中断使能开关;

所述xxx-set寄存器控制中断置位;

所述xxx-clr寄存器控制中断清除;

所述xxx-mode寄存器控制中断边沿或电平选择;

所述xxx-polar寄存器控制中断极性选择。

进一步的,运行所述寄存器流程工具包括以下步骤:

将所有寄存器的xml文件作为参数传递给所述寄存器流程工具,并指定根寄存器块;

所述寄存器流程工具首先将xml集里所有寄存器块信息包含中断信息全部解析出来;

从根寄存器块开始,根据xml集里寄存器块的层次包含关系,采用逐层遍历,直至所有的寄存器块处理结束。

进一步的,所述寄存器模型包括sv&uvm寄存器块模型和c/c 寄存器块模型。

进一步的,生成sv&uvm寄存器模型包括以下步骤:

根据寄存器块内的各个寄存器输出由uvm-reg类扩展为各个寄存器类模型;

其中,每个寄存器类模型里包括:

由注册域类定义的寄存器域;

将uvm-reg父类里定义的寄存器读写函数重新包装成get/set,并将寄存器域的值与全地址读写进行关联;

新(new)函数;

构造(build)函数,将各个寄存器域对象创建出来,并配置位偏移、位带宽、通道属性及域默认值等属性;

根据寄存器块顶层输出由注册块类扩展为寄存器模型的寄存器块顶层模型。

进一步的,所述寄存器块顶层模型里包括:

寄存器类模型实例化;

新(new)函数;

初始化(initialize)函数,给入该寄存器块的基地址,调用基类的锁模型函数将模型锁住,并调用基类的复位函数将模型复位;

构造(build)函数,将寄存器块模型内所有寄存器类的对象创建起来,创建由注册映射定义的某类接口的映射对象,并将寄存器块内的寄存器通过调用该映射内嵌的加注函数映射到该映射上;

连接函数,调用连接函数将该寄存器块模型与环境里对应的序列发生器连接。

进一步的,在生成c/c 寄存器模型前,先预定义块信息结构体,并在结构体内定义该块的基地址addr以及底层寄存器读写函数;

其中,生成c/c 寄存器模型包括以下步骤:

输出用寄存器块命名的用结构体封装的所有寄存器的寄存器域;

用带参数的宏定义的方式在一个带参数的宏里一次性定义两个模板函数块;

利用刚定义的带参数的宏定义将寄存器块内的所有域作为宏参数再引用一次;

用域名定义成带参数的宏;

使用变长的参数宏将单次寄存器读或者写分别封装到do…while程序块。

本发明的有益效果为:

1、本寄存器流程工具能帮助芯片开发过程中非常方便地实现寄存器相关的代码和文档。

2、不仅仅包含一般寄存器的代码和文档,还能在自动生成寄存器文件的同时自动实现中断控制器和c/c 语言的寄存器模型。

3、芯片验证过程中使用c/c 语言进行芯片的配置能非常方便地与软件等其它平台进行场景配置的代码共享。

4、因为它对寄存器的层次关系支持得非常好,所以可以非常方便地实现芯片集成设计以及集成验证以及随机验证。

5、芯片开发过程中如果寄存器相关开发能有条不紊地进行,会大大地加快芯片设计开发的周期并大大提高设计验证甚至软件开发的质量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的一种基于寄存器流程工具的设计验证芯片方法的流程图;

图2是根据本发明实施例的寄存器流程工具的工作流程框图。

具体实施方式

为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

根据本发明的实施例,提供了一种基于寄存器流程工具的设计验证芯片方法。

现结合附图和具体实施方式对本发明进一步说明,如图1-2所示,根据本发明实施例的基于寄存器流程工具的设计验证芯片方法,该基于寄存器流程工具的设计验证芯片方法包括以下步骤:

步骤s101,获取芯片寄存器和中断的设计验证需求;

步骤s102,将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中,生成包含中断控制器的寄存器文件;

步骤s103,运行所述寄存器流程工具;

步骤s104,所述寄存器流程工具自动根据xml集中信息将所述中断控制器和寄存器一起集成到芯片寄存器文件中;

具体的,中断控制器随着寄存器文件模块在芯片rtl里被例化。也就是说,中断控制器将随着芯片寄存器文件rtl代码将与其它rtl代码一起被综合成芯片实际电路。

步骤s105,所述寄存器流程工具配置有寄存器块集成接口;

具体的,用户将寄存器块的包含关系填入xml集,本工具就可以根据寄存器块的包含关系生成带有层次结构关系的寄存器模型。最顶层的寄存器块叫做根寄存器块。根寄存器块可以为1个或者多个。当层次关系确定以后,任意寄存器或者寄存器域都可以通过类的对象的实例化的层次关系索引到。同时,可以通过调用根寄存器块的randomize函数,即可对各个层次的寄存器域的值进行带约束的随机,非常方便地实现随机验证。

步骤s106,将芯片寄存器集成信息填入寄存器流程工具的入口xml集中,生成验证及软件开发所需的寄存器模型和寄存器配置模板。

具体的,本寄存器流程工具采用ruby语言,ruby语言有灵活的语法和丰富的类库,对xml有成熟的支持。不管是sv&uvm的还是c/c 的,都将包含寄存器块集成信息,用户就可以直接使用了。

本寄存器流程工具不仅根据寄存器xml集生成基于sv&uvm的寄存器模型,还会根据xml集的寄存器信息生成基于c/c 语言的寄存器模型。而c/c 寄存器模型则使用宏和模板函数等技术将寄存器的读写操作封装在函数里。

当用户调用这些寄存器的读写时,他们不需要关心寄存器的具体信息如地址和读写属性等,只需要根据寄存器的名称和域的名称进行赋值即可。相应的宏和模板函数会将用户的读写操作意图转换成底层的读写操作行为。非常方便。

在一个实施例中,所述寄存器中每个寄存器块占用一个xml文件,一个或多个xml文件一起构成开发对象完整的xml集;

所述寄存器块内包含该寄存器块的属性、寄存器定义及中断的定义。

具体的,本寄存器流程工具的入口是xml(extensiblemarkuplanguage)。

在一个实施例中,将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中包括以下步骤:

在xml集中定义一个中断块;

所述中断块中包含中断块名称、中断控制器寄存器组的起始偏移地址以及各中断域名等;

其中,所述中断块名称为输出信号名称,所述中断域名为中断源信号名。

在一个实施例中,将芯片寄存器集成信息填入寄存器流程工具的入口xml集中包括以下步骤:

在寄存器块里定义一个寄存器子块;

所述寄存器子块中包含寄存器名称、寄存器通道属性、寄存器偏移地址、寄存器描述以及寄存器域等;

所述寄存器域内包含该域的属性;

所述寄存器域的名称为寄存器内一个或多个比特组成的功能名称。

在一个实施例中,每个所述中断控制器包括控制所述中断控制器寄存器组的七个寄存器及中断信号控制电路;

其中,七个寄存器分别为:xxx-raw寄存器、xxx-stat寄存器、xxx-mask寄存器、xxx-set寄存器、xxx-clr寄存器、xxx-mode寄存器及xxx-polar寄存器;

所述xxx-raw寄存器与所述xxx-stat寄存器为只读寄存器;所述xxx-mask寄存器与所述xxx-set寄存器、所述xxx-clr寄存器、所述xxx-mode寄存器及所述xxx-polar寄存器为可读可写寄存器;

所述xxx-raw寄存器控制中断信号源的状态;

所述xxx-stat寄存器控制经过中断控制器处理后的中断状态;

所述xxx-mask寄存器为中断使能开关;

所述xxx-set寄存器控制中断置位;

所述xxx-clr寄存器控制中断清除;

所述xxx-mode寄存器控制中断边沿或电平选择;

所述xxx-polar寄存器控制中断极性选择。

具体的,每个中断控制器可以最多容纳32个中断源,通过这七个寄存器控制后,输出1个中断信号,而每个寄存器块里中断控制器的个数可以任意个,所有中断源信号和中断输出信号都将通过寄存器文件module的端口输入输出。

在一个实施例中,运行所述寄存器流程工具包括以下步骤:

将所有寄存器的xml文件作为参数传递给所述寄存器流程工具,并指定根寄存器块;

所述寄存器流程工具首先将xml集里所有寄存器块信息包含中断信息全部解析出来;

从根寄存器块开始,根据xml集里寄存器块的层次包含关系,采用逐层遍历,直至所有的寄存器块处理结束。

具体的,第一次遍历,在每个寄存器块内,根据寄存器信息和中断信息,生成一个个独立的寄存器文件。

第二次遍历,将各寄存器块的寄存器信息生成一个个uvm寄存器块模型,每一个模型就是一个uvm的reg-block扩展的子类,层次包含关系信息也会包含在其中。层次关系的体现方式就是每个子寄存器块模型类都在其母寄存器块模型里被实例化一个对象。这样一来,等所有寄存器块的模型生成完以后,它们组合在一起就是一个由root寄存器块模型延伸到各个子模型的有机整体。

第三次遍历,将各寄存器块的寄存器信息生成一个个c/c 寄存器块模型。c/c 寄存器模型的层次关系不是通过对象的例化实现的,而是通过一个初始化接口实现的。每个寄存器块模型对外都有一个初始化接口,当这个接口被调用时,该寄存器块的基地址信息等就会被赋值。然后再调用该寄存器块的读写操作时,就能得到正确的读写行为。用户不必再去关心该寄存器的基地址和偏移地址以及寄存器域的位置信息等等。而且,c/c 寄存器块的最底层读写行为是可以重定义的。

也就是说,如果你是软件人员,你可以将其定义为串口或者调试口的读写行为等。如果你是芯片开发验证人员,你可以将其定义为通过dpi接口调到sv/uvm验证环境里去。所以该c/c 的寄存器模型可以为芯片开发公司的几乎所有团队所用,用它开发的代码可以在各个团队之间共享,带来极大的方便和效率提升。

普通寄存器按照其读写属性生成相应的寄存器rtl文件和寄存器模型以及文档,这个跟商用工具基本没有区别。

在一个实施例中,所述寄存器模型包括sv&uvm寄存器块模型和c/c 寄存器块模型。

在一个实施例中,生成sv&uvm寄存器模型包括以下步骤:

根据寄存器块内的各个寄存器输出由uvm-reg类扩展为各个寄存器类模型;

其中,每个寄存器类模型里包括:

由注册域类定义的寄存器域;

将uvm-reg父类里定义的寄存器读写函数重新包装成get/set,并将寄存器域的值与全地址读写进行关联;

新(new)函数;

构造(build)函数,将各个寄存器域对象创建出来,并配置位偏移、位带宽、通道属性及域默认值等属性;

根据寄存器块顶层输出由注册块类扩展为寄存器模型的寄存器块顶层模型。

在一个实施例中,所述寄存器块顶层模型里包括:

寄存器类模型实例化;

新(new)函数;

初始化(initialize)函数,给入该寄存器块的基地址,调用基类的锁模型函数将模型锁住,并调用基类的复位函数将模型复位;

构造(build)函数,将寄存器块模型内所有寄存器类的对象创建起来,创建由注册映射定义的某类接口的映射对象,并将寄存器块内的寄存器通过调用该映射内嵌的加注函数映射到该映射上;

连接函数,调用连接函数将该寄存器块模型与环境里对应的序列发生器连接。

在一个实施例中,在生成c/c 寄存器模型前,先预定义块信息结构体,并在结构体内定义该块的基地址addr以及底层寄存器读写函数;

其中,生成c/c 寄存器模型包括以下步骤:

输出用寄存器块命名的用结构体封装的所有寄存器的寄存器域(注意,这就要求一个寄存器块内的寄存器域原则上不能重名,即使它们属于不同寄存器);

用带参数的宏定义的方式在一个带参数的宏里一次性定义两个模板函数块,这两个函数的函数名相同且都含有宏参数字符,并且都是两个入参,但一个是地址和数据,另一个是地址和指针,很显然,这是为后续函数块重载做好了准备;

利用刚定义的带参数的宏定义将寄存器块内的所有域作为宏参数再引用一次,很显然,每次引用其实是定义了两个函数;

用域名定义成带参数的宏,宏的内容就是刚刚实例的函数形式,很显然,到底选用哪个函数,将根据本域名带入的参数类型而定;

使用变长的参数宏将单次寄存器读或者写分别封装到do…while程序块,宏参数包括blockinfo(块信息),以及想要赋值的寄存器域及其值,寄存器域及其值在宏展开以后将根据其参数类型选取相应的模板函数块,再结合blockinfo(块信息)里的底层读写函数,实现寄存器的完整读写行为。

用户使用上述参数宏进行读写操作,最终将根据其参数类型自动重载读模板函数块或者写模板函数块。

为了方便理解本发明的上述技术方案,以下就本发明在实际过程中的工作原理或者操作方式进行详细说明。

在实际应用时,本寄存器流程工具的入口是一组xml集,每个xml文件含有一个或多个寄存器块。根据实际需要,有些寄存器块只含有一个或多个寄存器内容,有些寄存器块只包含其它子寄存器块,有些寄存器块既含有自己的寄存器内容又包含其它寄存器块。芯片模块的设计人员按照模块的结构和划分将开发对象的寄存器信息填入相应的xml。芯片集成的设计人员将各个模块的寄存器块的层次信息填入顶层或次顶层的xml集即可。然后运行本寄存器流程工具,所有芯片设计验证所需要的代码和文档都可以自动生成。然后,设计人员将寄存器文件里的rtlmodule例化到对应模块或顶层的rtl中,随着其它逻辑代码一起被后端综合生成实际电路。而验证人员可以直接将寄存器模型实例化到验证环境里,使用层次关系对所有寄存器发起读写操作。基于c/c 语言的寄存器模型则可以通过dpi技术实现底层的读写操作行为与sv&uvm架构的环境的交互,进而实现寄存器的读写行为。

本工具定义了一套完整的寄存器信息录入的xml规范。用户接口非常友善,将寄存器信息录入非常容易。而xml作为行业标准,其可读性和完备性都非常好。本工具实现将中断控制器的生成引入寄存器流程。将中断信息填入xml也非常简单,只需要将一组中断源和经过中断控制器后的输出中断信号名填入即可。中断控制器将由工具自动生成到寄存器文件的rtlmodule里。本工具使用宏和模板函数实现基于c/c 语言的寄存器模型,方便芯片验证与软件开发进行代码共享和用例沟通。本工具将芯片集成的寄存器层次关系引入xml,进而生成具有层次关系的寄存器模型。非常方便用户对芯片进行配置以及随机验证。

综上所述,借助于本发明的上述技术方案,本寄存器流程工具能帮助芯片开发过程中非常方便地实现寄存器相关的代码和文档。不仅仅包含一般寄存器的代码和文档,还能实现中断控制器和c/c 语言的寄存器模型。芯片验证过程中使用c/c 语言进行芯片的配置能非常方便地与软件等其它平台进行场景配置的代码共享。因为它对寄存器的层次关系支持得非常好,所以可以非常方便地实现芯片集成设计以及集成验证以及随机验证。芯片开发过程中如果寄存器相关开发能有条不紊地进行,会大大地加快芯片设计开发的周期并大大提高设计验证甚至软件开发的质量。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:

1.一种基于寄存器流程工具的设计验证芯片方法,其特征在于,该基于寄存器流程工具的设计验证芯片方法包括以下步骤:

获取芯片寄存器和中断的设计验证需求;

将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中,生成包含中断控制器的寄存器文件;

运行所述寄存器流程工具;

所述寄存器流程工具自动根据xml集中信息将所述中断控制器和寄存器一起集成到芯片寄存器文件中;

所述寄存器流程工具配置有寄存器块集成接口;

将芯片寄存器集成信息填入寄存器流程工具的入口xml集中,生成验证及软件开发所需的寄存器模型和寄存器配置模板。

2.根据权利要求1所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,所述寄存器中每个寄存器块占用一个xml文件,一个或多个xml文件一起构成开发对象完整的xml集;

所述寄存器块内包含该寄存器块的属性、寄存器定义及中断的定义。

3.根据权利要求2所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口xml集中包括以下步骤:

在xml集中定义一个中断块;

所述中断块中包含中断块名称、中断控制器寄存器组的起始偏移地址以及各中断域名等;

其中,所述中断块名称为输出信号名称,所述中断域名为中断源信号名。

4.根据权利要求2所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,将芯片寄存器集成信息填入寄存器流程工具的入口xml集中包括以下步骤:

在寄存器块里定义一个寄存器子块;

所述寄存器子块中包含寄存器名称、寄存器通道属性、寄存器偏移地址、寄存器描述以及寄存器域等;

所述寄存器域内包含该域的属性;

所述寄存器域的名称为寄存器内一个或多个比特组成的功能名称。

5.根据权利要求1所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,每个所述中断控制器包括控制所述中断控制器寄存器组的七个寄存器及中断信号控制电路;

其中,七个寄存器分别为:xxx-raw寄存器、xxx-stat寄存器、xxx-mask寄存器、xxx-set寄存器、xxx-clr寄存器、xxx-mode寄存器及xxx-polar寄存器;

所述xxx-raw寄存器与所述xxx-stat寄存器为只读寄存器;所述xxx-mask寄存器与所述xxx-set寄存器、所述xxx-clr寄存器、所述xxx-mode寄存器及所述xxx-polar寄存器为可读可写寄存器;

所述xxx-raw寄存器控制中断信号源的状态;

所述xxx-stat寄存器控制经过中断控制器处理后的中断状态;

所述xxx-mask寄存器为中断使能开关;

所述xxx-set寄存器控制中断置位;

所述xxx-clr寄存器控制中断清除;

所述xxx-mode寄存器控制中断边沿或电平选择;

所述xxx-polar寄存器控制中断极性选择。

6.根据权利要求1所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,运行所述寄存器流程工具包括以下步骤:

将所有寄存器的xml文件作为参数传递给所述寄存器流程工具,并指定根寄存器块;

所述寄存器流程工具首先将xml集里所有寄存器块信息包含中断信息全部解析出来;

从根寄存器块开始,根据xml集里寄存器块的层次包含关系,采用逐层遍历,直至所有的寄存器块处理结束。

7.根据权利要求6所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,所述寄存器模型包括sv&uvm寄存器块模型和c/c 寄存器块模型。

8.根据权利要求7所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,生成sv&uvm寄存器模型包括以下步骤:

根据寄存器块内的各个寄存器输出由uvm-reg类扩展为各个寄存器类模型;

其中,每个寄存器类模型里包括:

由注册域类定义的寄存器域;

将uvm-reg父类里定义的寄存器读写函数重新包装成get/set,并将寄存器域的值与全地址读写进行关联;

新函数;

构造函数,将各个寄存器域对象创建出来,并配置位偏移、位带宽、通道属性及域默认值等属性;

根据寄存器块顶层输出由注册块类扩展为寄存器模型的寄存器块顶层模型。

9.根据权利要求8所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,所述寄存器块顶层模型里包括:

寄存器类模型实例化;

新函数;

初始化函数,给入该寄存器块的基地址,调用基类的锁模型函数将模型锁住,并调用基类的复位函数将模型复位;

构造函数,将寄存器块模型内所有寄存器类的对象创建起来,创建由注册映射定义的某类接口的映射对象,并将寄存器块内的寄存器通过调用该映射内嵌的加注函数映射到该映射上;

连接函数,调用连接函数将该寄存器块模型与环境里对应的序列发生器连接。

10.根据权利要求7所述的一种基于寄存器流程工具的设计验证芯片方法,其特征在于,在生成c/c 寄存器模型前,先预定义块信息结构体,并在结构体内定义该块的基地址addr以及底层寄存器读写函数;

其中,生成c/c 寄存器模型包括以下步骤:

输出用寄存器块命名的用结构体封装的所有寄存器的寄存器域;

用带参数的宏定义的方式在一个带参数的宏里一次性定义两个模板函数块;

利用刚定义的带参数的宏定义将寄存器块内的所有域作为宏参数再引用一次;

用域名定义成带参数的宏;

使用变长的参数宏将单次寄存器读或者写分别封装到do…while程序块。

技术总结
本发明公开了一种基于寄存器流程工具的设计验证芯片方法,该方法包括以下步骤:获取芯片寄存器和中断的设计验证需求;将芯片各模块的中断信息和寄存器信息按照预先制定的规范填写到预先配置的寄存器流程工具的入口XML集中,生成包含中断控制器的寄存器文件;运行所述寄存器流程工具;所述寄存器流程工具自动根据XML集中信息将所述中断控制器和寄存器一起集成到芯片寄存器文件中;所述寄存器流程工具配置有寄存器块集成接口;将芯片寄存器集成信息填入寄存器流程工具的入口XML集中,生成验证及软件开发所需的寄存器模型和寄存器配置模板。本发明的有益效果为:能帮助芯片开发过程中非常方便地实现寄存器相关的代码和文档。

技术研发人员:何刚
受保护的技术使用者:何刚
技术研发日:2020.01.10
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-19972.html

最新回复(0)