exponenta event banner

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

В этом примере показано, как создать компонент 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}

Запуск сгенерированных средств тестирования в симуляторе ЛПВП

Для ModelSim/QuestaSim выполните следующие действия.

  • Запустите ModelSim/QuestaSim в режиме графического интерфейса пользователя.

  • В симуляторе 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.