寄存器的概述
introduction
• 寄存器:一般为32bit, 可以分为多个reg_filed, 每个field一般代表着独立的功能
• 寄存器域:一般分为RW, RO,WO以及一些特殊的行为
• 保留域:暂时保留以作日后功能的扩展使用,对保留域的读写不起任何作用
• 寄存器块:按照地址排列的寄存器列表
寄存器模型
作用:做预测,做激励
内容:验证环境中的寄存器模型与DUT的寄存器模块的寄存器信息高度一致
应用:
1.对寄存器域进行声明 (保留域也要进行声明)
uvm_reg_field reserved;
rand uvm_reg_field pkt_len;
2.build() 阶段对寄存器域进行例化、配置
Pkt_len = uvm_reg_field::type_id::create("pkt_len");
Pkt_len.configure(this, 3, 3, "RW", 0, 3'h0, 1, 1, 0);
3.定义寄存器块(uvm_reg_block)
在build()阶段对寄存器的句柄进行例化,配置,调用寄存器所在class的build()函数
用uvm_reg_map 来表示寄存器和存储对应的偏移地址,只需要在build阶段例化系统已经定义好的defualt map
(一个block至少对应一个map)
Adapter
功能:桥接功能,