Основы VHDL

6. Моделирование в Modelsim

Перед тем как двинуться далее стоит рассмотреть инструмент, используемый для моделирования описываемой схемы с целью проверки и отладки перед тем как запустить ее на отладочной плате.

Для проведения моделирования одним из наиболее популярных инструментов является Modelsim. В версиях Quartus после 18.0 доступен его аналог — Questasim, который хотя и называется по другому, имеет абсолютно тот же внешний вид и набор команд, дополненный набором продвинутых возможностей.

Графический интерфейс инструмента позволяет произвести моделирование с использованием всего нескольких кнопок. Рассмотрим этот инструмент подробнее.


Начальное окно Modelsim

Запустить инструмент можно прямо из меню Пуск.

Важно! По умолчанию бесплатная версия называется Modelsim Starter Edition. Однако, с инструментов Quartus устанавливается автоматически еще и платная версия и ею воспользоваться уже не получится.

Графический интерфейс представляет из себя следующие поля:

  • Панель Transcript (консоль снизу)
  • Список всех библиотек (панель Library)
  • Панель меню управления моделированием в верхней части окна

Консоль имеет два назначения: 

  • Вывод промежуточных сообщений, связанных с выполняемыми операциями
  • Возможность выполнения всех операций при помощи скриптов

Консоль поддерживает выполнение команд с использованиям языка TCL (этот язык часто встречается и в других инструментах разработки).

Для начала стоит достаточно знать, что строки, начинающиеся со знака #, являются комментариями. С этого знака как правило начинается вывод информационных сообщений (информация об ошибках, предупреждениях о проблемах и статусе моделирования и компиляции).

Панель библиотек (library) содержит наборы компонентов, в том числе vendor-specific, которые могут пригодиться при моделировании. Пользователи могут создавать свои библиотеки со своими модулями, ссылаясь на них на этапе подготовки к моделированию. 

Панель меню и управления процессом моделирования содержит все инструменты, которые пригодятся при анализе процесса моделирования.

Порядок проведения моделирования HDL-кода.

Инструмент Modelsim имеет следующую идеологию проведения моделирования

  • Создание рабочей (work) библиотеки, в которой будут находиться объекты моделирования
  • Компиляция HDL-файлов
  • Переход в режим моделирования модуля

При использовании графического интерфейса начать лучше всего со смены рабочей директории, чтобы временные файлы моделирования хранились в том же месте, где и исходные файлы. Для этого необходимо нажать File -> Change directory и выбрать директорию, в которой находятся файлы, с которыми в дальнейшем будет вестись работа. 


Смена директории через графический интерфейс

Работа через графический интерфейс позволяет сразу перейти к компиляции файлов через меню Compile выбираем Compile... При компиляции первого исходного файла Modelsim предложит автоматически создать библиотеку work, в которую будут компилироваться моделируемые исходные файлы. Если данный вопрос не возник, то, скорее всего, в этой директории уже ранее создавалась рабочая библиотека и компилируемый файл будет в нее сразу добавлен.

 

Элементы графического интерфейса при компиляции исходных файлов

При компиляции в консоли появится информация о статусе компиляции и результатах анализа файла:

  • В случае нахождения ошибки в коде инструмент укажет имя файла и номер строки с ошибкой, а также описание вида ошибки (на приведенном на изображении примере указана ошибка
  • При успешной компиляции указывается количество ошибок 0 ( 0 Errors), а в списке библиотек появится work, внутри которой по имени entity указано скомпилированное hdl-описание схемы, которое можно раскрыть и увидеть имя архитектуры скомпилированного модуля


Пример вывода информации в консоль после компиляции исходного файла

После успешной компиляции исходного кода необходимо найти файл в списке библиотеки work, нажать по нему правой клавишей мыши и выбрать Simulate. После этого инструмент моделирования перейдет в режим моделирования, перестроив порядок некоторых инструментов.


Меню перехода в моделирование


Графический интерфейс в режиме моделирования

В режиме моделирования графический интерфейс оставляет консоль, но теперь раскрывает следующие панели:

  • Панель sim с информацией о моделируемом объекте и всех элементах, которые в него включены
  • Панель objects с информацией об объектах в выделенном в панели sim объекте (сигналы, константы, порты...)
  • Панель processes перечисляет объекты типа process в выделенном объекте.

Главная задача моделирования — сымитировать необходимые воздействия на входы схемы (подать логические нули или единицы), запустить временной промежуток моделирования и проанализировать поведение выходов/внутренних сигналов на предмет ошибок.

Один из способов выполнить данную задачу — представить все объекты в графическом виде как в логическом анализаторе/осциллографе и визуально проинспектировать поведение.

Для этого необходимо выделить все объекты, нажать правой кнопкой мыши и выбрать Add Wave. После этого шага должно появиться окно или вкладка Wave.


Добавление на временную диаграмму объектов в графическом интерфейсе Modelsim


Обновленное состояние окна моделирования с вкладкой Wave

На этом этапе можно начать управление моделированием и обозначение воздействий на входы схемы:

  • Для запуска моделирования на определенные участки времени в верхней панели есть элементы Run: указывается временной промежуток, который необходимо промоделировать за один шаг (на изображении это 100 ps), для выполнения одного шага моделирования выполняется команда Run (кнопка правее поля 100 ps), доступны также запуски моделирования на неопределенный промежуток времени (с остановкой по требованию/по событию в коде)
  • Для проверки схемы необходимо создать воздействия на входы: для этого правой кнопкой мыши нажимаем по порту типа "вход" (у них зеленая стрелка слева от ромба), выбираем Force ... и в появившемся окне в двоичном виде задаем значение, которое будет дано на этот вход на ближайшие шаги моделирования

 

Этапы установления значения 10 на входе А

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


Временная диаграмма Modelsim после нескольких шагов и воздействий на входы

Последовательное изменение значений на входах при помощи Force и дальнейшее выполнение моделирования через команду Run позволит проследить за поведением сигналов и сделать выводы о работоспособности hdl-описания схемы.


*Использование скрипта для автоматизации моделирования

Стоит обратить внимание, что каждое взаимодействие через графический интерфейс повторено командой в консоли. Таким образом, можно не зная языка TCL скопировать все эти строки в один текстовый файл и всего лишь вызовом одного файла сразу выполнять те шаги, которые приходится постоянно друг за другом выполнять мышью или клавиатурой. Например:



Чтобы выполнить такой файл необходимо в консоли Modelsim вызвать команду: do do_compile.do