首页 > 学院 > 开发设计 > 正文

UVM的register model介绍(七)

2019-11-06 06:56:22
字体:
来源:转载
供稿:网友

Register model介绍 问题:期待DUT中的状态寄存器会对我们的激励有一定反应。 解决办法: Task scoreborard::main_phase(uvm_phase phase); ……. Reg_model.STATUS_REGread(status,value,UVM_FRONTDOOR); …… Endtask

Uvm_reg_field:是register model中的最小单位 Uvm_reg:比uvm_reg_field高一个级别。一个寄存器中至少有一个uvm_reg_field。 Uvm_reg_block:可以加入许多uvm_reg,也可以加入其它的uvm_reg_block。一个register model中至少包含一个uvm_reg_block。 UVM_FRONTDOOR:代表寄存器的访问方式,即通过模拟cpu,在总线上发出读指令,进行读写操作。在这个过程,仿真时间一直往前走。 UVM_BACKDOOR:与UVM_FRONTDOOR相对概念。它并不通过总线进行读写操作,而是直接通过层次化的引来改变寄存器的值。 Uvm_reg_map:每个寄存器都有其地址,这些地址表现形式有的为绝对地址,有的为相对地址。Uvm_reg_map就是存储这些地址,并把这些地址转换成可以访问的地址。

层次化的register model 这里写图片描述 一般只会在第一级的uvm_reg_block中加入寄存器,而第二级的uvm_reg_block添加uvm_reg_block。 例: 这里写图片描述

Reg_file用以区分不同的hdl路径: 为适应多个寄存器的情况:则需派生类: 这里写图片描述

如上所示,uvm_reg_file派生一个类,然后在mac_blk中实例化此类,之后调用其configure函数,此函数的第一个参数是其所在的reg_block的指针,第二个参数是假设此reg_file是另外一个reg_file的parent,那么就填其父reg_file的指针。

具有多个域的寄存器: 则需要对应定义:例子 这里写图片描述

这里 需从uvm_reg派生一个类,在此类中加入3个uvm_reg_field。在reg_block中把此类实例化后,调用rf_reg.configure时,需要注意最后一个代表hdl路径的参数已经变成了空的字符串,再调用tf_reg.build之后要调用tf_reg.fileA的configure函数。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表