WikiDer > Универсальная методология проверки

Universal Verification Methodology

В Универсальная методология проверки (UVM) - это стандартизированная методология проверки Интегральная схема конструкции. UVM происходит в основном от OVM (Методология открытой проверки), который в значительной степени основывался на eRM (e Методология повторного использования) для e Язык подтверждения разработан Verisity Design в 2001 году. Библиотека классов UVM значительно автоматизирует SystemVerilog язык, такой как последовательности и функции автоматизации данных (упаковка, копирование, сравнение) и т. д., и в отличие от предыдущих методологий, разработанных независимо поставщиками симуляторов, является стандартом Accellera с поддержкой нескольких поставщиков: Aldec, Cadence, Mentor Graphics и Synopsys.

История

В декабре 2009 года технический подкомитет Accellera - организация по стандартизации в автоматизация проектирования электроники (EDA) - проголосовали за создание UVM и решили основать этот новый стандарт на методологии открытой проверки (OVM-2.1.1),[1] методология проверки, разработанная совместно в 2007 г. Системы дизайна Cadence и Наставник Графика.

21 февраля 2011 года Accellera утвердила версию 1.0 UVM.[2] UVM 1.0 включает справочное руководство, справочную реализацию в виде SystemVerilog библиотека базовых классов и руководство пользователя.[2]

Фабрика

А фабрика - широко используемая концепция в объектно-ориентированном программировании. Это объект который используется для создания экземпляров других объектов. Есть два способа зарегистрировать объект в фабрике UVM. В объявлении класса A можно вызвать макросы регистрации uvm_object_utils (A) или uvm_component_utils (A). В противном случае макросы uvm_object_registry (A, B) или uvm_component_registry (A, B) могут использоваться для сопоставления строки B с типом класса A [3]. Фабрика UVM предоставляет множество методов создания, которые позволяют пользователю создавать экземпляр объекта с определенным именем экземпляра и зарегистрированного типа. [4].

Секвенсор

Секвенсор отвечает за три основные функции:

  • Переведите DUV (Design Under Verification) и среду проверки в состояние инициализации.
  • Настройка среды верификации и DUV
  • Генерация всего сценария DUV

Инициализация

На этом этапе DUT (тестируемое устройство) и среда, в которой оно находится, должны быть настроены на условия, желаемые перед симуляцией. Вероятно, сюда входят:

  • Загрузка памяти с любыми необходимыми начальными условиями
  • Настройки контактов на тестируемом устройстве, такие как мощность и высокое сопротивление
  • Параметры регистра, которые нельзя изменить во время моделирования, например, биты режима или часть среды reg
  • Настройки компонента проверки, которые нельзя изменить во время моделирования

Табло

Описание

Табло может быть реализовано разными способами. Вообще говоря, табло принимает входы и выходы из DUT, определяет, каким должно быть соотношение вход-выход, и оценивает, соответствует ли DUT спецификации. Это отношение ввода-вывода часто определяется моделью, называемой предиктором. [5]. Предиктор может быть реализован на языке программирования более высокого уровня, таком как SystemC.

Детали реализации

Классы табло UVM реализованы как подклассы класса uvm_scoreboard, который сам является подклассом uvm_component. uvm_scoreboard - это чистый лист для создания табло. Он содержит только один метод класса, а именно «новый» метод конструктора. Остальная часть реализации определяется пользователем. [6].

Агент

Описание

В современных СБИС ИУ может иметь несколько интерфейсов. С каждым из этих интерфейсов могут быть связаны разные объекты UVM. Например, если DUT представляет собой полный кристалл, могут быть отдельные интерфейсы для PCI, Ethernet и других стандартов связи. Табло и монитор для интерфейса PCI будут отличаться от таковых для интерфейса Ethernet. Различные объекты UVM могут быть организованы как члены класса оболочки, известного как агент. Пассивные агенты будут анализировать только значения портов интерфейса и должны содержать элемент монитора. Активные агенты будут управлять портами и должны содержать член драйвера, возможно, в дополнение к члену монитора. [7].

Детали реализации

Классы агентов UVM реализованы как подклассы класса uvm_agent, который сам является подклассом uvm_component. Как и uvm_scoreboard, uvm_agent легковесен с точки зрения методов класса. Его единственными методами класса являются конструктор «new» и метод «get_is_active». Если агент используется для управления портами, get_is_active возвращает UVM_ACTIVE. В противном случае get_is_active возвращает UVM_PASSIVE.

Водитель

Описание

Пункты последовательности для теста описаны абстрактно. Например, если тестируемое устройство представляет собой регистровый файл, он может иметь порты для адреса чтения и адреса записи. Объект элемента последовательности может иметь переменные-члены для адреса чтения и адреса записи. Однако эти значения должны в конечном итоге стать битами на входных выводах DUT. [8]. Может даже использоваться экзотическая кодировка при предоставлении стимула для DUT, который следует абстрагировать от остальной части агента. Ответственность драйвера заключается в том, чтобы взять эти элементы последовательности и обеспечить надлежащий стимул для портов DUT. [5].

Детали реализации

Классы драйверов UVM реализованы как подклассы класса uvm_driver, который сам является подклассом uvm_component. [6].

Определения

  • Агент - контейнер, который имитирует и проверяет устройства DUT.
  • Блокировка - интерфейс, который блокирует задачи от других интерфейсов, пока не завершится.
  • DUT - Тестируемое устройство, что вы на самом деле тестируете
  • DUV - устройство проходит проверку
  • Компонент - часть интеллектуальной собственности проверки, которая имеет интерфейсы и функции.
  • Транзактор - см. Компонент
  • Конфигурация среды проверки - те настройки в тестируемом устройстве и среде, которые можно изменить во время моделирования.
  • VIP - проверка интеллектуальной собственности

Макросы UVM

UVM позволяет использовать макросы

имяфункцияотносится кпараметрыцельТип макроса
`uvm_createконструктор объекта`uvm_sendПоследовательность или элементчтобы создать объект и позволить пользователю устанавливать значения с помощью перегрузки или передачи параметровМакрос действия последовательности
`uvm_sendпроцессор`uvm_createПоследовательность или элементобрабатывает то, что создается uvm_create без рандомизацииМакросы действий последовательности для уже существующих последовательностей
`uvm_doпроцессор`uvm_createПоследовательность или элементвыполняет класс или элемент с рандомизациейМакрос действия последовательности

Рекомендации

  1. ^ Статус Accellera
  2. ^ а б http://www.accellera.org/activities/vip
  3. ^ «Руководство пользователя универсальной методологии проверки (UVM) 1.2» (PDF). п. 130.
  4. ^ https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.1a/html/files/base/uvm_factory-svh.html#uvm_factory.create_object_by_type
  5. ^ а б https://www.accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.2.pdf
  6. ^ а б https://www.accellera.org/images/downloads/standards/uvm/UVM_Class_Reference_Manual_1.2.pdf
  7. ^ «Быстрое внедрение UVM: практическая часть UVM» (PDF). п. 10.
  8. ^ https://verificationguide.com/uvm/uvm-sequence-item/

внешняя ссылка