Specman e: Как отключить покрытие экземпляров / единиц?

В моей среде проверки под sys есть пример timer_sve, Под timer_sve У меня есть 2 других экземпляра: timer а также ocp_master:

extend sys {
    timer_sve : timer_sve_u is instance;
};

unit timer_sve_u {
    timer       : timer_u is instance;
    ocp_master  : ocp_u is instance;
};

Мне нужно собрать покрытие только для timer, Я пробовал этот код (и многие другие его варианты), чтобы отключить покрытие ocp_master:

extend sys {
    timer_sve : timer_sve_u is instance;

    setup() is also { // The code to disable ocp_master's coverage
        global.covers.set_cover_block("ocp_u", FALSE);
    };
};

Код скомпилирован и успешно запущен, но он продолжает собирать данные для ocp_master... Как я могу отключить сбор ocp_master охват? Очень ценю вашу помощь.

1 ответ

Решение

Метод set_cover_block(...) не принимает единицу в качестве входных данных, но модуль (то есть файл), в котором были определены элементы покрытия. Попробуйте изменить его, чтобы взять файл, в котором вы расширяете ocp_u с определениями покрытия.

Что я также делаю, чтобы отключить определенные элементы покрытия / группы / и т. Д. установлен when возможность FALSE:

extend some_struct {
  cover some_cover using also
    when = FALSE;
};

Некоторые предположения с моей стороны:

Отключение покрытия с помощью set_cover_block(...) вероятно, не будет использовать исключенный код для покрытия (т. е. полностью игнорирует определения покрытия) и ускорит выполнение моделирования, чем отключив его с помощью when вариант.

Другие вопросы по тегам