栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

在测试前通过前门配置寄存器

在测试前通过前门配置寄存器

1 定义一个sequence,里面对应的寄存器配置;

class case0_cfg_vseq extends uvm_sequence;

   `uvm_object_utils(case0_cfg_vseq)
   `uvm_declare_p_sequencer(my_vsqr)
   
   function  new(string name= "case0_cfg_vseq");
      super.new(name);
   endfunction 
   
   virtual task body();
      uvm_status_e   status;
      uvm_reg_data_t value;
      if(starting_phase != null) 
         starting_phase.raise_objection(this);
      p_sequencer.p_rm.invert.read(status, value, UVM_FRONTDOOR);
      `uvm_info("case0_cfg_vseq", $sformatf("invert's initial value is %0h", value), UVM_LOW)
      p_sequencer.p_rm.invert.write(status, 1, UVM_FRONTDOOR);
      p_sequencer.p_rm.invert.read(status, value, UVM_FRONTDOOR);
      `uvm_info("case0_cfg_vseq", $sformatf("after set, invert's value is %0h", value), UVM_LOW)
      if(starting_phase != null) 
         starting_phase.drop_objection(this);
   endtask

endclass

2  在uvm——test的类里面去 启动sequence

function void my_case0::build_phase(uvm_phase phase);
   super.build_phase(phase);

   uvm_config_db#(uvm_object_wrapper)::set(this, 
                                           "v_sqr.configure_phase", 
                                           "default_sequence", 
                                           case0_cfg_vseq::type_id::get());
   uvm_config_db#(uvm_object_wrapper)::set(this, 
                                           "v_sqr.main_phase", 
                                           "default_sequence", 
                                           case0_vseq::type_id::get());
endfunction

理解:

 rm.default_map.set_sequencer(env.bus_agt.sqr, reg_sqr_adapter);则定义了需要使用的是bus_sequencer;    因此在virsual sequence下,写寄存器的操作,之后在build_phase定义在v_sqr.configure_phase运行case0_cfg_vseq;


 rm.default_map.set_auto_predict(1);

另外:对于write的参数 p_sequencer.p_rm.invert.write(status, 1, UVM_FRONTDOOR);

1的值对应的是 uvm_reg_data_t,未默认的64bit的数

`ifndef UVM_REG_ADDR_WIDTH
`define UVM_REG_ADDR_WIDTH 64
`endif

typedef bit unsigned [`UVM_REG_DATA_WIDTH-1:0] uvm_reg_data_t ;

因此对应的多域的寄存器,这个value = 多位段的值;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号