UVM:7.2.1 只有一个寄存器的寄存器模型

本文介绍如何使用UVM库构建寄存器模型。包括为特定寄存器创建类,配置寄存器属性,以及如何将寄存器集成到模块中。详细解释了寄存器的构建过程和其在验证平台中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.为7.1.1的DUT建立寄存器模型。只有一个寄存器invert。首先从uvm_reg 派生一个invert 类:


1)new函数中,invert 的宽度作为参数传给super.new。不是有效宽度,而是这个寄存器总共的位数。

2)另一个参数是是否加入覆盖率的支持。这个不支持。

3)派生自uvm_reg的类都有一个build 函数。和build_phase不同,他不会自动执行,需要手工调用。都是在这里例化,之后调用data.configure配置。意义如下:


4)第四个参数表示此字段的存取方式。UVM提供如下25种:



2.第一好寄存器后,需要在由reg_block 派生的类中将其例化:


1)每个由uvm_reg_block 派生的类也要定义一个build 函数,在其中实现所有寄存器的例化。

2)一个uvm_reg_block 对应一个uvm_reg_map,default_map系统已经声明,只需在build中例化,调用create_map。

第一个参数是名字。

第二个参数是基地址。

第三个是系统总线宽度,单位是byte。

第四个是大小端。

第五个是是否按照byte寻址。

3)例化invert 并调用invert.configure。指定后门访问时的路径。

第一个是此寄存器所在uvm_reg_block 的指针,这里是this。

第二个是reg_file的指针。

第三个是此寄存器后门路径。

4)需要受到build,将invert中的field 例化。

5)将此寄存器加入default_map中。uvm_reg_map 作用是存储所有寄存器地址,因此必须加入,否则无法前门操作。

第一个是要加入的寄存器。

第二个是寄存器地址。

第三个是存取方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值