一个uvm_reg_block中一定要对应一个uvm_reg_map,系统已经有一个声明好的default_map,只需要在build中通过调用uvm_reg_block的create_map来将其实例化,create_map有众多的参数,其中第一个参数是名字,第二个参数是基地址,第三个参数则是系统总线的宽度,这里的单位是byte而不是bit,第四个参数是大小端,最后一个...
// map name, offset, number of bytes, endianess map = create_map("map", 'h0, 4, UVM_LITTLE_ENDIAN);//base_addr + offset_addr //uvm_reg_map也会在uvm_reg_block中例化,在例化之后需要通过uvm_reg_map::add_reg()函数来添加各个uvm_reg对应的偏移地址和访问属性等。只有规定了这些属性,才可以...
26 default_map = create_map("default_map", 0, 2, UVM_BIG_ENDIAN, 0); 27 28 invert = reg_invert::type_id::create("invert", , get_full_name()); 29 invert.configure(this, null, ""); 30 invert.build(); 31 default_map.add_reg(invert, 'h9, "RW"); 32 endfunction 33 34 `...
uvm_reg_map:每个寄存器在加入寄存器模型时都有其地址,uvm_reg_map 就是存储这些地址,并将其转换成可以访问的物理地址(因为加入寄存器模型中的寄存器地址一般都是偏移地址,而不是绝对地址)。当寄存器模型使用前门访问方式来实现读或写操作时,uvm_reg_map 就会将地址转换成绝对地址,启动一个读或写的 sequence,...
();default_map=create_map("",0,4,UVM_LITTLE_ENDIAN,0);ctrl=ral_cfg_ctl::type_id::create("ctrl",get_full_name());ctrl.configure(this,null,"");ctrl.build();//HDL path to this instance is tb.DUT.ctrl_reg//Add backdoor access using function add_hdl_path_slice// function void ...
右边是真实硬件实现,左边是软件模型硬件里面所有的寄存器都要从软件里面构建起来;所有硬件信息都在map里面要构建起来; 利用软件的寄存器模型,可以做驱动 1、一个寄存器以由多个域构成,而单个域可以包含多个比特位;一个功能模中的多个寄存器可以组团构成一个寄存器模型(register model)。示图中除子包含DUT的寄存器模块(由...
(1) 一个uvm_reg_block一定要对应一个uvm_reg_map; 系统已经有一个声明好的default_map,只需在uvm_reg_block的build中将其实例化; (2) uvm_reg_map的实例化,并不是直接调用其new函数,而是通过调用uvm_reg_block的create_map函数来实现; 1default_map=create_map("default_map",0,2,UVM_BIG_ENDIAN,0...
())this.default_map=create_map("",0,4,UVM_LITTLE_ENDIAN,0);this.m_reg_ctrl=reg_ctrl::type_id::create("m_reg_ctrl",this);this.m_reg_stat=reg_stat::type_id::create("m_reg_stat",this);this.m_reg_inten=reg_inten::type_id::create("m_reg_inten",this);// Configure every ...
create_map,用于uvm_reg_block直接定义,创建并且配置一个uvm_reg_map对象,相关配置由本函数的参数提供...
寄存器模型中的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。