`ifndefUVM_REG_DATA_WIDTH`defineUVM_REG_DATA_WIDTH64`endif 与数据位宽类似,地址位宽默认最大值也为64,其受到`UVM_REG_ADDR_WIDTH宏控制。要想获得更大的数据位宽或地址位宽,可以通过改变上述两个宏来实现。 7.8 寄存器模型的其他常用函数 get_root_blocks函数得到验证平台上所有的根块。根块指最顶层的reg_bl...
UVM REG Model入门 本章通过一个非常小的示例来解释UVM REG中一些常用操作的实现。 1.1. 示例 假设某个功能模块中包含如下寄存器,且寄存器通过APB接口进行配置。 1.1.1. status 状态寄存器,只读,Offset: 0h, Width: 32bits Field access width reset comment Reserved RO [31:4] 0 保留位 Error RO [3:...
this.default_map.add_reg(this.m_reg_stat,`UVM_REG_ADDR_WIDTH'h4,"RW",0);this.default_map.add_reg(this.m_reg_inten,`UVM_REG_ADDR_WIDTH'h8,"RW",0);endfunction:build endclass:reg_block 由此,一个reg_block类的对象就是我们所说的寄存器模型,并且通过访问这个reg_block对象,我们就可以访问其...
`define UVM_REG_ADDR_WIDTH64`endif//Macro: `UVM_REG_DATA_WIDTH///Maximum data width in bits///Default value is 64. Used to define the <uvm_reg_data_t> type.//`ifndef UVM_REG_DATA_WIDTH `define UVM_REG_DATA_WIDTH64`endif//Macro: `UVM_REG_BYTENABLE_WIDTH///Maximum number of byt...
1.uvm_reg_field概念 (1) uvm_reg_field是寄存器模型的最小单位,在uvm_reg的build函数内实例化,和DUT中每个register里的field对应; 2.uvm_reg_field源码 1`ifndef UVM_REG_ADDR_WIDTH2//可以通过改变这个宏的值来改变register model所能表示的最大寄存器的值;3`define UVM_REG_ADDR_WIDTH644`endif56`ifndef...
this.default_map.add_reg(this.m_reg_stat,`UVM_REG_ADDR_WIDTH'h4,"RW",0);this.default_map.add_reg(this.m_reg_inten,`UVM_REG_ADDR_WIDTH'h8,"RW",0);endfunction:build endclass:reg_block 由此,一个reg_block类的对象就是我们所说的寄存器模型,并且通过访问这个reg_block对象,我们就可以访问其...
寄存器模型中的adapter就是一个适配器,提供了reg2bus和bus2reg的接口,充当uvm_reg_map和uvm_sequencer中的转换器。uvm_reg_map操作uvm_reg_bus_op类型的item,而uvm_sequencer操作uvm_sequence_item类型的item。 adapter 继承uvm_reg_adapter,重写reg2bus和bus2reg这两个pure virtual function。
· uvm_reg_addr_t base_addr,基地址 · int unsigned n_bytes,map包含的范围,以byte为单...
classenvextendsuvm_env;my_componentm_my_component;my_param_component#(.ADDR_WIDTH(32),.DATA_WIDTH(32))m_my_p_component;// Constructor & registration macro left out// Component and parameterized component create examplesfunctionvoidbuild_phase(uvm_phasephase);m_my_component=my_component::type_id...
class reg_item extends uvm_sequence_item; rand bit [`ADDR_WIDTH-1:0] addr; rand bit [`DATA_WIDTH-1:0] wdata; rand bit wr; bit [`DATA_WIDTH-1:0] rdata; // Use utility macros to implement standard functions // like print, copy, clone, etc `uvm_object_utils_begin(reg_item) ...