Функцию MATLAB ® можно экспортировать как компонент с прямым интерфейсом программирования (DPI) для использования в моделировании SystemVerilog. Оберните созданный код C оболочкой DPI, которая взаимодействует с функцией тонкого интерфейса SystemVerilog в симуляции SystemVerilog .
Для MATLAB создается компонент с помощью dpigen функция.
Примечание
Для использования этой функции необходимо иметь лицензию MATLAB Coder™.
Поддерживаемые типы данных MATLAB преобразуются в типы данных SystemVerilog, как показано в этой таблице. При использовании dpigen , используйте 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, и появится ошибка. Если длина слова с фиксированной точкой меньше или равна размеру слова хоста, кодер MATLAB преобразует тип данных с фиксированной точкой во встроенный тип 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
C и заголовочные файлы для оболочки DPI, генерируемые HDL Verifier™
Файл SystemVerilog, отображающий компонент и добавляющий управляющие сигналы
Файл пакета SystemVerilog, содержащий все объявления функций компонента DPI
Испытательный стенд SystemVerilog (с -testbench опция)
Файлы данных, используемые с имитатором ЛПВП (с -testbench опция)
Сценарии имитатора HDL, такие как *.do или *.sh (с помощью -testbench опция)
Makefile *.mk
Весь код SystemVerilog, сгенерированный функцией dpigen содержит набор управляющих сигналов и Initialize функция.
clk: часы синхронизации
clk_enable: включение часов
reset: асинхронный сброс
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).
HDL Verifier ограничивает матрицы и векторы одномерными массивами в SystemVerilog. Например, матрица 4 на 2 в MATLAB преобразуется в одномерный массив из восьми элементов в SystemVerilog.
Обратный вызов PostCodegen в объектах конфигурации не поддерживается.