Добавить ignore_bins к уже определенным точкам укрытия

Я работаю с уже созданными coverpoints и covergroups. У меня есть способ получить доступ ко всем coverpoints в covergroup через `include файл, но я не могу редактировать coverpoints напрямую.

covergroup cg_FOO;
  apple: coverpoint Atype_e'(sample.apple.value);
  kiwi: coverpoint Ktype_e'(sample.kiwi.vale);

  `ifdef MY_COV
    `include "cg_FOO.svh"
  `endif
end group: cg_FOO

cg_FOO.svh является примером для этого covergroup, но с другим сгенерированным covergroup у меня есть отдельный связанный файл. Я определяю всевозможные crosses и несгенерированные coverpoints в этих `included файлах. Однако я также хочу указать определенные значения перечисления для coverpoints apple и kiwi, которые могут быть недопустимыми для cg_FOO.

Если бы я мог изменить каждую точку укрытия, я бы сделал следующее:

apple: coverpoint Atype_e'(sample.value) {
  ignore_bins ignore_FUJI = apple with (FUJI);
}

Но включение отдельного файла в каждый coverpoint каждого covergroup беспорядочно и нецелесообразно.

Все, что я нашел до сих пор, заставляет думать, что мне нужно указать ignore_bin внутри структуры coverpoint. Как я мог игнорировать определенные ячейки coverpoint из моего файла cg_FOO.svh (то есть в covergroup, но не изменять все сгенерированные coverpoints)?

Обратите внимание: у меня также есть 2 других файла `include для работы, один вне covergroups, но внутри класса, который их содержит (я использую этот файл для определений макросов, переменных и функций), и еще один файл для определения вспомогательной логики непосредственно перед covergroups получают выборку (т.е. когда определяется sample).


person Scott    schedule 09.10.2020    source источник
comment
Включаемые файлы уже содержат подборки или это просто coverpoint с автоматическими подборками?   -  person dave_59    schedule 10.10.2020
comment
Привет, Дейв, включенные файлы cg_ ‹covergroup_name› .svh содержат крестики точек прикрытия группы (я явно пишу здесь ignore_bins), а также пару собственных точек прикрытия. Покровители в этом файле автоматически создают бункеры, я не пишу их явно. Пример: overlap_apple_kiwi: coverpoint {overlap[0]} Примечание overlap определяется в других файлах `` include и устанавливается вызовом функции, также определенной в другом файле `include. Кажется, мой симулятор не позволяет мне определять логику или вызовы функций в covergroup или coverpoint, поэтому я использую эти файлы `` include.   -  person Scott    schedule 10.10.2020


Ответы (1)


Вам не повезло, если используемый вами инструмент не предоставляет API для доступа и изменения базы данных покрытия. Бункеры очень труднодоступны, потому что у них нет простых имен, чтобы ссылаться на них, вы должны сканировать их. Исключить точки укрытия извне очень легко, установив их вес на 0.

Не зная точно, как выглядит ваша модель покрытия, трудно дать вам лучший ответ.

person dave_59    schedule 09.10.2020
comment
Спасибо за оперативный отзыв, Дэйв. Я видел это ранее stackoverflow.com/questions/53612383/ , и отметили, что они исключили группы покрытия, также основанные на весах. Однако я хотел бы исключить бункеры (некоторые недопустимые перечисления). Так это другой вопрос StackOverflow, о котором вы тоже говорили, и мне просто не повезло, или вы имели в виду что-то еще с весами? - person Scott; 10.10.2020