Я пробовал это на 4 симуляторах, но не получил такого поведения, как вы. Так, например, это:
data_type3: coverpoint data_types
{
bins data_type_bins[] = {[data_types.first:data_type_2]};
}
дает мне 4 ячейки. Однако почему бы просто не использовать:
data_type2: coverpoint data_types;
и покончить с этим?
module M;
enum bit [7:0]
{
data_type_0 =8'd1,
data_type_1 =8'd16,
data_type_2 =8'd32,
data_type_3 =8'd64
} data_types;
covergroup CG;
option.per_instance=1;
data_type1: coverpoint data_types
{
bins data_type_bins[] = {[data_types.first:data_types.last]};
}
data_type2: coverpoint data_types;
data_type3: coverpoint data_types
{
bins data_type_bins[] = {[data_types.first:data_type_2]};
}
endgroup
CG cg = new;
initial
begin
data_types = data_type_0;
cg.sample();
data_types = data_type_2;
cg.sample();
$display("cg.data_type1 covereage = %0f", cg.data_type1.get_coverage());
$display("cg.data_type2 covereage = %0f", cg.data_type2.get_coverage());
$display("cg.data_type3 covereage = %0f", cg.data_type3.get_coverage());
end
endmodule
https://www.edaplayground.com/x/a2F