Точки прикрытия в Системе Verilog - PullRequest
0 голосов
/ 04 декабря 2018

Можно ли исключить некоторые точки покрытия из определенной группы на основе параметра?

covergroup NEW (string for_exclusion) @ (clk);
option.per_instance = 1;
option.comment = for_exclusion;

apples: coverpoint (available) { bins hit1 = {1'b1};}
bananas: coverpoint ({not_available, less}) {bins hit1 = {1'b1};}
oranges: coverpoint ({available, less}) {bins hit1 = {1'b1};}
rose: coverpoint ({available, flower}) {bins hit1 = {1'b1};}

Это небольшая часть исходного файла.Я хочу исключить «розу» из этой группы на основе параметра параметр IDENTITY = 2'b00 , который я уже передал в модуль.Есть ли способ сделать это?(Пожалуйста, игнорируйте синтаксические ошибки, если они есть. Я не беспокоюсь о них сейчас)

Я пытался использовать это, но это не сработало.

covergroup NEW (string for_exclusion) @ (clk);
option.per_instance = 1;
option.comment = for_exclusion;

apples: coverpoint (available) { bins hit1 = {1'b1};}
bananas: coverpoint ({not_available, less}) {bins hit1 = {1'b1};}
oranges: coverpoint ({available, less}) {bins hit1 = {1'b1};}

generate
if (IDENTITY = 2'b01) begin
rose: coverpoint ({available, flower}) {bins hit1 = {1'b1};}
end
endgenerate`

1 Ответ

0 голосов
/ 04 декабря 2018

Вы не можете использовать generate в середине объявления другой конструкции.Можете ли вы отделить эту точку покрытия от другой группы покрытия и не создавать / не выбирать ее на основе другого параметра?

Другой вариант - установить вес точки покрытия на 0 на основе параметра.Вы можете сделать это в процедурном коде до или после создания группы покрытия.

if (IDENTITY != 2'b01)
  NEW::rose::type_option.weight = 0;

или внутри точки покрытия

rose: coverpoint ({available, flower}) {
  bins hit1 = {1'b1};
  option.weight = (IDENTITY == 2'b01};
}
...