Hi,
I need help in getting the functional coverage for register model. I generated Register model package and covergroups for each register using the Register Assistant tool from Mentor Graphics. Small code snippet for single register covergroup as shown below:
Class register0_reg extends uvm_reg;
`uvm_object_utils(register0_reg);
rand uvm_reg_field port;
rand uvm_reg_field ack;
rand uvm_reg_field response;
Covergroup c1;
port: coverpoint port.value[4:0];
ack : coverpoint ack.value[5:0];
response: coverpoint response.value[1:0];
endgroup
function new(string name=" ");
super.new(name,build_coverage(UVM_CVR_FIELD_VALS));
add_coverage(build_coverage(UVM_CVR_FIELD_VALS));
if(has_coverage(UVM_CVR_FIELD_VALS)
c1=new();
endfunction
virtual function void sample_values();
super.sample_values();
if(get_coverage(UVM_CVR_FIELD_VALS))
c1.sample();
endfunction
virtual function void build();
port = uvm_reg_field::type_id::create(“port”);
ack = uvm_reg_field::type_id::create(“ack”);
response = uvm_reg_field::type_id::create(“response”);
port.configure();
ack.configure();
response.configure();
endfunction
endclass
In the base test class, I have written the following code:
function void proj_test_base::build_phase(uvm_phase build);
// Register model
uvm_reg::include_coverage(“*”, UVM_CVR_FIELD_VALS);
proj_rm = proj_reg_block::type_id::create(“proj_rm”);
proj_rm.build();
endfunction
In the makefile, I used the following command:
vsim -c tb_mem -coverage -do “run -a; coverage save cov.ucdb; vcover report -html cov.ucdb ;q”
But, Questasim tool was not able to generate any UCDB files related to coverage.
Is there any code should be written to get the Register coverage? Please help me…