Можно экспортировать MATLAB® функция как компонент с интерфейсом прямого программирования (DPI) для использования в симуляции SystemVerilog. Перенос сгенерированного кода C с помощью оболочки DPI, которая взаимодействует с функцией тонкого интерфейса SystemVerilog в симуляции SystemVerilog.
Для MATLAB компонент генерируется с помощью dpigen
функция.
Примечание
Для использования этой функции необходимо иметь лицензию MATLAB Coder™.
Поддерживаемые типы данных MATLAB преобразуются в типы данных SystemVerilog, как показано в этой таблице. При использовании dpigen
function, использовать PortsDataType
свойство для выбора Compatible C type
, Logic vector
, или Bit vector
типы данных.
Сгенерированные типы SystemVerilog
MATLAB | SystemVerilog | ||
---|---|---|---|
Совместимый тип C | Логический вектор | Битовый вектор | |
uint8 | byte unsigned | logic [7:0] | bit [7:0] |
uint16 | shortint unsigned | logic [15:0] | bit [15:0] |
uint32 | int unsigned | logic [31:0] | bit [31:0] |
uint64 | longint unsigned | logic [63:0] | bit [63:0] |
int8 | byte | logic signed [7:0] | bit signed [7:0] |
int16 | shortint | logic signed [15:0] | bit signed [15:0] |
int32 | int | logic signed [31:0] | bit signed [31:0] |
int64 | longint | logic signed [63:0] | bit signed [63:0] |
logical | byte unsigned | logic [0:0] | bit [0:0] |
fi (тип данных с фиксированной точкой) | Зависит от размера слова с фиксированной точкой. Если длина слова с фиксированной точкой больше размера слова хоста (для примера, 64-битного и 32-битного), то этот тип данных не может быть преобразован в тип данных SystemVerilog MATLAB Coder, и вы получите ошибку. Если длина слова с фиксированной точкой меньше или равна размеру слова хоста, MATLAB Coder преобразует тип данных с фиксированной точкой во встроенный тип C. |
Логическая длина вектора ( |
Длина вектора бита ( |
single | shortreal | ||
double | real | ||
complex | Кодер сплющивает комплексные сигналы в действительные и мнимые части в компоненте SystemVerilog. | ||
векторы, матрицы | массивы Для примера матрица 4 на 2 в MATLAB преобразуется в одномерный массив из восьми элементов в SystemVerilog. По умолчанию кодер уплощает матрицы в основном порядке столбца. Для перехода к порядку основных строк используйте | ||
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, сгенерированный функцией dpigen
содержит набор управляющих сигналов и Initialize
функция.
clk
: синхроимпульс синхронизации
clk_enable
: включение синхроимпульса
reset
: асинхронный сброс
The 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 и текущие значения входа. Для получения дополнительной информации о стойких переменных см. Раздел «Стойкие переменные».
Аргументы переменного размера не поддерживаются.
Большие номера с фиксированной точкой, которые превышают системные размеры слова, не поддерживаются.
Некоторые оптимизации, такие как постоянное складывание, не поддерживаются, потому что они изменяют интерфейс сгенерированной функции C. Для получения дополнительной информации смотрите Оптимизация кодера MATLAB в Сгенерированном коде (MATLAB Coder).
HDL Verifier ограничивает матрицы и векторы одномерными массивами в SystemVerilog. Для примера матрица 4 на 2 в MATLAB преобразуется в одномерный массив из восьми элементов в SystemVerilog.
Коллбэк PostCodegen в объектах config не поддерживается.