Hi,
I have my functional coverage like this:
class mem_cov_grp;
virtual SysRegIntf;
covergroup walks();
level: coverpoint SysRegIntf.Addr {
bins MAX = {31- SysRegIntf.Tag};
bins MAX_PLUS_ONE = {31 - SysRegIntf.Tag + 1};
}
endgroup
function new (Virtual SysRegIntf);
this.SysRegIntf = SysRegIntf;
walks = new();
endfunction
function void sample ();
walks.sample();
endfunction
endclass
In this case, bin values are not static and vary depending on Tag bits in the interface. Is this allowed in system verilog?. It compiles well but the bin values are fozen to 31 - 0 = 30 for MAX and 31 - 0 + 1 to 32 to MAX_PLUS_ONE.