Обзор генерации компонентов 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. Дополнительные сведения о генерации DPI SystemVerilog см. в разделе Генерация компонентов 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.

Выбор системного целевого объекта

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

Кроме того, если у вас есть Embedded Coder® продукт, можно выбрать целевой systemverilog_dpi_ert.tlc. Этот целевой объект позволяет вам получить доступ к дополнительным опциям генерации кода, когда вы выбираете Генерация кода в левой панели диалогового окна Параметры конфигурации.

Для примера генерации UVM смотрите Generate Parameterized UVM Test Bench из Simulink.

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

Используйте 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 в рабочей директории, который включает эти две директории:

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

  • top_model_uvm_testbench - Эта директория включает тестовый набор UVM, сгенерированный DUT и общие библиотеки.

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

The 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

The 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_<reservedrangesplaceholder0 >_agent.sv - Этот файл включает агента UVM, который создает экземпляры последовательности, драйвера и монитора.

    • mw_<reservedrangesplaceholder0 >_environment.sv - Этот файл включает окружение UVM, которая создает экземпляры агента и табло.

    • mw_<reservedrangesplaceholder0 >_if.sv - Этот файл определяет тип интерфейса DUT SystemVerilog. Он содержит входы и выходы DUT, а также порты для синхроимпульсов, сбросов и синхроимпульсов.

    • mw_<reservedrangesplaceholder0 >_monitor_input.sv - Этот файл включает сквозной монитор UVM. Монитор производит выборку сигналов от драйвера на табло или предиктор.

    • mw_<reservedrangesplaceholder0 >_test.sv - Этот файл включает тест UVM, который создает экземпляры окружения и последовательности. Тестовый модуль запускает транзакции путем вызова seq.start.

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

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

    • mw_<reservedrangesplaceholder0 >_monitor.sv - Этот файл включает сквозной монитор UVM. Монитор производит выборку сигналов от DUT на табло. При указании подсистемы монитора в uvmbuild функция, этот модуль включает планировщик и вызовы API к DPI-компоненту Monitor_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. Чтобы выбрать между этими опциями, в левой панели диалогового окна Параметров конфигурации выберите Code Generation > SystemVerilog DPI, а затем установите параметр Composite data type на structure или flattened.

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

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

Для примера - двухэлементный вектор типа uint32 in 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. Чтобы выбрать между этими опциями, в левой панели диалогового окна Параметры конфигурации выберите 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, последовательность, табло, драйвер, монитор или предикторные подсистемы.

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

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

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

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

См. также

Похожие темы

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