«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

OVM/OVM методология/Механика OVM/4.8

Материал из Wiki
< OVM‎ | OVM методология‎ | Механика OVM
Версия от 20:42, 23 марта 2013; Vidokq (обсуждение | вклад)

Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Перейти к: навигация, поиск

Содержание

Тестирование и тестовые окружения

Благодаря правильному использованию конфигураций, для производство, и поэтапного процесса разработки, можно создать тестбенч для верификации, что позволяет подавать случайные воздействия больше, чем просто сгенерированный stimuls. Например, если тестбенч написан, чтобы количество драйверов на шине можно настраивать, то же тестбенч может быть повторно использован на нескольких тестах, каждый из которых может указать другой (возможно, случайно) число драйверов. Как вы можете видеть, гибкость OVM позволяет запускать каждую из этих различных тестов без изменения тестбенча. OVM также обеспечивает явные ovm_test классы в качестве контейнера для испытаний. Как правило, на top-level модуль будет экземпляром ovm_test, который в свою очередь настраивает и создает тестбенч. Дополнительные тесты могут быть написаны как расширения базовым тестам, которые включают новую конфигурацию и директивы factory, в результате чего сами тесты относительно короткий, четкий и простой в обслуживании. В действительности, ovm_test это просто другое расширение ovm_component. Поскольку тесты и testbenches просто компонентами, они тоже могут быть созданы и переопределены через factory.

Sc g 4.8 p1.png

Диаграмма UML выше иллюстрирует отношения между тестом и окружением. И тесты и окружение (ENV) компоненты. Тест содержит окружение. Среда содержит top-level компонет тестбенча и их соединений. Для определенния окружения, вы может хотите иметь несколько тестов. Кроме того, для конкретного теста, вы, возможно, пожелаете осуществлять его на твои окружения. factory позволяет менять тесты, окружения, или то и то.

4.9 Reporting

OVM предоставляет богатый набор классов и функций для генерации и фильтрации сообщений. Объекты OVM типа сообщения содержит три вида функций:

  • Отображение сообщений в едином порядке по различным направлениям
  • Фильтрация сообщений
  • Изменение потока управления в результате сообщения в печати

4.9.1 Базовые сообщения (Basic Messaging)

Basic Messaging ovm_component является объектом отчета, то есть он наследует от ovm_report_object. ovm_report_object, полученных от ovm_object, является базовым классом, который содержит все функции, которые вы будете использовать для выпуска и управления сообщениями. Четыре основные функции по выдаче сообщения:
function void ovm_report_info( string id,
                              string message,
                              int verbosity = OVM_MEDIUM,
                              string filename = "",
                              int line = 0);
function void ovm_report_warning( string id,
                                 string message,
                                 int verbosity = OVM_MEDIUM,
                                 string filename = "",
                                 int line = 0);
function void ovm_report_error( string id,
                               string message,
                               int verbosity = LOW,
                               string filename = "",
                               int line = 0);
function void ovm_report_fatal( string id,
                               string message,
                               int verbosity = OVM_NONE,
                               string filename = "",
                               int line = 0);

Каждая из этих четырех функций выдает сообщение, которое имеет несколько компонентов: статус, уровень детализации, идентификатор, сообщение, имя файла и номер строки.

Статус. Статус сообщение может принимать значения OVM_INFO, OVM_WARNING, OVM_ERROR, или OVM_FATAL. Выбор тяжести меняет окончательный текст, который напечатан тексте в котором указана серьезность. Это также влияет на то, как сообщение обрабатывается. Например, вызов ovm_report_fatal заканчивает выполнения тестбенча. Другие способы, в которых статус влияет на обработку сообщений, обсуждаются в разделе 4.9.2.

Идентификатор сообщения содержит произвольную строку, которая используется для идентификации строк. Идентификатор печатается как часть текста сообщения, и это также влияет на сообщения обрабатываются.

Сообщение. Сообщение тело текстового сообщения.

Уровень детализации. Уровень детализации сообщения является произвольным числом, которое по отношению к текущей настройки детализации является порогом, после которого сообщения с уровень детализации на уровне или ниже порога будут напечатаны, а те что выше, будут игнорироваться. Это способ фильтрации сообщений. Вы можете задать свой порог для тестбенча. Функция для изменения уровня порога set_report_verbosity_level (INT уровень).

Имя файла и номер строки. Это необязательные аргументы, роль которого заключается в обеспечении файла и номер строки содержащем информацию о произошедшем событии.

4.9.2 Сообщения о событиях (Message Actions)

Message Actions ставит соответствие каждому сообщению действие, которые определяют, как именно она обрабатывается. Действие представлено битовым вектором, в котором каждый бит представляет одно из возможных действий. Вы можете задать несколько действий, включив один или более битов в векторе. Таким образом, вы не должны помнить, какой бит за что отвечает, OVM умеет выполнять действия перечисления, которое можно использовать, чтобы указать действие. В следующей таблице описываются возможные действия:

Action Definition
NO_ACTION Do not execute an action.
OVM_DISPLAY Display the message on the standard output device.
OVM_LOG Send the message to a file.
OVM_COUNT Increment quit_count. When quit_count reaches a predetermined threshold, terminate the testbench.
OVM_EXIT Terminate the testbench immediately.
OVM_CALL_HOOK Call the appropriate hook function.
OVM_STOP Call $stop after the message has been processed.