[UVM]UVM环境搭建之 env

                                  UVM环境搭建之env

 

       前言:通常我们会在env中例化agent,Create RAL Model,Get Interface,Create Configure Object,Connect PORT。通常ENV该怎么部署比较好?本文将做一个详细的介绍。

 

一、声明Interface

virtual svt_apb_if                apb_mst_vif();
virtual dut_if                    dut_vif();

 

二、声明Configure Class

svt_clk_agent                    clk_agent[3];
svt_clk_cfg                      clk_cfg[3];
svt_rst_agent                    rst_agent[3];
svt_rst_cfg                      rst_cfg[3];

sys_ral_mode                     duv_ral_mode;
sys_cfg                          dut_cfg;

dut_scb                          dut_scb_i;
dut_sub                          dut_sub_i;
dut_vsqr                         dut_vsqr_i;

int                              slv_id;

 

三、Create Agent and RAL Model

  • Create Agent
function void dut_env::build_phase();

  foreach(clk_agent[i]) begin
    clk_agent[i] = svt_clk_agent::type_id::create($sformatf("clk_agent[%0d]", i), this);
  end

endfunction : build_phase


  • Create RAL Model
function void dut_env::build_phase();

  if(duv_ral_mode == null) begin
    uvm_reg::include_coverage("*", UVM_CVR_ALL);
    duv_ral_mode = sys_ral_mode::type_id::create("duv_ral_mode", this);
    duv_ral_mode.configure(null, "top.dut_i.uvm_dfedsb_top");
    duv_ral_mode.build();
    duv_ral_mode.set_coverage(UVM_CVR_ALL);
    duv_ral_mode.look_model();
    duv_ral_mode.reset();    //must add for initi CR Value
  end

endfunction : build_phase

 

除此外,还需要:

  • Create Reference Model
  • Create Scoreboard
  • Create Subscriber
  • Create APB Master/Slave

 

四、Connect PORT

function void dut_env::connect_phase();
  
endfunctiom : connect_phase 

 

五、Override report_phase

      主要目的是统计仿真过程中出现UVM_ERROR的次数,实现方法之前已经分享过了,此处不再赘述。

 

 

你可能感兴趣的:([UVM]UVM环境搭建之 env)