Начало работы с MATLAB основанная генерация компонента SystemVerilog DPI

Этот пример показывает вам, как сгенерировать компонент SystemVerilog DPI для программируемого генератора прямоугольной волны, написанного в MATLAB, и экспортировать его в симулятор HDL.

В демонстративных целях этот пример использует Modelsim 10.3c в 64-битном Windows 7. Однако эта та же процедура может быть легко реплицирована для других систем и средств моделирования.

Требования и предпосылки

Продукты потребовали для этого примера:

  • MATLAB Coder®

  • Средства моделирования: Наставник Graphics® ModelSim®/QuestaSim® или Cadence® Incisive

  • Один из поддерживаемого компилятора C: Microsoft® Visual C ++ или GNU GCC

Проект MATLAB

Код MATLAB, используемый в этом примере, демонстрирует простой программируемый генератор прямоугольной волны. Этот пример также обеспечивает испытательный стенд MATLAB, который осуществляет проект.

Следующее изображение иллюстрирует компонент DPI, который сгенерирован в этом примере:

  • 'On_time' и 'Off_time' управляют рабочим циклом выходного сигнала.

Например, если On_time=1 и Off_time=1, сгенерированная прямоугольная волна будут иметь 50%-й рабочий цикл.

Настройте файлы в качестве примера

Чтобы настроить файлы проекта в качестве примера, введите следующий код в подсказке команды MATLAB.

mkdir('svdpi_ProgSWGen');
cd('svdpi_ProgSWGen');
copyfile(fullfile(matlabroot,'toolbox','hdlverifier','hdlverifier_examples','svdpi_ProgSWGenerator','*'),pwd);

Эти команды создают временную папку, 'svdpi_ProgSWGenerator', и копируют файл проекта 'ProgSWGenerator.m' и соответствующий испытательный стенд 'ProgSWGenerator_tb.m' к этой папке.

Моделируйте проект с предоставленным испытательным стендом MATLAB

Чтобы убедиться нет никаких ошибок времени выполнения, и что проект удовлетворяет требования, моделируйте проект с предоставленным испытательным стендом до генерации кода. Введите следующую команду в MATLAB:

ProgSWGenerator_tb

Это должно построить фигуру ниже:

Обратите внимание на то, что график показывает выходной сигнал, который был запрограммирован, чтобы вести себя можно следующим образом:

  • Такты <100: on=1, off=1

  • 100 <Такты <250: on=2, off=1

  • 250 <Такты: on=1, off=2

Сгенерируйте компонент DPI, использующий команду DPIGEN

Используя DPIGEN, сгенерируйте компонент DPI.

Выполните команду DPIGEN в MATLAB можно следующим образом:

dpigen -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}

Следующая структура каталогов сгенерирована:

dpi_tb: Папка, где все связанные с испытательным стендом файлы.

ProgSWGenerator_dpi.sv: Сгенерированный компонент DPI.

ProgSWGenerator_dpi_pkg.sv: Сгенерированный пакет SystemVerilog.

libProgSWGenerator_dpi.dll: Библиотека, содержащая определения всех импортированных функций.

Примечание: DPIGEN автоматически попытается скомпилировать библиотеку. По порядку только сгенерировать файлы, не компилируя вас должно использовать-c опцию. Например:

dpigen -c -testbench ProgSWGenerator_tb  ProgSWGenerator -args {0,0}

Запустите сгенерированный испытательный стенд в симуляторе HDL

Для ModelSim/QuestaSim выполните следующие шаги:

  • Запустите ModelSim/QuestaSim в режиме GUI.

  • В симуляторе HDL, Изменение ваш текущий каталог к "dpi_tb" в соответствии с директорией генерации кода.

  • Введите следующую команду, чтобы запустить вашу симуляцию

do  run_tb_mq.do

Например:

Следующая форма волны сгенерирована:

Обратите внимание на то, что выходная волна (нижняя часть одна) ведет себя точно таким же образом как сигнал нанесенного на график в испытательном стенде MATLAB.

Для Острого и средства моделирования VCS:

  • Запустите свой терминальный интерпретатор

  • Измените текущий каталог на "dpi_tb" в соответствии с директорией генерации кода

  • Поскольку Острые вводят следующую команду в ваш интерпретатор.

sh run_tb_incisive.sh
  • Поскольку VCS вводит следующую команду в ваш интерпретатор.

sh run_tb_vcs.sh
  • Когда симуляция заканчивается, необходимо видеть следующий текст, распечатанный в консоли:

**************TEST COMPLETED (PASSED)**************

Это заканчивается, Начало работы с MATLAB основывало пример Генерации Компонента SystemVerilog DPI.