Если у вас есть Simulink® Coder™ лицензии можно сгенерировать испытательный стенд универсальной методологии верификации (UVM) и дополнительные компоненты из модели Simulink. Генерация компонентов UVM обеспечивает прямой переход от окружения Simulink к среде UVM.
HDL Verifier™ экспортирует подсистемы Simulink как сгенерированный код C внутри компонентов UVM с интерфейсом прямого программирования (DPI). Можно интегрировать эти сгенерированные компоненты в существующее окружение UVM. Можно также использовать сгенерированные испытательные стенды UVM для тестирования HDL DUT путем замены сгенерированных поведенческих DUT подробными HDL- проекта.
Ваша модель Simulink должна включать эти подсистемы.
Подсистема DUT. Эта подсистема генерирует поведенческую модель SystemVerilog DPI (SVDPI) вашего DUT. Дополнительные сведения о генерации DPI SystemVerilog см. в разделе Генерация компонентов DPI с Simulink.
Подсистема последовательности. Эта подсистема создает стимул и управляет им к DUT.
Подсистема табло. Эта подсистема собирает и проверяет выходы DUT.
Последовательность может также привести сигналы непосредственно к табло, как показано красным цветом на рисунке структуры модели Simulink.
Для получения дополнительной информации о том, как создать подсистему, смотрите Создание Подсистем (Simulink).
Структура модели Simulink
В дополнение к предыдущей структуре можно опционально включать эти подсистемы.
Подсистема драйверов
Подсистема монитора
Подсистема предиктора
Примечание
Все подсистемы в модели Simulink должны иметь имена, которые начинаются с буквы и используют комбинацию алфавитно-цифровых символов и подчеркивания.
При добавлении подсистемы монитора, драйвера или предиктора эта функция поддерживает эти строения.
Все сигналы, поступающие из последовательности, должны быть подключены к драйверу, предиктору или табло. Другие выходные сигналы игнорируются для генерации UVM.
Если ваша модель включает подсистему драйвера, все сигналы, поступающие от драйвера, должны быть подключены к DUT.
Если ваша модель включает подсистему драйвера, то все входные сигналы драйверу должны начинаться в последовательности.
Если ваша модель включает подсистему монитора, то все сигналы, поступающие из DUT, должны быть подключены к монитору.
Если ваша модель включает подсистему монитора, то все сигналы, поступающие из монитора, должны быть подключены к табло.
Если ваша модель включает подсистему предиктора, то все входные сигналы предиктору должны начинаться в последовательности. Дополнительные входы игнорируются для генерации UVM.
Если ваша модель включает подсистему предиктора, то все выходные сигналы от предиктора должны соединяться с табло. Дополнительные выходы игнорируются для генерации UVM.
Это изображение показывает модель Simulink, которая включает драйвер, монитор и подсистему предиктора.
Поскольку генерация UVM использует технологию для генерации DPI SystemVerilog, сначала необходимо выбрать поддерживающий системный целевой файл. Откройте диалоговое окно параметров конфигурации и выберите Code Generation на левой панели. В качестве Системного целевого файла нажмите Browse, а затем выберите systemverilog_dpi_grt.tlc
из списка.
Кроме того, если у вас есть Embedded Coder® продукт, можно выбрать целевой systemverilog_dpi_ert.tlc
. Этот целевой объект позволяет вам получить доступ к дополнительным опциям генерации кода, когда вы выбираете Генерация кода в левой панели диалогового окна Параметры конфигурации.
Для примера генерации UVM смотрите Generate Parameterized UVM Test Bench из Simulink.
Используйте uvmbuild
функция для генерации этой структуры компонентов UVM.
Верхняя часть - Этот модуль создает экземпляры сгенерированного поведенческого DUT и тестового окружения. Верхний модуль имеет тактовые и сбросные сигналы, которые распространяются в проект.
DUT - поведенческий модуль проектирования под тестом генерируется из подсистемы Simulink DUT.
Тест - Этот модуль включает окружение UVM и класс последовательности.
Sequence - Этот объект UVM определяет набор транзакций. Объект последовательности генерируется из подсистемы последовательности Simulink.
Окружение - Этот модуль включает агент и сгенерированное табло, и, опционально, предиктор.
Табло - табло UVM генерируется из подсистемы табло Simulink. Табло сравнивает ожидаемые результаты с выходом из DUT.
Агент - Агент UVM включает секвенсор, драйвер и монитор. Если существует прямой путь от подсистемы последовательности Simulink до подсистемы табло Simulink, для мониторинга этого сигнала включается дополнительный монитор, проиллюстрированный красным цветом на рисунке.
Sequencer - Этот модуль управляет потоком транзакций последовательности в DUT.
Драйвер - Этот модуль генерируется из подсистемы драйвера Simulink и преобразует каждую транзакцию из Последовательности в сигналы, которые понимает поведенческое DUT.
Монитор - Этот модуль генерируется из подсистемы монитора Simulink, и он производит выборку сигналов от поведенческого DUT и генерирует транзакции, которые отправляются на табло UVM.
Вход монитора - Этот модуль генерируется, если у вас есть предиктор или прямое подключение от последовательности к подсистеме табло. Вход монитора отбирает сигналы из последовательности и генерирует транзакции, которые передаются в предиктор UVM или табло.
Предиктор - Этот модуль генерируется из подсистемы предиктора Simulink. Предиктор представляет золотую модель DUT. Он получает входы из последовательности, вычисляет результаты и направляет результаты на табло для сравнения с результатами DUT.
Дополнительные сведения о компонентах и структуре UVM см. в руководстве по ссылке UVM.
При генерации компонентов UVM HDL Verifier генерирует компоненты SystemVerilog DPI (SV-DPI) из подсистем DUT, последовательности и табло, а также дополнительные компоненты SV-DPI для подсистем драйвера, монитора или предиктора, если ваша модель Программные продукты генерации DPI помещаются в директорию с именем uvm_build
в рабочей директории, который включает эти две директории:
- Эта директория включает все сгенерированные компоненты DPI.top_model
_dpi_components
- Эта директория включает тестовый набор UVM, сгенерированный DUT и общие библиотеки.top_model
_uvm_testbench
Где
- имя вашей модели Simulink верхнего уровня. Вы можете изменить директорию по умолчанию, установив top_model
buildDirectory
свойство в uvmcodegen.uvmconfig
объект строения.
The
директория содержит директории для каждой из подсистем в верхней модели (DUT, последовательность, табло, драйвер, монитор или предиктор) с именем top_model
_dpi_components
. Каждая директория включает в себя:subsystem
_build
- файл пакета SystemVerilog с объявлениями функций для компонентаsubsystem
_dpi_pkg.sv
- сгенерированный компонент SystemVerilogsubsystem
_dpi.sv
Компоненты DPI и заголовочные файлы с расширениями .c и .h
Метаданные и информационные файлы с расширениями .mat, .txt, .dmr, .tmw и .def
make-файл для компиляции компонентов в файлы .o и .so
The
директория включает несколько подпапок для различных сгенерированных компонентов UVM:top_model
_uvm_testbench
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 из
папка. Эта папка также включает класс табло UVM, объект строения табло и транзакцию табло, которая определяет тип входной транзакции для табло.scoreboard
_build
sequence
- Эта папка содержит копию пакета SystemVerilog и файл .dll из
папка. Эта папка также включает класс последовательности UVM и транзакцию последовательности, которая определяет тип транзакции от секвенсора к драйверу.sequence
_build
top
- Эта папка содержит пакет SystemVerilog и файлы модулей для верхней модели Simulink. Эта папка также содержит скрипты для выполнения симулятора HDL.
uvm_artifacts
- Эта папка содержит эти файлы SystemVerilog.
- Этот файл включает агента UVM, который создает экземпляры последовательности, драйвера и монитора.mw_<reservedrangesplaceholder0 >
_agent.sv
- Этот файл включает окружение UVM, которая создает экземпляры агента и табло.mw_<reservedrangesplaceholder0 >
_environment.sv
- Этот файл определяет тип интерфейса DUT SystemVerilog. Он содержит входы и выходы DUT, а также порты для синхроимпульсов, сбросов и синхроимпульсов.mw_<reservedrangesplaceholder0 >
_if.sv
- Этот файл включает сквозной монитор UVM. Монитор производит выборку сигналов от драйвера на табло или предиктор.mw_<reservedrangesplaceholder0 >
_monitor_input.sv
- Этот файл включает тест UVM, который создает экземпляры окружения и последовательности. Тестовый модуль запускает транзакции путем вызова mw_<reservedrangesplaceholder0 >
_test.svseq.start
.
mw_dpi_types_pkg.sv
- Этот файл содержит определения сгенерированных типов SystemVerilog, таких как enum
и struct
, предоставляемый интерфейсами компонентов UVM. Этот пакет импортируются только те компоненты UVM, которые используют эти типы.
- Этот файл по умолчанию содержит сквозной драйвер UVM. При указании подсистемы драйвера в mw_<reservedrangesplaceholder0 >
_driver.svuvmbuild
функция, этот модуль включает планировщик и вызовы API к компоненту DPI
. Driver
_dpi_pkg.sv
- Этот файл включает сквозной монитор UVM. Монитор производит выборку сигналов от DUT на табло. При указании подсистемы монитора в mw_<reservedrangesplaceholder0 >
_monitor.svuvmbuild
функция, этот модуль включает планировщик и вызовы API к DPI-компоненту
. Monitor
_dpi_pkg.sv
На этом изображении показана сгенерированная структура директории для модели верхнего уровня с именем drv_and_mon_uvmtb
.
Поддерживаемые типы данных Simulink преобразуются в типы данных SystemVerilog, как показано в этой таблице.
Сгенерированные типы SystemVerilog
MATLAB® | SystemVerilog | ||
---|---|---|---|
Совместимый тип C | Логический вектор | Битовый вектор | |
uint8 | byte unsigned | logic [7:0] | bit [7:0] |
uint16 | shortint unsigned | logic [15:0] | bit [15:0] |
uint32 | int unsigned | logic [31:0] | bit [31:0] |
uint64 | longint unsigned | logic [63:0] | bit [63:0] |
int8 | byte | logic signed [7:0] | bit signed [7:0] |
int16 | shortint | logic signed [15:0] | bit signed [15:0] |
int32 | int | logic signed [31:0] | bit signed [31:0] |
int64 | longint | logic signed [63:0] | bit signed [63:0] |
boolean | byte unsigned | logic [0:0] | bit [0:0] |
фиксированная точка | Порт расширен до встроенного типа C, такого как |
Логическая длина вектора ( |
Длина вектора бита ( |
single | shortreal | ||
double | real | ||
complex | Можно выбрать между SystemVerilog | ||
векторы, матрицы | Можно выбрать между массивами SystemVerilog или скалярными портами. Чтобы выбрать между этими опциями, в левой панели диалогового окна Параметры конфигурации выберите Code Generation > SystemVerilog DPI, а затем выберите параметр Scalarize matrix and vector ports. Для примера - двухэлементный вектор типа input logic [31:0] vecInput [0:1] Когда вы выбираете Scalarize matrix and vector ports, сгенерированный SystemVerilog включает эти два порта, каждый из которых имеет тип input logic [31:0] vecInput_0, input logic [31:0] vecInput_1 При генерации портов вектора и массива кодер уплощает матрицы в основном порядке. | ||
невиртуальная шина | Можно выбрать между SystemVerilog | ||
перечисленные типы данных | enum |
По умолчанию HDL Verifier преобразует матрицы и векторы в одномерные массивы в SystemVerilog. Например, матрица 4 на 2 в Simulink преобразуется в одномерный массив из восьми элементов в SystemVerilog. Чтобы сгенерировать несколько скалярных портов в интерфейсе SystemVerilog, выберите Scalarize matrix and vector ports в параметрах конфигурации.
uvmbuild
функция игнорирует компоненты Simulink, которые не заданы как DUT, последовательность, табло, драйвер, монитор или предикторные подсистемы.
Можно использовать циклы обратной связи внутри любой из подсистем, но не между ними.
Последовательность, табло и предикторные подсистемы должны работать с одной скоростью, и основные шаги расчета их подсистем должны быть равными. Для получения дополнительной информации о сроках расчета смотрите Шаги расчета in Systems (Simulink).
Основные шаги расчета подсистем драйвера, DUT и монитора должны быть равными. Их порты могут быть многоразовыми, но наибольший общий делитель (GCD) или основной шаг расчета должны быть одинаковыми.
Шага расчета подсистем последовательности, табло и предиктора должны быть больше или равны основного шага расчета драйвера, DUT и монитора.