Генерация компонента DPI с MATLAB

Можно экспортировать функцию MATLAB® как компонент с интерфейсом программирования на машинном языке (DPI) для использования в симуляции SystemVerilog. Перенесите сгенерированный код C с оберткой DPI, которая передает с SystemVerilog тонкую функцию интерфейса в симуляции SystemVerilog.

Для MATLAB вы генерируете компонент с помощью функции dpigen.

Примечание

У вас должна быть лицензия MATLAB Coder™, чтобы использовать эту функцию.

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

Поддерживаемые типы данных MATLAB преобразованы в типы данных SystemVerilog, как показано в следующей таблице.

MATLAB SystemVerilog
uint8byte unsigned
uint16shortint unsigned
uint32int unsigned
uint64longint unsigned
int8byte
int16shortint
int32int
int64longint
singleshortreal
doublereal
logicalbyte unsigned
fi (тип данных с фиксированной точкой)

Зависит от размера слова фиксированной точки. Если размер слова фиксированной точки является больше, чем размер слова хоста (например, 64-битным по сравнению с 32-битным), то этот тип данных не может быть преобразован в тип данных SystemVerilog MATLAB Coder, и вы получите ошибку. Если размер слова фиксированной точки меньше чем или равен размеру слова хоста, MATLAB Coder преобразовывает тип данных с фиксированной точкой во встроенный тип C.

complex

Кодер сглаживает комплексные сигналы в действительные и мнимые части в компоненте SystemVerilog.

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

массивы

Например, 4 2 матрица в MATLAB преобразована в одномерный массив восьми элементов в SystemVerilog. По умолчанию кодер сглаживает матрицы в порядке развертывания по столбцам. Чтобы измениться на главный строкой порядок, используйте опцию -rowmajor с функцией dpigen. Для получения дополнительной информации смотрите, Генерируют Код Который Размещение Главного массива строки Использования (MATLAB Coder).

structure

Кодер сглаживает элементы структуры в отдельные порты в компоненте SystemVerilog.

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

Сгенерированная разделяемая библиотека

Функциональный dpigen автоматически компилирует разделяемую библиотеку, должен был запустить экспортируемый компонент DPI в среде SystemVerilog. Make-файл, который создает разделяемую библиотеку, имеет дополнительный _rtw.mk. Например, для fun.m, именем make-файла является fun_rtw.mk.

Во время компиляции функциональный dpigen генерирует файл библиотеки.

  • Windows® 64: function_win64.dll

  • Linux®: function.so

function является именем функции MATLAB, от которой вы сгенерировали компонент DPI.

Примечание

Если вы используете 64-битный MATLAB на Windows, вы получаете 64-битный DLL, который может использоваться только с 64-битным симулятором HDL.

Убедитесь, что ваша версия MATLAB совпадает с вашей версией симулятора HDL.

Сгенерированный испытательный стенд

Функциональный dpigen также создает испытательный стенд. Можно использовать этот испытательный стенд, чтобы проверить, что сгенерированный компонент SystemVerilog функционально эквивалентен исходной функции MATLAB. Генератор запускает ваш код MATLAB, чтобы сохранить векторы входных и выходных данных для использования в испытательном стенде. Этот испытательный стенд не предназначается как замена для места размещения тестирования системы для вашего собственного приложения. Однако можно использовать сгенерированный испытательный стенд в качестве стартового примера при создании собственного места размещения тестирования системы.

Сгенерированные Выходные параметры

  • C и заголовочные файлы из вашего алгоритма, сгенерированного MATLAB Coder

  • C и заголовочные файлы для обертки DPI, сгенерированной HDL Verifier™

  • Файл SystemVerilog, который представляет компонент и добавляет управляющие сигналы

  • Файл пакета SystemVerilog, который содержит все объявления функции компонента DPI

  • Испытательный стенд SystemVerilog (с опцией -testbench)

  • Файлы данных используются с симулятором HDL (с опцией -testbench)

  • Скрипты симулятора HDL, такие как *.do или *.sh (с опцией -testbench)

  • Make-файл *.mk

Сгенерированная обертка SystemVerilog

Весь код SystemVerilog, сгенерированный функциональным dpigen, содержит набор управляющих сигналов и функции Initialize.

Сгенерированные управляющие сигналы

  • clk: часы синхронизации

  • clk_enable: часы включают

  • сброс: асинхронный сброс

Сгенерированный инициализируют функцию

Функция Initialize вызвана в начале симуляции.

Например:

 import "DPI" function void DPI_Subsystem_initialize();

Если асинхронный сигнал сброса высок (идет от 0 до 1), Initialize называется снова.

Факторы симуляции

При симуляции компонента DPI в среде HDL reset, clock и clk_enable ведут себя можно следующим образом:

  • Когда clk_enable является 0, выходная функция DPI не выполняется, и выходные значения не обновляются.

  • Когда clk_enable является 1, и reset является 0, выходная функция DPI выполняется на положительном ребре сигнала часов.

  • Когда reset является 1, внутреннее состояние компонента DPI установлено в свое начальное значение. Это действие эквивалентно использованию функции clear в MATLAB, чтобы обновить персистентные переменные. Затем выходные значения затем отражают начальное состояние компонента DPI и текущие входные значения. Для получения дополнительной информации на персистентных переменных, смотрите Персистентные Переменные (MATLAB).

Ограничения

  • Аргументы переменного размера не поддержаны.

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

  • Некоторая оптимизация, такая как сворачивание констант, не поддержана, потому что они изменяют интерфейс сгенерированной функции C. Для получения дополнительной информации смотрите Оптимизацию MATLAB Coder в Сгенерированном коде (MATLAB Coder).

  • HDL Verifier ограничивает матрицы и векторы к одномерным массивам в SystemVerilog. Например, 4 2 матрица в MATLAB преобразована в одномерный массив восьми элементов в SystemVerilog.

  • Коллбэк PostCodegen в объектах конфигурации не поддержан.

Похожие темы

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