Этот пример показывает вам, как сгенерировать компонент 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, который осуществляет проект.
Проект: ProgSWGenerator
Испытательный стенд: ProgSWGenerator_tb
Следующее изображение иллюстрирует компонент 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:
ProgSWGenerator_tb
Это должно построить фигуру ниже:
Обратите внимание на то, что график показывает выходной сигнал, который был запрограммирован, чтобы вести себя можно следующим образом:
Такты <100: on=1, off=1
100 <Такты <250: on=2, off=1
250 <Такты: on=1, off=2
Используя 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}
Для 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.