一种寄存器模型初值配置方法技术

技术编号:39649814 阅读:11 留言:0更新日期:2023-12-09 11:18
本发明专利技术公开了一种寄存器模型初值配置方法,属于微电子技术领域,包括,识别寄存器表单生成标准的寄存器抽象层文件;根据寄存器抽象层文件使用

【技术实现步骤摘要】
一种寄存器模型初值配置方法


[0001]本专利技术涉及微电子
,且特别是有关于一种寄存器模型初值配置方法


技术介绍

[0002]随着集成电路技术的不断发展,硬件设计的规模和功能复杂程度也日益提升,越来越多的功能模块被集成到同一颗集成电路上,而各个功能模块的行为往往与该模块对应的寄存器配置挂钩

在基于
UVM
寄存器模型的使用下,验证人员配置寄存器已经变得相对简单

通常,对寄存器模型进行操作有以下几种方法: read
操作(对寄存器及其字段进行读取)
、write
操作(对寄存器及其字段进行写入的行为)
、peek
操作(用于读取仿真环境中的信号

寄存器或内存的值)
、poek
操作(用于写入仿真环境中的信号

寄存器或内存的值)
、get
操作(获取寄存器或寄存器字段的当前值或特定属性)
、set
操作(设置寄存器或寄存器字段的值或特定属性)
、update
操作(更新寄存器或寄存器字段的值)和
randomize
操作(随机生成和设置寄存器模型中字段值)

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

只读只写域段,写清域段等,会给寄存器配置造成困难


技术实现思路

[0004]本专利技术旨在提供一种寄存器模型初值配置方法

[0005]为达到上述目的,本专利技术技术方案是:一种寄存器模型初值配置方法,包括,步骤
S1
,搭建
UVM
验证环境;步骤
S2
,基于
Python
脚本识别寄存器表单,生成标准的寄存器抽象层文件;步骤
S3
,根据寄存器抽象层文件使用
ralgen
命令生成寄存器模型;步骤
S4
,利用
Python
脚本解析寄存器抽象层文件,解析模块名,寄存器名以及字段名,存储每个字段的属性

位宽以及默认值;步骤
S5
,利用
Python
脚本识别寄存器或字段是否为保留域;步骤
S6
,对不是保留域且属性为可读可写或只写的域段生成一个参数配置文件
plus_aaa_ral
,每个所述不是保留域且属性为可读可写或只写的域段均对应一个变量,所述参数配置文件
plus_aaa_ral
包含对上述各个变量的声明;步骤
S7
,在寄存器模型中添加
set_cfg
()函数,
set_cfg
()函数内部调用寄存器模型中的
set
函数;步骤
S8
,在测试用例中,通过传递参数对所述参数配置文件
plus_aaa_ral
中的各个变量进行赋值,通过
set_cfg
()函数将对各个变量赋的值配置到各变量对应的寄存器的
期望值中;步骤
S9
,在测试环境的配置阶段中调用封装函数,所述封装函数包括
update
函数,
update
函数检查期望值与镜像值是否一致,若不一致,就会将期望值写入被测器件,并将镜像值更新到和期望值一样

[0006]在一具体实施例中,上述步骤
S6
中,变量的声明格式为
static bit [width

1:0] block_name_reg_name_field_name
,表示这个变量属于模块
block_name
的寄存器
reg_name
的字段
field_name

width
表示变量需要的位宽,
static
表示这个变量为静态变量

[0007]进一步地,
set
函数按照如下命令对寄存器模型的期望值进行操作
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
配置到寄存器模型中对应模块的对应寄存器的对应字段中

[0008]在另一具体实施例中,对单个被测器件进行配置时,参数配置文件
plus_aaa_ral
中变量的声明格式为
static bit [width

1:0] block_name_reg_name_field_name[M],
M
表示数组深度

[0009]进一步地,对
N
个被测器件,即第1个被测器件至第
N
个被测器件,进行配置时,参数配置文件
plus_aaa_ral
中变量的声明格式为
static bit [width

1:0] block_name_reg_name_field_name[M][N]。
[0010]进一步地,将步骤
S7
中的
set_cfg
()函数声明为
set_cfg(int inst_id)
,如果
set_cfg(int inst_id)
函数中参数
inst_id
等于
n
‑1,
set
函数按照如下命令对寄存器模型的期望值进行操作
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本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种寄存器模型初值配置方法,其特征在于,包括,步骤
S1
,搭建
UVM
验证环境;步骤
S2
,基于
Python
脚本识别寄存器表单,生成标准的寄存器抽象层文件;步骤
S3
,根据寄存器抽象层文件使用
ralgen
命令生成寄存器模型;步骤
S4
,利用
Python
脚本解析寄存器抽象层文件,解析模块名,寄存器名以及字段名,存储每个字段的属性

位宽以及默认值;步骤
S5
,利用
Python
脚本识别寄存器或字段是否为保留域;步骤
S6
,对不是保留域且属性为可读可写或只写的域段生成一个参数配置文件
plus_aaa_ral
,每个所述不是保留域且属性为可读可写或只写的域段均对应一个变量,所述参数配置文件
plus_aaa_ral
包含对上述各个变量的声明;步骤
S7
,在寄存器模型中添加
set_cfg
()函数,
set_cfg
()函数内部调用寄存器模型中的
set
函数;步骤
S8
,在测试用例中,通过传递参数对所述参数配置文件
plus_aaa_ral
中的各个变量进行赋值,通过
set_cfg
()函数将对各个变量赋的值配置到各变量对应的寄存器的期望值中;步骤
S9
,在测试环境的配置阶段中调用封装函数,所述封装函数包括
update
函数,
update
函数检查期望值与镜像值是否一致,若不一致,就会将期望值写入被测器件,并将镜像值更新到和期望值一样
。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
函数按照如下命令对寄存器模型的期望值进行操作
block_name.reg_name.field_name.set(plus_aaa_ral::block_name_reg_name_field_name)
,表示将参数配置文件
plus_aaa_ral
中模块
block_...

【专利技术属性】
技术研发人员:付佳成王澳郭帆张高明杨清
申请(专利权)人:深圳市楠菲微电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1