1.建立好后,可以在sequence 和其它components 中使用。参考模型为例有一个寄存器模型指针:

UVM:7.2.3 在验证平台中使用寄存器模型_赋值


2.之前已经给env 的p_rm赋值,只需要在env中将p_rm 传给参考模型:

UVM:7.2.3 在验证平台中使用寄存器模型_数据_02


3.寄存器模型提供了两个基本任务:read 和write。

在参考模型中读取寄存器,使用read 任务:

UVM:7.2.3 在验证平台中使用寄存器模型_数据_03


read 原型如下所示:

UVM:7.2.3 在验证平台中使用寄存器模型_寄存器_04


1)常用前3个参数。

第一个是输出,表示操作是否成功。

第二个是输出,读取的数值。

第三个读取方式,前门 or 后门。


4.由于参考模型一般不写寄存器,对于write 任务,以在virtual sequence 为例。在sequence 中使用寄存器模型,通常通过引用p_sequencer(其实sequence 想得到外部的数据,渠道不多,m_sequencer cast 成p_sequencer应该是最常用的)。

1)首先在sequencer 中有一个寄存器模型的指针:

UVM:7.2.3 在验证平台中使用寄存器模型_赋值_05

之前已给v_sqr.p_rm赋值。

2)因此可以直接以如下进行写操作:

UVM:7.2.3 在验证平台中使用寄存器模型_赋值_06


write原型为:

UVM:7.2.3 在验证平台中使用寄存器模型_数据_07


5.寄存器模型对sequence 的transaction 类型没有任何要求。因此,可以在一个发送my_transaction 的sequence 中使用寄存器模型对寄存器进行读写操作。