exponenta event banner

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 генерирует только код 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) аргумент функции args. args применяется только к функции, fcn.

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

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

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

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

Компилятор и codegen параметры, заданные как вектор символа или скаляр строки. Эти опции являются подмножеством опций для codegen (Кодер MATLAB). 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), содержащий определения DPI ModelSim ®. В противном случае необходимо вручную изменить созданный Makefile (*.mk) и затем скомпилировать библиотеку отдельно.

Параметр для создания кода C без компиляции компонента 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, и появится ошибка. Если длина слова с фиксированной точкой меньше или равна размеру слова хоста, кодер MATLAB преобразует тип данных с фиксированной точкой во встроенный тип 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).

structure

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

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