Quartus + ModelSim. Интеграция в картинках и создание TestBench

В жизни каждого начинающего разработчика настает момент, когда необходимо делать качественные скачки в процессе разработки. Для меня такая необходимость возникла при отладке Verilog проекта в Quartus. Моими основными инструментами на тот момент были: тупое долбление в код, SignalTap и In-System Source and Probe.
Времени на компиляцию тратилось все больше и больше, количество памяти в кристалле все меньше, а ясности не прибавлялось.
Тогда было принято решение перенести отладку в виртуальное пространство при помощи инструмента ModelSim.
Поразительно, но перерыв кучи документации я так и не нашел нигде единого руководства по интеграции Quartus и ModelSim.

Данная статья посвящена новичкам, освещает основные моменты интеграции программ Quartus и ModelSim.
План
1. Подготовка проекта
2. Компиляция библиотек
3. Конфигурирование NativeLink
4. Генерация TestBench и привязка к проекту
5. Запуск симуляции

Подготовка проекта.


Для тех, кто работает на Verilog и VHDL это пункт не нужен. Тем же, кто орудует в схематике и желает отладить проект в ModelSim необходимо знать, что ModelSim квадратики не поддерживает)

Выход есть – преобразовать свой проект в Verilog или VHDL командой:

File — Create/Update — Create HDL Design File from Current File



Выберите желаемый формат выходного файла. Добавьте его в проект. BDF файл необходимо при этом исключить из проекта.

Внимание! Необходимо очень внимательно проверить преобразование, Quartus может и лажануть)

Компиляция библиотек для ModelSim


Внимание! Если используете ModelSim Altera Edition это пункт надо пропустить, там библиотеки уже встроены и скомпилированы.

Tools — Launch EDA Simulation Library Compiler.


Выбираем инструмент моделирования ModelSim и путь к нему, свой чип и язык программирования.
Здесь и дальше я буду использовать C:\MSim_lib для размещения библиотек.
Нажимаем Start Compilation.

Конфигурирование NativeLink

NativeLink – инструмент для налаживания связи между Quartus и Modelsim

Все эти телодвижения выполняется однократно для каждого проекта.
Жмем Assignments — Settings — Simulation
Ставим настройки в точности как на картинке.


Жмем More EDA Netlist Writer Settings…
Указываем путь к скомпилированным библиотекам.


Жмем More NativeLink Settings…
Опять указываем путь к скомпилированным библиотекам)


Настройка закончена, но сюда мы еще вернемся.

upd. В настройка необходимо указать путь к ModelSim.
Идем в Tools — Options — EDA Tool Options
Прописываем путь в ModelSim


Генерация TestBench и привязка к проекту


Собственно это ключевой момент статьи.
Во всех туториалах и документах, которые мне попадались это операция почти не описана. Может это само собой всем известно, но я потратил изрядно времени для осознания как надо делать ПРАВИЛЬНО.

Жмем Processing – Start – Start Test Bench Template Writter


В Message можно увидеть где же располагается ваш testbench.


Учтите, это всего лишь шаблон, а не готовый testbench. Quartus не ясновидец, придется все необходимые воздействия писать руками)

Теперь надо testbench привязать к проекту. Для этого идем опять в
Assignments — Settings — Simulation


Делам все как на картинке

Testbench: произвольное имя нашего testbench
Top Level in Test Bench: имя топ левел модуля testbench. Чтобы его узнать нужно посмотреть сгенерированный testbench. В моем случае Quartus дал имя counter_vlg_tst.
Test Bench Files: добавляем файл с testbench. В моем случае counter.vt

Жмем ОК.
Настройка закончена!

Запуск симуляции


Тут все просто: Tools – Run EDA Simulation Tools – EDA RTL Simulation


Дальше начинается не простой этап моделирования и вылавливания глюков вModelsim.

Спасибо за внимание.
  • +2
  • 22 ноября 2011, 14:58
  • covsh

Комментарии (21)

RSS свернуть / развернуть
thank you very very much!
наиактуальнейше. Типо пишу учебный проект по FSM. Задолбался уже глюки искать. Вот симуляция нам частично поможет :)
эх, начнем стандартно — со счетчика :)
0
так, либо чего-то я не так делаю… что имеется
Q11 + Modelsim Altera starter edition
Все делаю как в статье, выбирая где можно, ModelSim Altera.

дохожу до последнего шага, где EDA RTL Simulation. NativeLink рапортует об ошибке: типо не может запустить программу ModelSim, т.к. не указаны его расположение или по указанному расположению нет исполняемого файла.
Залажу в Tool -> Launch EDA sim library compiler. Там выбрано Tool name: ModelSim, а в поле Executable location пусто. Чтож, определяю его как C:\altera\11.0\modelsim_ase\win32aloem (там валяется exeшник, проверял), в поле появляется пусть. Жмакаю на Закрыть. Снова вызываю это окошко — в поле пути ПУСТО. wtf? Винда 7. У кого-нить такое было? Или что-то непрально делаю?
Пробовал отдельно ModelSim запускать. Запускается. Просто интересно глянуть как в связке работает. Ведь только начинаю. Вдруг так удобнее будет :)
0
зачем вы запускаете компиляцию библиотек для ModelSim Altera Edition? я же написал что для этого пакета этот шаг надо пропустить. имя используемого симулятора надо определить в assignments — settings — simulation.
попробуйте использовать чистый ModelSim, т.е. без Altera Edition
0
так я первый раз и пробовал именно как написано, пропуская шаги для предустановленной альтеровской версии. Сейчас на рабочем компе попробовал — безрезультатно — просит определить путь к exeшнику modelsim'а.

зы. пробовал оба варианта — чистого modelsim'a и altera edition. нифига. будем пробовать дальше )
0
ага. по ходу дела вот в чем причина была. Заглянул по Tools -> Options -> EDA Tool Option. там пути напротив ModelSim и ModelSim-altera были пустыми. добавил путь до эхешника ModelSim'a, перезапустил Quartus на всяк случай и все заработало. )))
0
да, действительно. этот момент я упустил.
путь не надо указывать для каждого нового проекта, вот я и забыл)
0
просто тогда в статью добавьте, чтобы народ по комментам не искал :)
0
уже)
0
перенес в плис
0
Попробуйте сами перенести статью в ПЛИС. Для этого надо подключиться к нему в списке блогов
0
вступил, но механизм переноса статьи не понятен)
0
Редактировать (или сразу при написании) -> комбобокс «Опубликовать в» -> выбрать нужный блог (отображены только те, на которые подписан и есть достаточно рейтинга).
0
Спасибо огромное, сам полгода назад долбался с этим моделсимом, пока въехал что ему скормить. Правда моя отладка уже пол года едет, по этому пока забил на дальнейшее раскуривание.
0
написал бы кто еще доходчиво как правильно тестбенчи писать. А то прям какой-то психологический барьер. Вроде и читал как его писать, но начинаешь подтупливать над своим примером :)
0
могу осветить начальные вопросы написания тестбенча. в чем глобальная зазвоздка, где тот барьер?)
0
Вы напишите, а барьеры сами отпадут где бы они ни были…
0
мне бы структуру обозначить. хм, интересно, что несколько блоков always в одном файле меня в ступор не вводит, а к примеру initial первое время да )))))))

не знаю, по мне дак достаточно будет средней сложности и объема примера, где неочевидные моменты в комментах подписать и все. Барьер в том, что до вчерашнего времени тестов сам не писал. Однако тот самый счетчик уже заработал ))) Начал сам, т.к под лежачий камень вода не течет, но в любом случае кому-то да будет полезно :)

наверно, тут дело привычки. просто когда описываешь аппаратуру, то код должен синтезиться, а в тесте можно об этом сильно не беспокоиться, главное в нужное время сделать определенную последовательность действий.
0
Товарищи а подскажите как надо делать, если мне чего захотелось отредактировать в testbench-e, каждый раз перегружать отредактированную версию с помощью EDA RTL Simulation, закрывая ModelSim? iбо пробовал я отредактировать в ModelSim но успехом это не увенчалось, сигналы куда то исчезают и я не могу их отобразить в окне Wave.
0
можно делать как хотите. меняйте тестбенч хоть в простом текстовом редакторе. дальше не забудьте перезапустить симуляцию do rtl_sim.do
не советую неосознанно использовать кнопку EDA RTL Simulation, т.к. это операция перегенирирует стрипт симуляции. если вы туда добавили свои команды, то все перезатрется
0
EDA RTL Simulation не есть хорошо. Для проверки работоспособности проекта в ПЛИС используется Gate Level Simulation acvarif.info/artplis/artplis7.html которая учитывает задержки сигналов проекта в конкретной выбранной ПЛИС.
0
Я использую Quartus II 32-bit Version 13.0.1 Build 232 06/12/2013 SJ Wed Edition Service Pack Installed: 1. С ним вместе устанавливается ModelSim-Altera Starter Edition 13.0.1.232.
Что мне нужно настроить в первом пункте «Компиляция библиотек для ModelSim»?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.