Обзор генерации компонента UVM

Обзор генерации компонента UVM

Если у вас есть лицензия Simulink® Coder™, можно сгенерировать испытательный стенд Универсальной методологии верификации (UVM) и дополнительные компоненты из модели Simulink. Генерация компоненты UVM включает прямой переход от вашего окружения Simulink до среды UVM.

HDL Verifier™ экспортирует Подсистемы Simulink как сгенерированный код C в компонентах UVM с интерфейсом программирования на машинном языке (DPI). Можно интегрировать эти сгенерированные компоненты в существующую среду UVM. Можно также использовать сгенерированный испытательный стенд UVM, чтобы протестировать HDL DUT, заменяя сгенерированный поведенческий DUT на подробный проект HDL.

Подготовьте модель Simulink к генерации компонента UVM

Ваша модель Simulink должна включать эти подсистемы.

  • Подсистема DUT. Эта подсистема генерирует SystemVerilog DPI (SVDPI) поведенческая модель вашего DUT. Для получения дополнительной информации о генерации SystemVerilog DPI, смотрите Генерацию Компонента DPI с Simulink.

  • Подсистема последовательности. Эта подсистема создает стимул и управляет им к DUT.

  • Подсистема табло. Эта подсистема собирает и проверяет выход DUT.

  • Последовательность может также управлять сигналами непосредственно к табло, как проиллюстрировано в красном на рисунке Структуры модели Simulink.

Для получения дополнительной информации о том, как создать подсистему, смотрите, Создают Подсистемы (Simulink).

Структура модели Simulink

Image shows a block diagram with a sequence, a DUT, and a scoreboard subsystem. An arrow connects from the sequence to the DUT, and another arrow connects from the DUT to the scoreboard.

В дополнение к предыдущей структуре можно опционально включать эти подсистемы.

  • Подсистема драйвера

  • Подсистема монитора

  • Подсистема предиктора

Примечание

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

При добавлении монитора, драйвера или подсистемы предиктора, эта функция поддерживает эти настройки.

  • Все сигналы, выходящие из последовательности, должны быть соединены с драйвером, предиктором или табло. Другие выходные сигналы проигнорированы для генерации UVM.

  • Если ваша модель включает подсистему драйвера, то все сигналы, выходящие из драйвера, должны быть соединены с DUT.

  • Если ваша модель включает подсистему драйвера, то все входные сигналы к драйверу должны произойти в последовательности.

  • Если ваша модель включает подсистему монитора, то все сигналы, выходящие из DUT, должны быть соединены с монитором.

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

  • Если ваша модель включает подсистему предиктора, то все входные сигналы к предиктору должны произойти в последовательности. Дополнительные входные параметры проигнорированы для генерации UVM.

  • Если ваша модель включает подсистему предиктора, то все выходные сигналы предиктора должны связать с табло. Дополнительные выходные параметры проигнорированы для генерации UVM.

Это изображение показывает модель Simulink, которая включает драйвер, монитор и подсистему предиктора.

Image shows a block diagram with a sequence, a DUT, and a scoreboard subsystem. There is a driver subsystem between the sequence and the DUT, a monitor subsystem between the DUT and the scoreboard, and a predictor subsystem between the sequence and the scoreboard.

Выберите System Target

Поскольку генерация UVM использует технологию для генерации SystemVerilog DPI, необходимо сначала выбрать системный конечный файл поддержки. Откройте диалоговое окно параметров конфигурации и выберите Code Generation из левой панели. Для Системного конечного файла нажмите Browse, и затем выберите systemverilog_dpi_grt.tlc из списка.

В качестве альтернативы, если у вас есть продукт Embedded Coder®, можно выбрать целевой systemverilog_dpi_ert.tlc. Эта цель позволяет опциям генерации дополнительного кода доступа, когда вы выбираете Code Generation из левой панели диалогового окна Configuration Parameters.

Для примера генерации UVM смотрите, Генерируют Параметрированный Испытательный стенд UVM от Simulink.

Сгенерированная структура UVM

Используйте uvmbuild функция, чтобы сгенерировать эту структуру компонентов UVM.

  • Верхняя часть – Этот модуль инстанцирует сгенерированного поведенческого DUT и тестовой среды. Главный модуль имеет часы и сигналы сброса, которые распространяют в проект.

  • DUT – поведенческий модуль проекта под тестом сгенерирован от вашей подсистемы DUT Simulink.

  • Тест – Этот модуль включает среду UVM и класс последовательности.

  • Объект Sequence - This UVM задает набор транзакций. Объект последовательности сгенерирован от вашей подсистемы последовательности Simulink.

  • Среда – Этот модуль включает агента и сгенерированное табло, и опционально предиктор.

  • Табло – табло UVM сгенерировано от вашей подсистемы табло Simulink. Табло сравнивает ожидаемые результаты с выходом от DUT.

  • Агент – агент UVM включает секвенсер, драйвер и монитор. Если прямой путь существует от подсистемы последовательности Simulink до подсистемы табло Simulink, дополнительный монитор, проиллюстрированный в красном на рисунке, включен, чтобы контролировать тот сигнал.

  • Секвенсер – Этот модуль управляет потоком транзакций последовательности к DUT.

  • Драйвер – Этот модуль сгенерирован от вашей подсистемы драйвера Simulink и преобразовывает каждую транзакцию от Последовательности до сигналов, что поведенческий DUT понимает.

  • Монитор – Этот модуль сгенерирован от вашей подсистемы монитора Simulink, и это производит сигналы от поведенческого DUT и генерирует транзакции, которые отправляются в табло UVM.

  • Вход монитора – Этот модуль сгенерирован, если у вас есть предиктор или прямая связь от последовательности до подсистемы табло. Монитор ввел выборки сигналы от последовательности, и генерирует транзакции, которые отправляются в предиктор UVM или табло.

  • Предиктор – Этот модуль сгенерирован от вашей подсистемы предиктора Simulink. Предиктор представляет золотую модель DUT. Это получает вход от последовательности, вычисляет результаты и управляет результатами к табло, чтобы выдержать сравнение с результатами DUT.

Для получения дополнительной информации о компонентах UVM и структуре, см. справочник UVM.

Сгенерированные файлы и структура папок

При генерации компонентов UVM HDL Verifier генерирует (SV-DPI) компоненты SystemVerilog DPI от DUT, последовательности, и подсистем табло, а также дополнительных компонентов SV-DPI для драйвера, монитора или подсистем предиктора, если модель включает их. Артефакты генерации DPI помещаются в директорию под названием uvm_build в вашей рабочей директории, которая включает эти две директории:

  • top_model_dpi_components – Эта директория включает все сгенерированные компоненты DPI.

  • top_model_uvm_testbench – Эта директория включает испытательный стенд UVM, сгенерированный DUT и совместно использованные библиотеки.

Где top_model имя вашей модели Simulink верхнего уровня. Можно изменить директорию по умолчанию путем установки buildDirectory свойство в uvmcodegen.uvmconfig объект настройки.

top_model_dpi_components директория содержит директории для каждой из подсистем в топ-модели (DUT, последовательность, табло, драйвер, монитор или предиктор) названный subsystem_build. Каждая директория включает:

  • subsystem_dpi_pkg.sv – Файл пакета SystemVerilog с объявлениями функции для компонента

  • subsystem_dpi.sv – Сгенерированный компонент SystemVerilog

  • DPI и заголовочные файлы компонента с расширениями.c и.h

  • Метаданные и информационные файлы с расширениями .mat, .txt, .dmr, .tmw, и .def

  • Make-файл для компиляции компонентов в.o и .so файлы

top_model_uvm_testbench директория включает несколько подпапок для различных сгенерированных компонентов UVM:

  • DPI_dut – Эта папка содержит копию пакета SystemVerilog, файлов модуля и .dll файла от dut_build папка.

  • driver (дополнительный) – Эта папка сгенерирована, если вы задали подсистему драйвера к uvmbuild функция. Эта папка содержит драйвер UVM, копию пакета SystemVerilog и совместно использованный файл библиотеки (dll-файл или таким-образом-файл) от driver_build папка.

  • monitor (дополнительный) – Эта папка сгенерирована, если вы задали подсистему монитора к uvmbuild функция. Эта папка содержит монитор UVM, копию пакета SystemVerilog и совместно использованный файл библиотеки (dll-файл или таким-образом-файл) от monitor_build папка.

  • predictor (дополнительный) – Эта папка сгенерирована, если вы задали подсистему предиктора к uvmbuild функция. Эта папка содержит предиктор UVM, копию пакета SystemVerilog, транзакции предиктора и совместно использованного файла библиотеки (dll-файл или таким-образом-файл) от predictor_build папка.

  • scoreboard – Эта папка содержит копию пакета SystemVerilog и .dll файла от scoreboard_build папка. Эта папка также включает класс табло UVM, объект настройки табло и транзакцию табло, которая задает тип входной транзакции для табло.

  • sequence – Эта папка содержит копию пакета SystemVerilog и .dll файла от sequence_build папка. Эта папка также включает класс последовательности UVM и транзакцию последовательности, которая задает тип транзакции с секвенсера на драйвер.

  • top – Эта папка содержит пакет SystemVerilog и файлы модуля для главной модели Simulink. Эта папка также содержит скрипты для выполнения симулятора HDL.

  • uvm_artifacts – Эта папка содержит эти файлы SystemVerilog.

    • mw_DUT_agent.sv – Этот файл включает агента UVM, который инстанцирует последовательности, драйвера и монитора.

    • mw_DUT_environment.sv – Этот файл включает среду UVM, которая инстанцирует агента и табло.

    • mw_DUT_if.sv – Этот файл задает тип интерфейса DUT SystemVerilog. Это содержит вводы и выводы DUT, а также порты для часов, сброса, и часы - включают сигналы.

    • mw_DUT_monitor_input.sv – Этот файл включает передачу монитор UVM. Выборки монитора сигнализируют с драйвера на табло или предиктор.

    • mw_DUT_test.sv – Этот файл включает тест UVM, который инстанцирует среды и последовательности. Тестовый модуль запускает транзакции путем вызова seq.start.

    • mw_dpi_types_pkg.sv – Этот файл содержит определения сгенерированных типов SystemVerilog, такие как enum и struct, отсоединенный интерфейсами компонента UVM. Только компоненты UVM, которые используют эти типы, импортируют этот пакет.

    • mw_DUT_driver.sv – Этот файл включает передачу драйвер UVM по умолчанию. При определении подсистемы драйвера к uvmbuild функция, этот модуль включает планировщик и вызовы API компонента DPI Driver_dpi_pkg.sv.

    • mw_DUT_monitor.sv – Этот файл включает передачу монитор UVM. Выборки монитора сигнализируют с DUT на табло. При определении подсистемы монитора к uvmbuild функция, этот модуль включает планировщик и вызовы API Monitor компонента DPI_dpi_pkg.sv.

Это изображение показывает сгенерированную структуру каталогов для модели верхнего уровня под названием drv_and_mon_uvmtb.

Generated directory structure for a top level model named drv_and_mon_uvmtb. A directory named "drv_and_mon_uvmtb_dpi_components" is expanded to show contents, and a directory named "drv_and_mon_uvmtb_uvm_testbench" is expanded to show contents.

Поддерживаемые типы данных Simulink

Поддерживаемые типы данных Simulink преобразованы в типы данных SystemVerilog, как показано в этой таблице.

Сгенерированные типы SystemVerilog

MATLAB®SystemVerilog
Совместимый тип CЛогический векторБитовый вектор
uint8byte unsignedlogic [7:0] bit [7:0]
uint16shortint unsignedlogic [15:0] bit [15:0]
uint32int unsignedlogic [31:0]bit [31:0]
uint64longint unsignedlogic [63:0]bit [63:0]
int8bytelogic signed [7:0]bit signed [7:0]
int16shortintlogic signed [15:0]bit signed [15:0]
int32intlogic signed [31:0]bit signed [31:0]
int64longintlogic signed [63:0]bit signed [63:0]
booleanbyte unsignedlogic [0:0]bit [0:0]
фиксированная точка

Порт является знаком, расширенным к встроенному типу C, такому как int, int unsigned, byte, byte unsigned, и т.д.

logic [n-1:0]

logic signed [n-1:0]

Логическая длина вектора (n) равно wordlength. Знак наследован от типа фиксированной точки.

bit [n-1:0]

bit signed [n-1:0]

Длина битового вектора (n) равно wordlength. Знак наследован от типа фиксированной точки.

singleshortreal
doublereal
complex

Можно выбрать между SystemVerilog struct тип данных или сглаженные порты для действительных и мнимых частей в интерфейсе SystemVerilog. Чтобы выбрать между этими опциями, на левой панели диалогового окна Configuration Parameters, выбирают Code Generation> SystemVerilog DPI, и затем устанавливают параметр Composite data type на structure или flattened.

векторы, матрицы

Можно выбрать между массивами SystemVerilog или скалярными портами. Чтобы выбрать между этими опциями, на левой панели диалогового окна Configuration Parameters, выбирают Code Generation> SystemVerilog DPI, и затем выбирают параметр Scalarize matrix and vector ports.

Например, двухэлементный вектор из типа uint32 в Simulink генерирует этот порт вектора SystemVerilog:

input logic [31:0] vecInput [0:1]

Когда вы выбираете Scalarize matrix and vector ports, сгенерированный SystemVerilog включает эти два порта, каждый тип logic [31:0]:

input logic [31:0] vecInput_0,
input logic [31:0] vecInput_1

При генерации векторных и портов массива кодер сглаживает матрицы в порядке развертывания по столбцам.

невиртуальная шина

Можно выбрать между SystemVerilog struct введите или сглаженные порты для отдельных сигналов компонента в интерфейсе SystemVerilog. Выбрать между этими опциями, на левой панели диалогового окна Configuration Parameters, избранного раздела Code Generation> SystemVerilog DPI, и установить Composite data type на structure или flattened.

перечислимые типы данныхenum

Ограничения

  • По умолчанию HDL Verifier преобразует матрицы и векторы к одномерным массивам в SystemVerilog. Например, 4 2 матрица в Simulink преобразована в одномерный массив восьми элементов в SystemVerilog. Чтобы сгенерировать несколько скалярных портов в интерфейсе SystemVerilog, выберите Scalarize matrix and vector ports в параметрах конфигурации.

  • uvmbuild функция игнорирует компоненты Simulink, которые не заданы как DUT, последовательность, табло, драйвер, монитор или подсистемы предиктора.

  • Можно использовать обратную связь в любой из подсистем, но не между ними.

  • Последовательность, табло и подсистемы предиктора должны действовать на одном уровне, и основные шаги расчета их подсистем должны быть равными. Для получения дополнительной информации о шагах расчета, смотрите Шаги расчета в Системах (Simulink).

  • Основные шаги расчета драйвера, DUT и подсистем монитора должны быть равными. Их порты могут быть многоскоростными, но наибольший общий делитель (GCD) или основной шаг расчета должны быть тем же самым.

  • Шаг расчета последовательности, табло и подсистем предиктора должен быть больше или быть равен основному шагу расчета драйвера, DUT и монитора.

Смотрите также

Похожие темы

Внешние веб-сайты

Для просмотра документации необходимо авторизоваться на сайте