dpigen

Сгенерируйте компонент DPI SystemVerilog из функции MATLAB

Описание

пример

dpigen fcn -args args генерирует общую библиотеку DPI компонента SystemVerilog из MATLAB® функциональные fcn и все функции, которые fcn вызовы.

  • .dll для общих библиотек в Microsoft® Windows® системы

  • .so для общих библиотек в Linux® системы

dpigen функция также генерирует файл пакета SystemVerilog, который содержит объявления функций.

Аргумент —args args задает тип входов, которые может принять сгенерированный код. Сгенерированный компонент DPI специализируется на классе и размере входов. Используя эту информацию, dpigen генерирует компонент DPI, который эмулирует поведение функции MATLAB.

fcn и —args args являются обязательными входными параметрами. Функция MATLAB должна быть в пути MATLAB или в текущей папке.

пример

dpigen fcn -args args -testbench tb_name -options options files -c -launchreport -PortsDataType type создает общую библиотеку DPI компонента SystemVerilog в соответствии с заданными опциями. Вы можете задать нуль или несколько необязательных аргументов в любом порядке.

  • -testbench tb_name также генерирует испытательный стенд для компонента DPI SystemVerilog. Испытательный стенд MATLAB должен находиться в пути MATLAB или в текущей папке.

  • -options options задает дополнительные опции для компилятора и генерации кода.

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

  • -c генерирует только код С

  • -launchreport генерирует и открывает отчет генерации кода.

  • -PortsDataType задает тип данных SystemVerilog, используемых для портов.

При генерации компонента DPI создается совместная библиотека, характерная для этой хост-платформы. Для примера, если вы используете 64-разрядную MATLAB в Windows, то получаете 64-разрядную DLL, которую можно использовать только с 64-разрядного Симулятора HDL в Windows. Для переноса сгенерированного компонента из Windows в Linux смотрите Port Generated Component и Испытательный Стенд в Linux.

Примеры

свернуть все

Сгенерируйте компонент DPI и испытательный стенд для fun.m функции и связанный с ним испытательный стенд, fun_tb.m. The dpigen функция автоматически компилирует компонент с помощью компилятора по умолчанию. The -args опция задаёт, что первый входной тип является double и второй входной тип является int8.

dpigen -testbench fun_tb.m -I E:\HDLTools\ModelSim\10.2c-mw-0\questa_sim\include fun.m 
      -args {double(0),int8(0)}
### Generating DPI-C Wrapper fun_dpi.c
### Generating DPI-C Wrapper header file fun_dpi.h
### Generating SystemVerilog module package fun_dpi_pkg.sv
### Generating SystemVerilog module fun_dpi.sv
### Generating makefiles for: fun_dpi
### Compiling the DPI Component
### Generating SystemVerilog test bench fun_tb.sv
### Generating test bench simulation script for Mentor Graphics QuestaSim/Modelsim run_tb_mq.do
### Generating test bench simulation script for Cadence Incisive run_tb_incisive.sh
### Generating test bench simulation script for Cadence Xcelium run_tb_xcelium.sh
### Generating test bench simulation script for Synopsys VCS run_tb_vcs.sh
### Generating test bench simulation script for Vivado Simulator run_tb_vivado.bat

Сгенерируйте компонент DPI и испытательный стенд для функции fun.m и связанный с ним испытательный стенд, fun_tb.m. Чтобы предотвратить dipgen функцию от компиляции библиотеки, включите -c опция. Отправка выходных данных исходного кода на 'MyDPIProject'.

dpigen -c -d MyDPIProject -testbench fun_tb.m fun.m -args {double(0),int8(0)}
### Generating DPI-C Wrapper fun_dpi.c
### Generating DPI-C Wrapper header file fun_dpi.h
### Generating SystemVerilog module package fun_dpi_pkg.sv
### Generating SystemVerilog module fun_dpi.sv
### Generating makefiles for: fun_dpi
### Generating SystemVerilog test bench fun_tb.sv
### Generating test bench simulation script for Mentor Graphics ModelSim/QuestaSim run_tb_mq.do
### Generating test bench simulation script for Cadence Incisive run_tb_incisive.sh
### Generating test bench simulation script for Cadence Xcelium run_tb_xcelium.sh
### Generating test bench simulation script for Synopsys VCS run_tb_vcs.sh
### Generating test bench simulation script for Vivado Simulator run_tb_vivado.bat

Входные параметры

свернуть все

Имя функции MATLAB, из которой генерируется компонент DPI, заданное как вектор символов или строковый скаляр. Функция MATLAB должна быть в пути MATLAB или в текущей папке.

Тип данных и размер входов функции MATLAB, заданных как массив ячеек. Задайте входные типы, которые принимает сгенерированный компонент DPI. args - массив ячеек, задающий тип каждого аргумента функции. Элементы преобразуются в типы с помощью coder.typeof. Этот аргумент необходим.

Этот аргумент имеет те же функциональные возможности, что и codegen (MATLAB Coder) аргумент функции args. args применяется только к функции, fcn.

Пример: -args {double(0),int8(0)}

Испытательный стенд MATLAB для генерации испытательного стенда для сгенерированного компонента DPI в виде вектора символов или строкового скаляра. The dpigen функция использует этот испытательный стенд, чтобы сгенерировать испытательный стенд SystemVerilog вместе с файлами данных и скриптами выполнения. Испытательный стенд MATLAB должен находиться в пути MATLAB или в текущей папке.

The -testbench для аргумента требуется лицензия Fixed-Point Designer™.

Пример: -testbench My_Test_bench.m

Компилятор и codegen опции, заданные как вектор символов или строковый скаляр. Эти опции являются подмножеством опций для codegen (MATLAB Coder). The dpigen функция имеет приоритет перед отдельными опциями командной строки над опциями, заданными с помощью объекта строения. Если опции командной строки конфликтуют, преобладает опция «самый правый».

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

dpigen -c -d MyDPIProject -testbench fun_tb.m fun.m -args {double(0),int8(0)} -launchreport

Флаг опцииЗначение опции
-I include_path

Задает путь к папкам, содержащим заголовки и файлы библиотеки, необходимые для codegen, заданный как вектор символов или строковый скаляр. Добавить include_path в начало пути генерации кода.

Для примера:

-I E:\HDLTools\ModelSim\10.2c-mw-0\questa_sim\include

include_path не должны содержать пространств, что может привести к отказам генерации кода в некоторых строениях операционной системы. Если путь содержит не 7-битные символы ASCII, такие как японские символы, dpigen возможно, не найдены файлы по этому пути.

При преобразовании кода MATLAB в код C/C + +,dpigen сначала выполняет поиск по пути генерации кода.

Кроме того, можно задать путь включения с помощью files входной параметр.

-config config

Задайте пользовательский объект строения используя coder.config('dll'). Компонент DPI должен быть общей библиотекой.

Чтобы избежать использования конфликтующих опций, не комбинируйте объект строения с опциями командной строки. Обычно в config объект предлагает больше опций, чем флаги командной строки.

Примечание

Не все опции в config объект совместим с функцией DPI. Если вы пытаетесь использовать несовместимую опцию, сообщение об ошибке информирует вас о том, какие опции несовместимы.

-o output

Задайте имя сгенерированного компонента как вектор символов или строковый скаляр. dpigen функция добавляет расширение для платформы к этому имени для общей библиотеки:

  • .dll для динамических библиотек C/C + + в системах Microsoft Windows

  • .so для динамических библиотек C/C + + в системах Linux

-d dir

Укажите папку выхода. Все сгенерированные файлы помещаются в dir. По умолчанию файлы помещаются в ./codegen/dll/<function>.

Для примера, когда dpigen компилирует функцию fun.mсгенерированный код помещается в ./codegen/dll/fun.

-globals globals

Задайте начальные значения для глобальных переменных в файлах MATLAB. Глобальные переменные в вашей функции инициализируются со значениями в массиве ячеек GLOBALS. Массив ячеек предоставляет имя и начальное значение каждой глобальной переменной.

Если вы не задаете начальные значения для глобальных переменных, используя -globals опция, dpigen проверяет наличие переменных в глобальной рабочей области MATLAB. Если вы не задаете начальное значение, dpigen генерирует ошибку.

MATLAB Coder™ и MATLAB имеют свои собственные копии глобальных данных. Для обеспечения согласованности синхронизируйте их глобальные данные всякий раз, когда эти два продукта взаимодействуют. Если вы не синхронизируете данные, их глобальные переменные могут отличаться.

Пользовательские файлы для включения в сгенерированный код, каждый файл задается как вектор символов или строковый скаляр. Создание файлов вместе с функцией MATLAB, заданной fcn. Список каждого файла отдельно, разделенный пространством. Поддерживаются следующие расширения.

Тип файлаОписание
.cПользовательский файл C
.cppПользовательский файл C++
.hПользовательский файл заголовка (включается во все сгенерированные файлы)
.oФайл объекта
.objФайл объекта
.aФайл библиотеки
.soФайл библиотеки
.libФайл библиотеки

В Windows, если ваша функция MATLAB содержит матрицу, векторный выход или входные параметры, используйте files опция для задания библиотеки (.lib), который содержит ModelSim® Определения DPI. В противном случае необходимо вручную изменить сгенерированный Make-файл (*.mk) и затем скомпилируйте библиотеку отдельно.

Опция для генерации кода С без компиляции компонента DPI, заданная как вектор символов -c. Если вы не используете -c опция, dpigen пытается скомпилировать компонент DPI с помощью компилятора по умолчанию. Чтобы выбрать другой компилятор, используйте -config опция и см. codegen (MATLAB Coder) документация для инструкций по определению различных опций.

Опция для генерации и открытия отчета о генерации кода, заданная как вектор символов -launchreport.

Выберите тип данных SystemVerilog, который будет использоваться для портов. Выберите из трех возможных значений:

  • CompatibleCType - Сгенерируйте совместимый интерфейс типа C для порта.

  • BitVector - Сгенерируйте интерфейс типа вектора битов для порта.

  • LogicVector - Сгенерируйте интерфейс типа логического вектора для порта.

В этой таблице показан тип данных MATLAB в левом столбце и сгенерированный тип SystemVerilog для каждого значения PortsDataType.

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

MATLABSystemVerilog
Совместимый тип 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]
logicalbyte unsignedlogic [0:0]bit [0:0]
fi(тип данных с фиксированной точкой)

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

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.

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

массивы

Для примера матрица 4 на 2 в MATLAB преобразуется в одномерный массив из восьми элементов в SystemVerilog. По умолчанию кодер уплощает матрицы в основном порядке столбца. Для перехода к порядку основных строк используйте -rowmajor опция со dpigen функция. Для получения дополнительной информации смотрите Сгенерировать код, который использует размещение массива Row-Major (MATLAB Coder).

structure

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

перечисленные типы данныхenum
Введенный в R2014b