Универсальная методология проверки
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2023 г. ) |
Универсальная методология проверки ( UVM ) — это стандартизированная методология проверки проектов интегральных схем . UVM происходит главным образом от OVM ( методологии открытой проверки ), которая по большей части основана на eRM (методологии повторного использования электронных данных) для языка электронной проверки, разработанной Verisity Design в 2001 году. Библиотека классов UVM обеспечивает структуру и автоматизацию для язык SystemVerilog, такой как последовательности и функции автоматизации данных (упаковка, копирование, сравнение) и т. д., и в отличие от предыдущих методологий, разработанных независимо поставщиками EDA (автоматизация электронного проектирования), является стандартом Accellera с поддержкой нескольких поставщиков: Aldec, Cadence, Mentor Graphics (Siemens), Synopsys, Xilinx Simulator (XSIM).
История
[ редактировать ]В декабре 2009 года технический подкомитет Accellera — организации по стандартизации в отрасли автоматизации электронного проектирования (EDA) — проголосовал за создание UVM и решил основать этот новый стандарт на методологии открытой проверки (OVM-2.1.1). [1] методология проверки, разработанная совместно в 2007 году компаниями Cadence Design Systems и Mentor Graphics .
21 февраля 2011 г. Accellera утвердила версию UVM 1.0. [2] UVM 1.0 включает в себя Справочное руководство, Справочную реализацию в форме библиотеки базовых классов SystemVerilog и Руководство пользователя. [2]
Фабрика
[ редактировать ]Фабрика — это широко используемое понятие в объектно-ориентированном программировании. Это объект , который используется для создания экземпляров других объектов. Есть два способа зарегистрировать объект в фабрике UVM. В объявлении класса A можно вызвать макросы регистрации `uvm_object_utils(A) или `uvm_compent_utils(A). В противном случае макросы `uvm_object_registry(A,B) или `uvm_comComponent_registry(A,B) могут использоваться для сопоставления строки B с типом класса A. [3] Фабрика UVM предоставляет множество методов создания, которые позволяют пользователю создавать экземпляр объекта с определенным именем экземпляра и зарегистрированного типа. [4]
Секвенсор
[ редактировать ]Секвенсор отвечает за три основные функции:
- Переведите DUT (тестируемую конструкцию) и среду проверки в состояние инициализации.
- Настройка среды проверки и DUT
- Полная генерация сценария DUT
Инициализация
[ редактировать ]На этом этапе DUT (тестируемое устройство) и среда испытательного стенда должны быть настроены на желаемые начальные условия. Обычно это включает в себя:
- Загрузка памяти с любым типом необходимых начальных условий
- Начальные настройки контактов на тестируемом устройстве, такие как питание и высокое сопротивление.
- Настройки регистров, которые нельзя изменить во время моделирования, например биты режима или части регистров среды.
- Настройки компонента проверки, которые нельзя изменить во время моделирования.
Табло
[ редактировать ]Описание
[ редактировать ]Табло можно реализовать разными способами. Вообще говоря, табло принимает входные и выходные данные тестируемого устройства, определяет, каким должно быть соотношение входов и выходов, и оценивает, соответствует ли тестируемое устройство спецификации. Эта взаимосвязь ввода-вывода часто задается моделью, называемой предиктором. [3] Предиктор может быть реализован на языке программирования более высокого уровня, например SystemC.
Детали реализации
[ редактировать ]Классы табло UVM реализованы как подклассы класса uvm_scoreboard, который сам по себе является подклассом uvm_comComponent. uvm_scoreboard — это чистый лист для реализации табло. Он содержит только один метод класса, а именно «новый» метод конструктора. Остальная часть реализации определяется пользователем. [5]
Агент
[ редактировать ]Описание
[ редактировать ]В современных СБИС ИУ может иметь несколько интерфейсов. С каждым из этих интерфейсов могут быть связаны разные объекты UVM. Например, если DUT является полнокристальным, могут быть отдельные интерфейсы для PCI, Ethernet и других стандартов связи. Табло и монитор для интерфейса PCI будут отличаться от тех, что используются для интерфейса Ethernet. Различные объекты UVM могут быть организованы как члены класса-оболочки, известного как агент. Пассивные агенты будут анализировать только значения портов интерфейса и должны содержать член монитора. Активные агенты будут управлять портами и должны содержать член драйвера, возможно, в дополнение к члену монитора. [6]
Детали реализации
[ редактировать ]Классы агентов UVM реализованы как подклассы класса uvm_agent, который сам является подклассом uvm_comComponent. Как и uvm_scoreboard, uvm_agent упрощен с точки зрения методов класса. Его единственные методы класса — это «новый» конструктор и метод «get_is_active». Если агент используется для управления портами, get_is_active возвращает UVM_ACTIVE. В противном случае get_is_active возвращает UVM_PASSIVE.
Водитель
[ редактировать ]Описание
[ редактировать ]Элементы последовательности теста описываются абстрактно. Например, если DUT представляет собой файл регистров, он может иметь порты для адреса чтения и адреса записи. Объект элемента последовательности может иметь переменные-члены для адреса чтения и адреса записи. Однако эти значения в конечном итоге должны стать битами на входных контактах тестируемого устройства. [7] При подаче стимула на DUT может даже использоваться экзотическое кодирование, которое должно быть абстрагировано от остальной части агента. Ответственность драйвера состоит в том, чтобы взять эти элементы последовательности и обеспечить надлежащий стимул для портов DUT. [3]
Детали реализации
[ редактировать ]Классы драйверов UVM реализованы как подклассы класса uvm_driver, который сам по себе является подклассом uvm_comComponent. [5]
Определения
[ редактировать ]- Агент — контейнер, который эмулирует и проверяет устройства DUT.
- Блокировка — интерфейс, который блокирует задачи из других интерфейсов до их завершения.
- DUT — тестируемое устройство, что вы на самом деле тестируете
- DUV – устройство на проверке
- Компонент — часть проверяемой интеллектуальной собственности, имеющая интерфейсы и функции.
- Транзактор — см. компонент
- Конфигурация среды проверки — те настройки в тестируемом устройстве и среде, которые можно изменить во время моделирования.
- VIP – проверка интеллектуальной собственности
УВМ-макросы
[ редактировать ]UVM позволяет использовать макросы
имя | функция | связанный с | параметры | цель | Тип макроса |
---|---|---|---|---|---|
`uvm_create | конструктор объекта | `uvm_send | Последовательность или элемент | создать объект и позволить пользователю устанавливать значения посредством перегрузки или передачи параметров | Макрос последовательного действия |
`uvm_send | процессор | `uvm_create | Последовательность или элемент | обрабатывает то, что создано `uvm_create, без рандомизации | Макросы действий последовательности для уже существующих последовательностей |
`uvm_do | процессор | `uvm_create | Последовательность или элемент | выполняет класс или элемент с рандомизацией | Макрос последовательного действия |
Ссылки
[ редактировать ]- ^ «Обновление стандартизации VIP‐TSC» (PDF) . Архивировано из оригинала (PDF) 27 сентября 2011 г.
- ^ Jump up to: а б «Технический подкомитет по проверке интеллектуальной собственности (UVM)» . Архивировано из оригинала 15 августа 2011 г. Проверено 12 июля 2024 г.
- ^ Jump up to: а б с «Руководство пользователя по универсальной методологии проверки (UVM) 1.2» (PDF) . п. 130.
- ^ «Фабрика УВМ» .
- ^ Jump up to: а б «Справочник классов универсальной методологии проверки (UVM) 1.2» (PDF) . Июнь 2014.
- ^ «Быстрое внедрение UVM: практическая часть UVM» (PDF) . п. 10.
- ^ «Элемент последовательности UVM» .
Внешние ссылки
[ редактировать ]- Сайт Акселлера
- Учебное пособие по проверке Doulos UVM
- Accellera UVM: Готово, Настроено, Развертывание!
- EDA Playground — запускайте UVM-симуляции из веб-браузера (бесплатная онлайн-IDE)
- Справочник классов UVM 1.2
- Что нового в серии видео UVM 1.2