Как установить modelsim на windows 10

Обновлено: 04.07.2024

Starting with Intel® Quartus® Prime version 21.3, the ModelSim*-Intel® FPGA edition software has been discontinued and replaced by the Questa*-Intel® FPGA Edition software. Refer to this customer advisory for details.

Watch this video to find out how easy it is to migrate to Questa*-Intel FPGA Edition.

Also, review the Quick Start Guide for instructions on how to get started.

The ModelSim*-Intel® FPGA edition software is a version of the ModelSim* software targeted for Intel® FPGAs devices. The software supports Intel gate-level libraries and includes behavioral simulation, HDL testbenches, and Tcl scripting.

ModelSim*-Intel® FPGA Edition Software

  • Recommended for simulating all Intel® FPGA designs (Intel® Arria® FPGA, Intel® Cyclone® FPGA, and Intel® Stratix® FPGA designs, and Intel® MAX® CPLDs)
  • 33 percent faster simulation performance than ModelSim*-Intel® FPGA starter edition software
  • No line limitations
  • Buy today for $1,995
  • Mixed language support

ModelSim*-Intel® FPGA Starter Edition Software

  • Support for simulating small Intel® FPGA designs
  • 10,000 executable line limitations
  • Free no license required
  • Mixed language support

Benefits

Shorten your Intel® FPGA verification time by using the ModelSim*-Intel® FPGA software in your Intel® FPGA design flow. ModelSim*-Intel® FPGA software supports behavioral and gate-level simulations, including VHDL or Verilog testbenches for all Intel® FPGA devices.

ModelSim*-Intel® FPGA Edition Software Features and Benefits

Intel licenses Mentor Graphics ModelSim*-Intel® FPGA simulation software to customers with Intel® Quartus® Prime Design Software. Both ModelSim*-Intel® FPGA edition and ModelSim*-Intel® FPGA starter edition are available for lite edition, standard edition and pro edition software users.

$1,995 includes software updates for one year

$1,695 for renewal

Note: The ModelSim*-Intel® FPGA edition software requires a valid license. The ModelSim*-Intel® FPGA edition software license expires 12 months after the date of purchase. Every 12 months you must regenerate your license file in the Self-Service Licensing Center to renew your license for the specific ModelSim*-Intel® FPGA edition software version that you purchased.

All Intel® FPGA devices

(Including Intel® MAX® CPLDs, Intel® Arria®, Intel® Cyclone®, and Intel® Stratix® series Intel® FPGAs)

All Intel® FPGA devices

(Including Intel® MAX® CPLDs, Intel® Arria®, Intel® Cyclone®, and Intel® Stratix® series Intel® FPGAs)

10,000 executable line limit

Frequently Asked Questions

Is the ModelSim*-Intel® FPGA edition software the same as the ModelSim* PE/DE software?

No. ModelSim*-Intel® FPGA edition software only supports our gate-level libraries. The ModelSim*-Intel® FPGA edition software includes the base features of ModelSim* PE, including behavioral simulation, HDL testbenches, and Tcl scripting. However, ModelSim* PE optional features are not supported in the ModelSim*-Intel® FPGA edition software and the simulation performance of the ModelSim*-Intel® FPGA edition software is slower than that of the ModelSim* PE/DE software.

Does ModelSim*-Intel® FPGA edition software support dual-language simulation?

Yes. Starting with Intel® Quartus® Prime Software v15.0, the ModelSim*-Intel® FPGA edition software supports dual-language simulation. This includes designs that are written in a combination of Verilog, System Verilog, and VHDL languages, also known as mixed HDL.

How do I upgrade my version of ModelSim*-Intel® FPGA software?

Contact your local Mentor Graphics sales office to upgrade your ModelSim*-Intel® FPGA software to ModelSim* PE/DE software or Questa* advanced simulator. Contact information is available on the Mentor Graphics website.

Начало работы с ModelSim и написание Testbench - разумное использование моделирования - король

Начните сейчас, чтобы шаг за шагом приступить к работе с ModelSim и реализовать моделирование, легко подключившись к Quartus. В этой статье используется ModelSim10.0c + QuartusII 10.0, другие версии в основном такие же, пожалуйста, исследуйте сами.

Если вы не видите картинку, нажмите, чтобы увидеть большую картину!

1. Установите сторонний инструмент EDA.

Задайте путь установки ModelSim в Инструменты -> Параметры и обратите внимание на папку win32 (64-битное программное обеспечение соответствует win64).


Создайте проект (все же на примере сумматора). Установите инструмент моделирования на ModelSim в Assignments -> Settings. Таким образом, Quartus может беспрепятственно вызывать ModelSim.


Конечно, вы также можете настроить инструмент моделирования при создании проекта.


2. Написание Testbench

Говоря о Testbench, вы можете называть его Testbench или Testbenches, но не Test Скамья. Кстати, даже Quartus не обратил внимания на эту проблему, о причинах читайте в статье Общие ошибки в технических текстах. В статье также перечислены некоторые другие неправильные слова, в том числе Flip-flop не может быть записан как Flipflop и т. Д. Ссылка на статью:

Мы можем автоматически сгенерировать шаблон Testbench через Quartus, выберите Processing -> Start -> Start TestBench Template Writer, дождитесь завершения и откройте только что сгенерированный тестовый стенд. По умолчанию он сохраняется в моделирование \modelsimФайл в формате .vt в папке. Чтобы


После открытия файла vt мы видим, что Quartus выполнил для нас некоторую базовую работу, включая часть кода порта и объявление переменных интерфейса. Что нам нужно сделать, так это добавить тестовый код, который нам нужен, в готовую форму. .

Базовый тестовый стенд состоит из трех частей: определения сигнала, интерфейса модуля и кода функции.

«Шкала времени 1 нс / 1 сек. Означает, что единичное время моделирования составляет 1 нс, а точность - 1 пс. Если вы хотите выполнить моделирование, вы должны сначала указать единицу времени, и лучше указать единицу времени в Testbench, а не определять ее в инженерном коде, потому что разные модули могут вызвать некоторые проблемы при моделировании, если время единица измерения отличается, и сама шкала времени верна. Синтез означает, что реальная схема не имеет никакого эффекта.


Фактически, сам Testbench можно рассматривать как модуль или устройство (имя модуля в этом примере - add_vlg_tst), которое взаимодействует с модулем, который вы пишете. Используйте модуль Testbench, чтобы вывести сигнал на тестируемый модуль в качестве стимула, и в то же время получить выходной сигнал от тестируемого модуля для просмотра результатов. Следовательно, сигнал типа reg в тестируемом модуле становится проводным в Testbench, а сигнал типа провода в тестируемом модуле соответствует типу reg в Testbench. Итак, что делать с inout, сигнал inout должен быть настроен на провод, а сигнал reg должен использоваться в качестве выходного регистра, и должен быть установлен вентиль с тремя состояниями, который управляется сигналом включения, например: назначить inout_sig = out_en? 'bz;


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

Во-первых, нужен сигнал сброса:

Второй - это часы, которые выполняются с помощью модуля always:

Код в модуле always будет выполняться многократно.Пользуясь преимуществом этой функции, mclk переворачивается каждые 10 нс, но этого недостаточно, и необходимо указать начальное значение для mclk, которое является начальным утверждением выше. Таким образом, прямоугольный сигнал с периодом 20 нс и частотой 50 МГц может быть сгенерирован в качестве системных часов в этом примере.

Конечно, эти часы можно реализовать и через начальный модуль. Просто добавьте while (1) - бесконечный цикл.

Многие операции в Testbench не интегрированы, и его стиль может быть более случайным.

После установки часов и сброса необходимо установить входной сигнал:

Обратите внимание, что здесь a_in = 1 и b_in = 3 происходят одновременно, то есть параллельно, после чего задержка составляет 200 нс, a_in = 2 и b_in = 0, как упоминалось выше, если вы хотите добиться последовательной работы, вам нужно для использования задержки. Между двумя операторами нет задержки, что означает, что они выполняются одновременно. Другой момент заключается в том, что этот начальный блок операторов и начальный блок операторов, ответственный за сброс, также параллельны, и оба начинаются в момент времени 0. Другими словами, после сброса rst_n 100 нс после 0 времени, а затем после 100 нс (с момента 0) выполняется a_in = 2.

На этом тестовая программа тоже завершена, приступим к моделированию.

3. Настройте Quartus и вызовите инструмент моделирования.

Перед запуском моделирования вам необходимо настроить его. Настройте параметры моделирования на вкладке «Моделирование», вы можете настроить язык моделирования, формат времени моделирования и выходной каталог. Выберите тестовый стенд mpile, нажмите Test Benches, чтобы открыть диалоговое окно Test Benches.


Нажмите New, чтобы создать новый TestBenchSetting, введите имя модуля Testbench (здесь add_vlg_tst) и установите время работы симуляции соответствующим образом (здесь установлено 800 нс, просто время для автоматического выполнения симуляции после входа в ModelSim, а не установить или произвольно установить), и добавить только что написанный Testbench.


После того, как все в порядке, выберите Инструменты -> Запустить инструменты моделирования EDA, есть два варианта, Моделирование RTL - это моделирование поведения RTL, оно только проверяет правильность функции, это не имеет никакого отношения к тому, на каком чипе оно работает. Необходимо выполнить анализ и синтез хотя бы один раз перед симуляцией; имитация на уровне логических элементов - это моделирование на уровне логических элементов, включающее определенные микросхемы, и проект необходимо скомпилировать перед симуляцией. размещение и маршрутизация в форме волны.При тестировании конкретного инженерного модуля вы должны сначала выполнить моделирование RTL, а затем выполнить моделирование на уровне ворот.


4. Основные операции инструмента ModelSim

Запустите RTL Simulation, чтобы войти в интерфейс ModelSim. Вот еще несколько важных частей.

В меню просмотра вы можете отображать и скрывать различные окна инструментов. В окне «Структура» отображается структура тестового модуля и тестируемого модуля:


Щелкните другой модуль, вы можете просмотреть сигналы в выбранном модуле в окне «Объекты», поскольку помимо портов существует множество внутренних сигналов, которые по умолчанию не отображают формы сигналов. Перетаскивая нужный сигнал в окно «Волна», вы может отображать.



На панели инструментовЧасть его используется для управления запуском симуляции. Красное поле слева сбрасывается. Установите время выполнения в текстовом поле и нажмите кнопку в красном поле справа, чтобы выполнить. Для других, пожалуйста, исследуйте самостоятельно или обратитесь к файлу справки.

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


В нижнем левом углу окна Wave есть несколько маленьких кнопок, которые используются для установки курсора.Путем добавления курсора вы можете измерить соответствующее время, а также вы можете настроить здесь формат шкалы времени.


На графике осциллограммы вы можете использовать колесо прокрутки и правую кнопку мыши, чтобы легко увеличить или выбрать область сигнала. На рисунке ниже показан график осциллограммы этого полного проекта сумматора. После сброса значение c_out равно сумма a_in и b_in, и отображается в выходном сигнале нарастающего фронта.

B60-0

Небольшой мануал по настройке симулятора ModelSim для новичков в освоении ПЛИС, симулятор очень поможет как в ожидании заказанной ПЛИСы\отладочной платы (т. к. можно тренироваться и наращивать свой скилл без реального железа), так и в отладке уже реального проекта под конкретное железо (т. к. процесс компиляции, синтеза, размещения и прошивки крайне не быстр), а также далеко не всё можно посмотреть логическим анализатором или осциллографом, поэтому освоение симулятора HDL крайне важно и необходимо.

Запуск из Quartus Prime

Идём в настройки проекта:

B60-1

И переходим в раздел EDA Tool Settings -> Simulation:

B60-2

Для запуска простой симуляции нас интересуют здесь следующие вещи, отмеченные на скриншоте выше:

B60-3

B60-4

Вот вроде бы и всё, можно жмакать на старт:

B60-5

B60-6

B60-7

Переходим во вкладку General -> EDA Tool Options:

B60-8

И в самом низу, собственно, прописываем путь к ModelSim.
Примечание: важно прописать путь не к корню, а к вложенной папке win32aloem и в конце поставить бэкслэш .

Вот и всё, теперь можно запускать симуляцию! Нажимаем опять RTL Simulation и с некоторым запозданием появляется окно ModelSim:

B60-9

B60-10

Автоматически запустится процесс симуляции и все (или почти все) сигналы test bench будут добавлены в Wave окно (на скрине выше сигналов особо и нету, да, модуль самописно-кривой и ещё не готов).

Более подробно об интерфейсе и окнах ниже в разделе с общими сведениями.

Самостоятельная работа в ModelSim

B60-11

Создаём новый проект:

B60-12

Перед нами открывается окно создания проекта:

B60-13

Здесь задаём имя проекта и корневую папку (где лежат Verilog файлы), название библиотеки и копирование настроек можно не трогать. Клацаем ОК, далее открывается диалог создания\добавления существующих файлов HDL, создания папок и, собственно, файла настроек симуляции.

B60-14

Я выбрал добавление в проект существующих файлов:

B60-15

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

B60-16

B60-17

Если ошибок в них нет и всё прошло успешно, то статус изменится на зеленые галочки, в противном случае смотрим в консоли возникшие ошибки и исправляем причину их возникновения:

B60-18

Теперь можно добавить файл настроек симуляции:

B60-19

В появившемся диалоге выбираем из библиотеки work (ранее задавали такое имя при создании проекта) необходимые файлы и test bench для проведения симуляции (у меня их всего 2, выбираю оба):

B60-20

Настройки пока не трогаю, для общего понимания процесса все можно оставить по умолчанию. Нажимаем Save, файл настроек должен появится в проекте:

B60-21

Практически всё. Кликаем двойным ЛКМ на файле Simulation 1:

B60-22

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

Вот и всё, нажимаем на кнопку Countine Run для запуска симуляции до стоп-команды в test bench или Run для запуска симуляции кратно выбранному временному отрезку (у меня указан 100 нс) и можно видеть результаты работы:

B60-23

Всё не так уж и сложно было. ;)

Общие сведения о работе в ModelSim

Тестовые файлы

Сигналы и формат состояния сигнала

B60-24

Во вкладке Sim находятся все модули, а также их процессы. При выделении любого из модулей или процесса, к нему относящегося, все сигналы модуля появятся во вкладке Objects. Активные процессы также отображаются в отдельной вкладке Processes (Active), и выделение любого из них меняет отображаемые сигналы из вкладки Objects. К примеру, выбираем экземпляр DUT из test bench:

Далее выделяем все сигналы из вкладки Objects и переносим их, зажимая ЛКМ, на вкладку Wave (для наглядности на скриншоте ниже уже проведено несколько шагов симуляции, чтобы отобразились формы сигналов):

B60-25

Пример установки формата отображения для всей шины сигналов data как беззнаковый тип числа:

B60-26

Пример установки формата отображения для битов шины сигналов data как бинарный тип числа:

B60-27

После применения формата отображения для шины сигналов можно видеть, как для продолжительных состояний отображается их значение, что довольно удобно и наглядно:

B60-28

Управление симуляцией, отладка

B60-29

Последовательно по названиям элементы управления на скриншоте выше:

B60-30

Последовательно по названиям элементы управления на скриншоте выше:

Вот так выглядит выполнение по шагам:

B60-31

Появляется синяя стрелочка (слева, около номеров строк), отображающая текущий шаг выполнения HDL кода. При нажатии на любой номер кода можно ставить Break Point, как в обычном IDE при написании обычных программ или прошивок для микроконтроллеров.

Курсоры

За добавление\удаление курсоров, их привязку отвечает следующая панель:

B60-33

Последовательно по названиям элементы управления на скриншоте выше:

Также, добавив несколько курсоров, можно увидеть дельту времени между их значениями:

B60-34

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

B60-42

B60-43

B60-44

И отчасти относящаяся к курсорам панель с кнопками приближения\отдаления, приведу её уже как дополнение:

B60-32

Последовательно по названиям элементы управления на скриншоте выше (в скобках указаны хоткеи):

Изменение и перекомпиляция файлов в ModelSim

Итак, для редактирования файлов, как тестируемого модуля, так и файла test bench, необходимо вначале завершить симуляцию:

B60-36

B60-37

B60-38

Для проверки внесённых изменений я раскомментировал блок, который выставляет данные на шину wdata и устанавливает сигнал wr. Нажимаем Ctrl + S и видим, что статус изменённого файла изменился (опять появился вопрос):

B60-39

Просто компилируем его (ну или всё сразу):

B60-40

И опять нажимаем двойным ЛКМ на файл симуляции, проверяем изменения:

B60-41

Всё заработало! И теперь установка данных на шине wdata и сигнала wr влияет на выходную шину data. Всё это можете самостоятельно проверить, скопировав код файлов выше. ;)

Примечание: изменения файлов вносятся в оригинальные файлы только при закрытии ModelSim! Для симуляции создаётся их копия, а во время работы в ModelSim вы работаете с копией, и только при выходе из программы изменения вносятся в оригинальные файлы.

image


Предположим, что по каждому тактовому сигналу вставляется только одна монета. Автомат имеет выходы: налить газировку, вернуть 1 рубль, вернуть 2 рубля, вернуть 2 по 2 рубля. Как только в автомате набирается 5 рублей (или больше), он выставляет сигнал «НАЛИТЬ ГАЗИРОВКУ», а также сигналы, возврата соответствующей сдачи. Затем автомат должен быть готов опять принимать монеты.

Конечные автоматы или finite state machine (FSM) относятся к классу синхронных последовательных схем, которые представляют подавляющее большинство схем цифровой схемотехники. Именно таким образом следует реализовывать свои проекты (по крайней мере на первых порах). Такой способ обеспечивает повторяемость и верифицированость схемы и не зависит от отношений задержек различных элементов схемы. Правила построения синхронных последовательных схем гласят, что схема является синхронной последовательной схемой, если ее элементы удовлетворяют следующим условиям:

  • Каждый элемент схемы является либо регистром, либо комбинационной схемой.
  • Как минимум один элемент схемы является регистром.
  • Все регистры тактируются единственным тактовым сигналом.
  • В каждом циклическом пути присутствует как минимум один регистр.
Условное обозначение Описание
S0 Начальное состояние, накопленная сумма 0 руб.
S1 Накопленная сумма 1 руб.
S2 Накоплено 2 руб.
S3 Накоплено 3 руб.
S4 Накоплено 4 руб.

В качестве входного сигнала, будет выступать двухбитная шина, со следующим кодированием номинала монеты:
Условное обозначение Значение Описание
I1 01 1 руб.
I2 10 2 руб.
I5 11 5 руб.

Нарисуем диаграмму состояний нашего автомата (на диаграммах состояния автомата Мили, необходимо указывать выходные сигналы на стрелках перехода состояния, я этого делать не буду, чтобы не загромождать диаграмму, все выходные сигнала будут расписаны в таблице ниже):

image

Распишем таблицу изменения состояний и выходных сигналов:

Установка Quartus Prime

Создание проекта

Для создания нового проекта выберем File -> New Project Wizard. . Первое окно Wizard'а информационное, жмем Next, на втором окне выбираем где будет располагаться проект, его название «soda_machine» и элемент дизайна верхнего уровня «soda_machine», как на рисунке:

image

В следующем окне выбираем «Empty project». Окно добавление файлов «Add files», ничего не добавляем. Окно выбора устройства «Family, Devices & Board Settings», для реального проекта очень важное, но так как, наш проект учебный и до реального ему далеко, здесь оставляем настройки по умолчанию, как на рисунке:

image

Окно выбора настроек других инструментов «EDA Tool Settings», выбираем для симуляции проекта использовать «ModelSim-Altera» и формат «System Verilog HDL» как на рисунке:

image

Последнее окно информационное «Summary», жмем Finish.

Написание исходного кода

У нас будет два основных файла с исходным кодом, это собственно модуль soda_machine и его test bench, оба эти файла будут использовать тип данных insert_type, который описывает как мы кодируем номиналы монет и его логично выделить в отдельный файл. Но есть некоторые трудности, связанные с особенностями компиляции Quartus и ModelSim. Quartus компилирует все файлы с исходным кодом за один проход, а ModelSim каждый файл компилирует отдельно, для того, что бы при компиляции Quartus'ом не возникало переопределения типа insert_type, я использовал технику из C/C++ include guard, основанную на директивах макропроцессора. Кроме того, что бы ModelSim был уверен что тип insert_type, используемый в модуле soda_machine и в test bench'е, один и тот же, поместил его описание внутри пакета soda_machine_types. С учетом этих требований файл soda_machine_types.sv выглядит следующим образом:

Теперь собственно модуль soda_machine, находится в файле soda_machine.sv:

Каким образом будут производится кодирование состояний конечного автомата, я оставил на усмотрение Quartus. Для того что бы указать, как именно следует производить кодирование, используется атрибут (* syn_encoding = «default» *), другие варианты кодирования можно увидеть здесь.

Для добавления файлов в проект используется File -> New «SystemVerilog HDL File» и при сохранении дать соответствующее имя. После добавления этих двух файлов, проект можно скомпилировать Processing -> Start Compilation. После успешной компиляции можно посмотреть полученную схему Tools -> Netlist Viewers -> RTL Viewer:

image

Для просмотра диаграммы состояний конечного автомата Tools -> Netlist Viewers -> State Machine Viewer

image

На вкладке Encoding видно, что Quartus применил схему кодирования «one-hot», это когда для каждого состояния используется отдельный D-триггер, причем состояние S0 кодируется 0, а не 1 как для других состояний, делается это для упрощения схемы сброса в начальное состояние. Можно заметить, что RTL Viewer показывает не совсем принципиальную схему, это скорее концепт. Для просмотра принципиальной схемы использовать Tools -> Netlist Viewrs -> Technology Map Viewer (Post-Fitting)

Симуляция

В принципе на текущий момент у нас есть схема автомата по продаже газированной воды, но необходимо убедится, что она работает правильно, для этого напишем test bench и разместим его в файле soda_machine_tb.sv:

Для удобства работы с ModelSim добавим файл soda_machine_run_simulation.do следующего содержания:

Он запустит нашу симуляцию и выведет графики сигналов в ModelSim. Файл soda_machine_run_simulation.do добавляется в проект File -> New «Tcl script File»

Теперь настроим проект, что бы автоматически запускалась симуляция. Выбираем пункт меню Assignments -> Settings, выбираем категорию EDA Tool Settings -> Simulation. В настройках NativeLink settings выбираем Compile test bench: и нажимаем кнопку Test Benches. в открывшемся окне Test Benches нажимаем кнопку New. В открывшемся окне New Test Bench Settings заполняем поле Test bench name: soda_machine_tb и нажимаем кнопку выбора файла . в нижней части окна, выбираем наш файл soda_machine_tb.sv и нажимаем кнопку Add. Должно получиться как на рисунке:

image

В окне New Test Bench Settings нажимаем OK. Окно Test Benches должно получить следующий вид:

В окне Test Benches нажимаем OK. В NativeLink settings устанавливаем галочку Use script to set up simulation и выбираем файл soda_machine_run_simulation.do. Окно Settings
должно иметь вид:

image

В окне Settings нажимаем OK, производим компиляцию проекта Processing -> Start Compilation, производим запуск симуляции Tools -> Run Simulation Tool -> RTL Simulation. Должен запустится ModelSim и произойти симуляция проекта. Внешний вид вкладки Transcript:

image

Красной рамкой выделен вывод нашего test bench'а о количестве выполненных тестов и обнаруженных ошибках. Внешний вид вкладки Wave:

Читайте также: