exponenta event banner

Обзор создания компонентов 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 Model Structure.

Дополнительные сведения о создании подсистемы см. в разделе Создание подсистем (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 используется технология для создания SystemVerilog DPI, необходимо сначала выбрать поддерживающий целевой файл системы. Откройте диалоговое окно параметров конфигурации и выберите «Создание кода» на левой панели. В поле Системный целевой файл нажмите кнопку Обзор, а затем выберите systemverilog_dpi_grt.tlc из списка.

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

Пример создания UVM см. в разделе Создание параметризованного испытательного стенда UVM из Simulink.

Созданная структура UVM

Используйте uvmbuild для создания этой структуры компонентов UVM.

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

  • DUT - модуль поведенческого проектирования и тестирования генерируется из подсистемы Simulink DUT.

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

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

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

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

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

  • Sequencer - этот модуль управляет потоком транзакций последовательности в DUT.

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

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

  • Monitor Input - этот модуль генерируется при наличии предиктора или прямого подключения от последовательности к подсистеме табло. Входной сигнал монитора отбирает сигналы из последовательности и генерирует транзакции, которые посылаются в 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 объект конфигурации.

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-file или so-file) из driver_build папка.

  • monitor (необязательно) - Эта папка создается, если вы указали подсистему мониторинга для uvmbuild функция. Эта папка содержит монитор UVM, копию пакета SystemVerilog и файл общей библиотеки (dll-file или so-file) из 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 к 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. Чтобы выбрать один из этих параметров, в левой панели диалогового окна «Параметры конфигурации» выберите «Создание кода» > «SystemVerilog DPI», а затем задайте для параметра «Составной тип данных» значение structure или flattened.

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

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

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

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

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

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

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

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

Вы можете выбрать между SystemVerilog struct введите или распрямленные порты для сигналов отдельных компонентов в интерфейсе SystemVerilog. Чтобы выбрать один из этих параметров, в левой панели диалогового окна «Параметры конфигурации» выберите «Создание кода» > «SystemVerilog DPI» и задайте для параметра «Composite data type» значение structure или flattened.

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

Ограничения

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

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

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

  • Подсистемы последовательности, табло и предсказателя должны работать с одной скоростью, а время основной выборки их подсистем должно быть равным. Дополнительные сведения о времени образца см. в разделе Время образца в системах (Simulink).

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

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

См. также

Связанные темы

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