class reg_functional_coverage extends uvm_subscriber #(axi_seq_item);
`uvm_component_utils(reg_functional_coverage)
axi_reg_block regmodel;
covergroup reg_rw_cov;
option.per_instance = 1;
MODE: coverpoint regmodel.my_Register[1:0];
RW: coverpoint regmode.my_Register[7];
RW_CROSS: cross MODE, RW;
endgroup: reg_rw_cov
covergroup reg_rw_cov;
endclass
my_Register is 8 bit. Register model contains 128 instances of my_Registers in following order
Four my_Registers are arranged in 32 bit row and there are 32 rows as shown below,
bit 31 ....................................bit0
row 0 my_Register_3 my_Register_2 my_Register_1 my_Register_0
row 1 ................................................
.
.
row 31 my_Register_127 my_Register_126 my_Register_125 my_Register_124
Access to any of these 32*4=128 my_Register should collect coverage.
I can not split my_Register in to 128 covergorups and collect coverage since Multiple covergroups can not be combined.
What is the best approach? Do you have any example?