Используйте вектор переменного размера в компоненте SystemVerilog DPI

В этом примере показано, как сконфигурировать, сгенерируйте и используйте SystemVerilog DPI (SVDPI) компонент с вводами или выводами переменной длины.

Спроектируйте задачу

Когда вы генерируете SVDPI от функции MATLAB®, которая включает векторный ввод или вывод переменного размера, результатом является модуль SystemVerilog с вводом или выводом переменного размера. Последуйте этому примеру, чтобы сконфигурировать, сгенерировать, и использовать компонент в среде SystemVerilog.

Функция MATLAB

Этот пример использует функциональный varSizeVectorSupport, функция пазухи, где размер входа vec является переменным. Выход функции выведен из входа, и поэтому выходной размер является также переменным.

Испытательный стенд

Используйте обеспеченный varSizeVectorSupport_tb испытательный стенд, чтобы стимулировать функцию с сигналами фиксированного размера. Затем сгенерируйте испытательный стенд SystemVerilog, чтобы протестировать сгенерированный модуль SystemVerilog. Можно позже изменить типы порта сгенерированного испытательного стенда SystemVerilog (или записать новый испытательный стенд) без потребности регенерировать модуль DPI от varSizeVectorSupport функция.

Сконфигурируйте опции генерации

Чтобы задать поддерживаемый набор инструментальных средств, используйте coder.config (MATLAB Coder) объект настройки. Установите build_type на '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 DPI

Чтобы сгенерировать модуль 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

Проверьте, что ModelSim® находится на системном пути. Перейдите к директории под названием codegen\dll\varSizeVectorSupport\dpi_tb. Чтобы запустить испытательный стенд и проверить сгенерированный компонент в ModelSim, введите эту команду в командной строке MATLAB.

!vsim < run_tb_mq.do

Ограничения

Эта функция не поддерживает:

  • Матрицы переменного размера (преобразуют матрицы в вектор переменного размера в случае необходимости),

  • Типы данных структуры с полями переменного размера

  • Массивы переменного размера структур

  • Кросс-платформенная генерация компонента DPI

Смотрите также

(MATLAB Coder) | (MATLAB Coder) |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте