一种寄存器模型初值配置方法与流程

文档序号:36267532发布日期:2023-12-06 14:25阅读:51来源:国知局
一种寄存器模型初值配置方法与流程

本发明涉及微电子,且特别是有关于一种寄存器模型初值配置方法。


背景技术:

1、随着集成电路技术的不断发展,硬件设计的规模和功能复杂程度也日益提升,越来越多的功能模块被集成到同一颗集成电路上,而各个功能模块的行为往往与该模块对应的寄存器配置挂钩。在基于uvm寄存器模型的使用下,验证人员配置寄存器已经变得相对简单。通常,对寄存器模型进行操作有以下几种方法: read操作(对寄存器及其字段进行读取)、write操作(对寄存器及其字段进行写入的行为)、peek操作(用于读取仿真环境中的信号、寄存器或内存的值)、poek操作(用于写入仿真环境中的信号、寄存器或内存的值)、get操作(获取寄存器或寄存器字段的当前值或特定属性)、set操作(设置寄存器或寄存器字段的值或特定属性)、update操作(更新寄存器或寄存器字段的值)和randomize操作(随机生成和设置寄存器模型中字段值)。

2、现在常用的的配置方式是在测试环境中重复调用寄存器模型中的write操作来实现对寄存器的配置,但是如果功能模块内使用到的寄存器数量较多,在环境中或者具体的测试用例中对寄存器进行配置,验证人员在编码时会有大量的重复劳动,造成过大的工作量与过长的仿真时间;并且由于某些寄存器内域段的属性并不是单一类型,可能夹杂着读写域段、只读只写域段,写清域段等,会给寄存器配置造成困难。


技术实现思路

1、本发明旨在提供一种寄存器模型初值配置方法。

2、为达到上述目的,本发明技术方案是:

3、一种寄存器模型初值配置方法,包括,

4、步骤s1,搭建uvm验证环境;

5、步骤s2,基于python脚本识别寄存器表单,生成标准的寄存器抽象层文件;

6、步骤s3,根据寄存器抽象层文件使用ralgen命令生成寄存器模型;

7、步骤s4,利用python脚本解析寄存器抽象层文件,解析模块名,寄存器名以及字段名,存储每个字段的属性、位宽以及默认值;

8、步骤s5,利用python脚本识别寄存器或字段是否为保留域;

9、步骤s6,对不是保留域且属性为可读可写或只写的域段生成一个参数配置文件plus_aaa_ral,每个所述不是保留域且属性为可读可写或只写的域段均对应一个变量,所述参数配置文件plus_aaa_ral包含对上述各个变量的声明;

10、步骤s7,在寄存器模型中添加set_cfg()函数,set_cfg()函数内部调用寄存器模型中的set函数;

11、步骤s8,在测试用例中,通过传递参数对所述参数配置文件plus_aaa_ral中的各个变量进行赋值,通过set_cfg()函数将对各个变量赋的值配置到各变量对应的寄存器的期望值中;

12、步骤s9,在测试环境的配置阶段中调用封装函数,所述封装函数包括update函数,update函数检查期望值与镜像值是否一致,若不一致,就会将期望值写入被测器件,并将镜像值更新到和期望值一样。

13、在一具体实施例中,上述步骤s6中,变量的声明格式为static bit [width-1:0]block_name_reg_name_field_name,表示这个变量属于模块block_name的寄存器reg_name的字段field_name,width表示变量需要的位宽,static表示这个变量为静态变量。

14、进一步地,set函数按照如下命令对寄存器模型的期望值进行操作

15、block_name.reg_name.field_name.set(plus_aaa_ral::block_name_reg_name_field_name),表示将参数配置文件plus_aaa_ral中模块block_name的寄存器reg_name的字段field_name配置到寄存器模型中对应模块的对应寄存器的对应字段中。

16、在另一具体实施例中,对单个被测器件进行配置时,参数配置文件plus_aaa_ral中变量的声明格式为static bit [width-1:0] block_name_reg_name_field_name[m],m表示数组深度。

17、进一步地,对n个被测器件,即第1个被测器件至第n个被测器件,进行配置时,参数配置文件plus_aaa_ral中变量的声明格式为static bit [width-1:0] block_name_reg_name_field_name[m][n]。

18、进一步地,将步骤s7中的set_cfg()函数声明为set_cfg(int inst_id),如果set_cfg(int inst_id)函数中参数inst_id等于n-1,set函数按照如下命令对寄存器模型的期望值进行操作

19、block_name.reg_name.field_name.set(plus_aaa_ral::block_name_reg_name_field_name) [m] [n-1],表示将参数配置文件plus_aaa_ral中模块block_name的寄存器reg_name的字段field_name配置到寄存器模型中第n个被测器件对应模块的对应寄存器的对应字段中,其中,n的取值范围为0~n-1。

20、进一步地,当对n个被测器件,即第1个被测器件至第n个被测器件,进行配置时,调用set_cfg(n-1)函数,将对各个变量赋的值配置到第n个被测器件中各变量对应的寄存器的期望值中。

21、可选地,对同类参数的赋值放在一个公共的参数配置文件plus_aaa_ral中,不同的测试用例可以解析这个公共的参数配置文件plus_aaa_ral。

22、有益效果,本发明一种寄存器模型初值配置方法,基于寄存器模型中set函数与update函数本身的特性,通过传递参数可以仅对值发生改变的寄存器下配置,相比传统的write操作,能达到节省仿真时间的目的;在此基础上,将所有支持写的域段根据模块名、寄存器名、字段名声明参数,在测试用例中对这些参数赋随机值或定值,对同类参数赋值的可以放在一个公共的配置文件中,不同的测试用例可以解析共同的配置文件,减少代码的冗余。

23、为让发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。



技术特征:

1.一种寄存器模型初值配置方法,其特征在于,包括,

2. 如权利要求1所述一种寄存器模型初值配置方法,其特征在于,所述步骤s6中,变量的声明格式为static bit [width-1:0] block_name_reg_name_field_name,表示这个变量属于模块block_name的寄存器reg_name的字段field_name,width表示变量需要的位宽,static表示这个变量为静态变量。

3.如权利要求2所述一种寄存器模型初值配置方法,其特征在于,set函数按照如下命令对寄存器模型的期望值进行操作

4. 如权利要求1所述一种寄存器模型初值配置方法,其特征在于,对单个被测器件进行配置时,参数配置文件plus_aaa_ral中变量的声明格式为static bit [width-1:0]block_name_reg_name_field_name[m],m表示数组深度。

5. 如权利要求4所述一种寄存器模型初值配置方法,其特征在于,对n个被测器件,即第1个被测器件至第n个被测器件,进行配置时,参数配置文件plus_aaa_ral中变量的声明格式为static bit [width-1:0] block_name_reg_name_field_name[m] [n]。

6. 如权利要求5所述一种寄存器模型初值配置方法,其特征在于,将步骤s7中的set_cfg()函数声明为set_cfg(int inst_id),如果set_cfg(int inst_id)函数中参数inst_id等于n-1,set函数按照如下命令对寄存器模型的期望值进行操作

7.如权利要求6所述一种寄存器模型初值配置方法,其特征在于,当对n个被测器件,即第1个被测器件至第n个被测器件,进行配置时,调用set_cfg(n-1)函数,将对各个变量赋的值配置到第n个被测器件中各变量对应的寄存器的期望值中。

8.如权利要求1-7任一项所述一种寄存器模型初值配置方法,其特征在于,对同类参数的赋值放在一个公共的参数配置文件plus_aaa_ral中,不同的测试用例可以解析这个公共的参数配置文件plus_aaa_ral。


技术总结
本发明公开了一种寄存器模型初值配置方法,属于微电子技术领域,包括,识别寄存器表单生成标准的寄存器抽象层文件;根据寄存器抽象层文件使用ralgen命令生成寄存器模型;解析寄存器抽象层文件;识别寄存器或字段是否为保留域;对不是保留域且属性为可读可写或只写的域段生成一个参数配置文件;在寄存器模型中添加set_cfg函数,set_cfg函数内部调用寄存器模型中的set函数;调用set_cfg函数,对寄存器模型的期望值根据测试用例执行时的传递参数下配置;调用封装函数对寄存器模型的初值进行配置。本发明一种寄存器模型初值配置方法节省仿真时间,减少代码的冗余。

技术研发人员:付佳成,王澳,郭帆,张高明,杨清
受保护的技术使用者:深圳市楠菲微电子有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1