UVM寄存器模型(上):reg_field的内部结构与复位函数详解

        以最基础的reg_field为例,来讲解寄存器模型的内部定义与复位

reg_field定义:

重点关注四个变量:

value:唯一一个没有被local修饰的值类型,即寄存器模型可以直接访问,也是唯一一个用rand修饰的字段,用于对寄存器模型里的reg进行randomize后存储随机值,同时也是我们对寄存器模型收集覆盖率所sample的值,value与m_desired关系密切。(之所以除了m_mirrored和m_desired外还要定义一个value,是因为m_mirrored和m_desired都是local属性,外部无法访问,所以先随机value的值,再将其赋值给m_desired)

m_mirrored(镜像值):存放我们认为此时DUT里寄存器的实际值。

m_desired(期望值):存放我们期望DUT寄存器被赋予的值。

m_reset[“HARD”](复位值):存放硬复位值。m_reset其实是一个以字符串为索引(key)以uvm_reg_data_t为值(value)的联合数组类型,除了默认的key="HARD"类型的硬复位值,我们还可以添加我们自定义的复位类型对。

这四个变量的类型都是uvm_reg_data_t,后缀_t表示这是一个typedef,

表示一个bit unsigned [63:0],即这四个变量都是一个64位的无符号bit变量

reg_field配置

注意,当在uvm_reg中调用某个uvm_reg_field的configure()函数时:

1.has_reset参数决定了m_reset[“HARD”]是否被赋值,赋值内容为reset参数所给的值

即如果has_reset=1,则reset参数的值将被视为“HARD”复位值,即m_reset[“HARD”]=reset。如果has_reset值为0,则reset参数将被忽略。

2.access和is_rand共同决定了在执行randomize的时候value值是否会被随机。若is_rand=0,则value的rand_mode将被置0关闭,rand_mode=0代表禁止变量随机化,相当于value声明时没有添加rand修饰

复位函数详解

set_reset()

调用修改uvm_reg_field里复位值的函数set_reset(),实现对m_reset[string]关联数组的赋值由此可以覆盖寄存器模型初始化时configure的硬复位值,即修改m_reset[“HARD”]值。此外也可以自定义添加其他复位值类型

通俗讲就是

set_reset(1'h0):即m_reset[“HARD”]=1'h0,修改HARD索引对应的值

set_reset(1'h0,“my_self_cmd”):即m_reset[“my_self_cmd”]=1'h0,在m_reset新建一对自定义的复位值和索引名

注:set_reset()设置的是软件寄存器模型的复位值,而非硬件DUT的寄存器

图解:config和set_reset都可以修改m_reset[“HARD”]

reset()

将uvm_reg_field中m_mirred、m_desired、value都赋值成我们预先设置的reset值(reset值即可以是默认的key=“HARD”,也可以是我们预先定义的key对应的reset值),同时将m_written变量赋值为0表示该uvm_reg_field没有被写过

图解:

reset()与set_reset()的关系:set_reset()只设定复位值而不执行,reset()执行复位

has_reset()

判断对应reset类型(kind参数)是否有reset值

get_reset()

获取某种reset类型(kind参数)的reset值,如果不存在该reset类型,则返回m_desired(期望值)

get_reset()检索m_reset [kind]属性的值,此外还有两个get访问本地属性。 get_mirrored_value()方法检索m_mirrored属性的值;get()检索m_desired

图解:

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值