上面谈到的例化,在ctrl_reg中时在其构建函数中,通过has_coverage()来判断是否需要例化的。该方法会查询成员ctrl_reg::m_has_cover,是否具备特定的覆盖率类型,而该成员在例化时,已经赋予了初值UVM_CVR_ALL,即包含所有覆盖率类型,因此,value_cg可以例化。 在新扩充的sample()和sample_values()两个方法时,用户也...
has_coverage(UVM_CVR_FIELD_VALS)//has_coverage有条件例化covergroup 7.1 覆盖率自动收集 class ctrl_reg extends uvm_reg; `uvm_object_utils(ctrl_reg) uvm_reg_field reserved; rand uvm_reg_field pkt_len; rand uvm_reg_field prio_leve1; rand uvm_reg_field chnl_en; covergroup value_cg; option...
“0”上电后的复位值,“1”此域是否有复位,“1”是否可以随机化,“0”此域是否可单独存取 UVM_CVR_FIELD_VALS定义于uvm_coverage_model_e联合体中,还有定义UVM_NO_COVERAGE, UVM_CVR_REG_BITS, UVM_CVR_ADDR_MAP, UVM_CVR_ALL。 2)定义一组寄存器,如下: class block_reg extends uvm_reg_block; rand...
uvm_reg::include_coverage("*", UVM_CVR_ALL); env = new("env"); test = new("test"); svr = cs_.get_report_server(); svr.set_max_quit_count(10); run_test(); end endprogram output Command: /home/sopho/uvm-1.2-example/examples/simple/registers/models/coverage/simv +UVM_NO_RELNO...
super.new(name, UVM_CVR_ALL); ctrl = cfs_dut_reg_ctrl::type_id::create("ctrl"); status = cfs_dut_reg_status::type_id::create("status"); endfunction virtual function void build(); default_map = create_map(“default_map”,0,4,UVM_BIG_ENDINA,0); ...
该方法会查询成员ctrl_reg::m_has_cover,是否具备特定的覆盖率类型,而该成员在例化时,已经赋予了初值UVM_CVR_ALL,即包含所有覆盖率类型,因此,value_cg可以例化。 在新扩充的sample()和sample_values()两个方法时,用户也需要注意。sample()可以理解为read()、write()方法的回调函数,用户需要填充该方法,使得可以...
在例化时,已经赋予了初值UVM_CVR_ALL,即包含所有覆盖率类型,因此 value_cg可以例化。 在新扩充的sample()和sample_values()两个方法时: sample()可以理解为read()、write()方法的回调函数,用户需要填充该方 法,使得可以保证自动采样数据。 sample_values()是供用户外部调用的方法,在一些特定事件触发时,例 ...
("m_env_cfg"); // Register model // Enable all types of coverage available in the register model uvm_reg::include_coverage("*", UVM_CVR_ALL); // Register map - Keep reg_map a generic name for vertical reuse reasons pss_rb = pss_reg_block::type_id::create("pss_rb"); pss_rb...
//No functional coverage on this register//Similarly, we can set the functional coverage model as:// UVM_CVR_REG_BITS --> Individual register bits// UVM_CVR_ADDR_MAP --> Individual register and memory addresses// UVM_CVR_FIELD_VALS --> Fields value// UVM_CVR_ALL --> All coverage ...
value[0:0]; endgroup function new(string name = "ctrl_reg"); //默认的UVM_CVR_ALL代表包含所有覆盖率类型 super.new(name, 32, UVM_CVR_ALL); //设定可用或需要的覆盖模型,此处为field_value void'(set_coverage(UVM_CVR_FIELD_VALS)); //检查是否具备对应的cg if(has_coverage(UVM_CVR_FIELD_...