dpigen

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

Описание

пример

dpigen fcn -args args генерирует совместно использованную библиотеку компонента SystemVerilog DPI от функции 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 генерирует совместно использованную библиотеку компонента SystemVerilog DPI согласно заданным опциям. Можно задать нуль или больше дополнительных аргументов в любом порядке.

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

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

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

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

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

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

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

Примеры

свернуть все

Сгенерируйте DPI и испытательный стенд компонента для функционального fun.m и его связанный испытательный стенд, fun_tb.m. dpigen функционируйте компилирует компонент автоматически с помощью компилятора по умолчанию. -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 в виде вектора символов или строкового скаляра. dpigen функционируйте использует этот испытательный стенд, чтобы сгенерировать испытательный стенд SystemVerilog наряду со скриптами выполнения и файлами данных. Испытательный стенд MATLAB должен быть на пути MATLAB или в текущей папке.

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

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

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

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

Флаг OptionЗначение опции
-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. Перечислите каждый файл отдельно, разделенный пробелом. Следующие расширения поддерживаются.

FileType Описание
.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 функция. Для получения дополнительной информации смотрите, Генерируют Код Который Использование Упорядоченное по строкам Размещение Массивов (MATLAB Coder).

structure

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

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