In reply to Rahulkumar:
There is only one coverpoint for data and here is the code:
module transition_bins;
bit [3:0] data;
longint count;
covergroup cg;
c1: coverpoint data {
/*bins d1[] = (9 => 3);
bins d2[] = (4 => 8 => 12);
bins d3[] = (2,3 => 4,5);
bins d4[] = (2,3,4 => 5,6,7);
bins d5[] = (4'hd[*2] => 5,6,7);
bins d6[] = (7[*2:4]);
bins d7 = (9 => 5[->3] => 11);
bins d8 = (12 => 15[=3] => 10);*/ //this is working fine
bins d1[1] = (9 => 3);
bins d2[] = (4 => 8 => 12);
bins d3[] = (2,3 => 4,5);
bins d4[] = (2,3,4 => 5,6,7);
bins d5[] = (4'hd[*2] => 5,6,7);
bins d6[] = (7[*2:4]);
bins d7 = (9 => 5[->3] => 11);
bins d8 = (12 => 15[=3] => 10); //this throws an error
}
endgroup: cg
initial
begin
cg c = new;
count = 0;
while (c.get_inst_coverage != 100.0000)
begin
count++;
data = $random;
$display("\ndata = %0h",data);
c.sample();
end
$display("\n\n*********[FOREVER LOOP ITERATED %0d TIMES]*********",count);
$display("\n\t\tCoverage: %0.4f%%",c.get_inst_coverage);
$display("\nThe number of repetetions needed for %0.4f%% coverage is exactly %0d",c.get_inst_coverage,count);
end
endmodule
Here is the error:
Fatal: (vsim-8541) A fixed-size array transition bin ‘d1’ is found in Coverpoint ‘c1’ of Covergroup instance '/transition_bins/#ublk#243269587#36/c '. It is illegal to have such fixed-szie array transition bin per LRM.