В этом примере показано, как сконфигурировать, сгенерируйте и используйте SystemVerilog DPI (SVDPI) компонент с вводами или выводами переменной длины.
Когда вы генерируете SVDPI от функции MATLAB®, которая включает векторный ввод или вывод переменного размера, результатом является модуль SystemVerilog с вводом или выводом переменного размера. Последуйте этому примеру, чтобы сконфигурировать, сгенерировать, и использовать компонент в среде SystemVerilog.
Этот пример использует функциональный varSizeVectorSupport
, функция пазухи, где размер входа vec
является переменным. Выход функции выведен из входа, и поэтому выходной размер является также переменным.
Используйте обеспеченный varSizeVectorSupport_tb
испытательный стенд, чтобы стимулировать функцию с сигналами фиксированного размера. Затем сгенерируйте испытательный стенд SystemVerilog, чтобы протестировать сгенерированный модуль SystemVerilog. Можно позже изменить типы порта сгенерированного испытательного стенда SystemVerilog (или записать новый испытательный стенд) без потребности регенерировать модуль DPI от varSizeVectorSupport
функция.
Чтобы задать поддерживаемый набор инструментальных средств, используйте
объект настройки. Установите build_type на coder.config
(MATLAB Coder)'dll'
.
configObj = coder.config('dll');
Затем установите набор инструментальных средств на поддерживаемое средство моделирования. Дважды кликните сгенерированный объект в рабочем пространстве MATLAB, чтобы открыть диалоговое окно объекта настройки. Выберите Hardware на левой панели, и затем под Набором инструментальных средств набора Процесса сборки к поддерживаемому средству моделирования.
В качестве альтернативы можно установить набор инструментальных средств в командной строке MATLAB. Например, это кодовые наборы набор инструментальных средств к Mentor Graphics QuestaSim/Modelsim (64-bit Windows)
.
configObj.Toolchain = 'Mentor Graphics QuestaSim/Modelsim (64-bit Windows)';
Чтобы сгенерировать модуль SystemVerilog, используйте dpigen
функция.
Необходимо передать объект настройки dpigen
функция с помощью -config
аргумент.
Используйте -args
аргумент, чтобы задать размер сгенерированных портов. Чтобы установить значение верхней границы к вектору переменной длины, укажите что значение в coder.Type
объект. Например, чтобы установить верхнюю границу 20 для vec
, введите этот код в командной строке MATLAB.
dpigen varSizeVectorSupport -args {coder.typeof(1,[1 20],[0 1]),1,1} -config configObj
Используйте inf
указывать, что размер порта имеет переменную длину и неограничен в сгенерированном SystemVerilog.
Чтобы сгенерировать испытательный стенд SystemVerilog от функции испытательного стенда MATLAB, используйте -testbench
аргумент.
dpigen varSizeVectorSupport -testbench varSizeVectorSupport_tb ... -args {coder.typeof(1,[1 inf],[0 1]),1,1} -config configObj
Поскольку vec
задан как вектор переменного размера во время генерации кода в этом примере, сгенерированный SystemVerilog включает вход vec
переменного размера и выход
y
. Тип данных для выхода y
выведен из типа входных данных. Эти порты переменного размера объявляются как SystemVerilog открытый массив ([]). Этот код показывает сгенерированный интерфейс для varSizeVectorSupport
функция.
module varSizeVectorSupport_dpi( input bit clk, input bit clk_enable, input bit reset, input real vec [], input real amp, input real freq, output shortint y [] );
Проверьте, что ModelSim® находится на системном пути. Перейдите к директории под названием codegen\dll\varSizeVectorSupport\dpi_tb
. Чтобы запустить испытательный стенд и проверить сгенерированный компонент в ModelSim, введите эту команду в командной строке MATLAB.
!vsim < run_tb_mq.do
Эта функция не поддерживает:
Матрицы переменного размера (преобразуют матрицы в вектор переменного размера в случае необходимости),
Типы данных структуры с полями переменного размера
Массивы переменного размера структур
Кросс-платформенная генерация компонента DPI
coder.config
(MATLAB Coder) | coder.typeof
(MATLAB Coder) | dpigen