Симуляция проектов в Quartus Prime v20.1 через редактор Waveform

Обычно, когда нужно симулировать FPGA проект, то создают специальные программы тестбенчи, например, на Verilog.

FPGA проект содержит модуль верхнего уровня со своими входами и выходами. Этот модуль нужно протестировать. Тестбенчи генерируют внешние сигналы к исследуемому модулю и потом, в процессе симуляции, можно будет увидеть все внутренние сигналы проекта. Написание тестбенчей не всегда простое занятие.
У нас было несколько статей на эту тему, например, вот симуляция с Icarus Verilog или вот про ModelSim.

Иногда можно обойтись и без тестбенчей. Я уже когда-то очень давно (хех, 10 лет назад) писал статью про симуляцию проекта в Quartus II v9 через Waveform.. Позже была статья про симуляцию в Quartus v13.

Там входные сигналы для тестирование проекта можно было просто рисовать в специальном редакторе. Было время и Альтера убрала эту возможность из Quartus. Потом, под влиянием общественности (университеты), снова вернула. Честно говоря, я давно не пробовал эту функцию квартуса, как-то не было потребности. Однако, на форуме человек спросил, а я не знаю что ответить. Решил попробовать сам, как работает такая симуляция в версии 20.1.

Первое, что я сделал, это выкачал и установил новый квартус 20.1
Я выкачал сразу три файла: QuartusLiteSetup-20.1.0.711-windows, ModelSimSetup-20.1.0.711-windows и max10-20.1.0.711.qdz. Это собственно сам САПР Quartus, симулятор ModelSim и пакет поддержки ПЛИС серии MAX10. Все эти скачанные файлы у меня лежат в одной папке Загрузки (Downloads).

quartus setup

Я запустил установку квартуса и она мне предложила поставить сразу все и квартус и симулятор ModelSim и пакет MAX10.

После установки квартуса я делаю простейший проект в графическом дизайне. Создаю проект через меню File => New Project Wizard и там важно только задать имя проекта и путь к папке проекта. Остальные кнопки я просто нажимаю в визарде "Далее" (Next) и все. Конкретную микросхему FPGA для проекта я выбираю первую попавшуюся, я же не собираюсь проект реально пробовать в ПЛИС, мне бы проcто с симуляцией разобраться.

Потом создаю новый файл схемы *.bdf и сохраняю его с именем проекта. На схему ставлю входы (input), выходы (output) и счетчик (lpm_counter). Для установки компонентов на схему делаю правый клик по схеме и в выпадающем меню выбираю Insert => Symbol... Там в поле ввода имени можно просто писать имя нужного компонента вроде input, output, and2 и другие.

Соединяю компоненты и даю имена сигналам, как показано на рисунке:

quartus prime schema

В параметрах счетчика многие из его неиспользуемых в моем проекте сигналов выключаю (Unused), чтобы не загораживать схему ненужным.

Теперь даже можно откомпилировать проект через меню Processing => Start Compilation.

Далее попробую просимулировать поведение этого проекта. Для этого создаю новый файл Waveform через меню File => New и в диалоговом окне в разделе Verification/Debugging Files выбираю пункт University Program VWF:

 

new vwf

 

Появляется вот такой редактор сигналов:

vfw editor

 

Выбираю меню Edit => Insert => Insert Node or Bus и появляется следующее диалоговое окно, в котором можно выбрать сигналы из проекта:

node ins

 

Проще всего нажать кнопку Node Finder и повыбирать те пины (входы и/или выходы), которые нужны для симуляции. Я выбрал clk, reset, enable и led.

node sel

Теперь нужно нарисовать входные сигналы. Делается это не сложно, выбираете соответствующую кнопку в тулбаре редактора и буквально рисуете сигналы выделением нужного интервала времени. Если сигналов не много, то это рисование должно быть не очень утомительным. Только клок не рисуйте каждый импульс, используйте специальную кнопку "Overwrite Clock" на тулбаре для задания входной частоты при симуляции.

После того, как нарисовал все входные сигналы можно пробовать симулировать через пункт меню
Simulation => Run Functional Simulation.

run functional simulation in quartus

 

В этом месте меня ждала неожиданная ошибка из-за которой симуляция не шла:

quartus simulation error

Я честно не знаю, отчего появляется эта ошибка: Error (suppressible): (vsim-12110) The -novopt option has no effect on this product. -novopt option is now deprecated and will be removed in future releases. Однако, ее похоже легко обойти. Прежде чем делать симуляцию я захожу в настройки симуляции через меню Simulation => Simulation Settings

Тут появляется окно редактирования скрипта симуляции и в нем я убираю опцию "-novopt".

novopt

 

Что это значит не знаю.. Сохраняю настройки. После этого повторно запускаю функциональную симуляцию и она проходит успешно! При этом открывается новый редактор waveform:

result

Здесь выходной сигнал led уже отображен синим цветом и показывается, как он изменяется в зависимости от входных сигналов reset и enable.

Я не большой сторонник подобных методов симуляции, но они работают и в принципе ими можно пользоваться. Нужно еще заметить, что для подобной симуляции так же используетсЯ симулятор MoidelSim, но процесс создания тестбенча скрыт от пользователя. Тестбенч создается автоматически на основе нарисованной пользователем временной диаграммы.

 

Добавить комментарий