Начало работы с генерацией DPI на основе MATLAB SystemVerilog

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

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

Требования и необходимые условия

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

  • MATLAB Coder™

  • Симуляторы: Mentor 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

Чтобы убедиться, что нет ошибок времени выполнения и что проект соответствует требованиям, моделируйте проект с помощью поставляемого теста перед генерацией кода. Введите следующую команду в 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: Папка, в которой находятся все связанные с testbench файлы.

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.

Для симулятора Incisive и VCS:

  • Запустите интерпретатор терминала

  • Измените текущую директорию на «dpi_tb» в директории генерации кода

  • В поле Incisive введите следующую команду в интерпретаторе.

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

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

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

На этом завершается пример «Начало работы с генерацией компонентов DPI SystemVerilog на основе MATLAB».