Timing Simulation в ModelSim из командной строки

Временная симуляция в ModelSimДанный пост про временную симуляцию (TimingSimulation) в ModelSim, но только простейшим способом, из командной строки. Такой способ дает возможность проводить любую симуляцию, и временную и функциональную без особой привязки к конкретной среде разработки проектов на ПЛИС. Прежде чем приступить к такой симуляции необходимо подготовить все необходимые файлы для ModelSim. За основу берем все тот-же формирователь ЛЧМ сигнала. Далее запускаем ModelSim, открываем новый проект, включаем туда сам файл lchm.vhd, затем генерируем из него шаблон тестбенча, корректируем его под свои нужды, добавляем к проекту файл .sdf и из командной строки запускаем симуляцию. Теперь все подробнее:

1. Новый проект в ModelSim

Новый проект в ModelSim

Задать название проекта, название библиотеки и путь к папке с файлами проекта

Название проекта в ModelSim

Перенести в папку с проектом файл lchm.vhd и добавить его к проекту

Добавление файла к проекту ModelSim

Открыть файл, перейти в окно редактирования файла и открыть окно создания шаблонов

Окно создания шаблонов в ModelSim

Создать шаблон тестбенча из lchm.vhdl, предварительно его откомпилировав из меню Compile ModelSim_а

Создание шаблона тестбенча в ModelSim

Далее Next и в следующем окне ничего не меняя Ok. Будет создан и открыт в окне редактирования файл Lchm_tb.vhd. Это файл шаблона тестбенча, который необходимо отредактировать и откомпилировать.

Компиляция тестбенча

Теперь можно провести функциональную симуляцию ( правой кнопкой мышки)

Функциональная симуляция в ModelSim

Откроется окно Objects где можно увидеть список сигналов которые затем легко мышкой перетаскиваются в другое окно под заголовком Wave

Окно Objects

Запуск симуляции из меню Simulate - Run - RunAll или соответствующая кнопка на панели RunAll

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

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

Отсутствие задержек на диаграмме

2. Теперь можно приступать к этапу временной симуляции. Для этого не хватает файла типа .sdf с временными задержками между сигналами в конкретной ПЛИС на которой предполагается запустить проект и файла типа .vho - так называемый EDA Netlist. Эти файлы можно получить откомпилировав весь проект в среде разработки типа Quartus. Очевидно это утверждение справедливо и для любых других сред - Aldec, Synplify, Xilinx. Что касается Quartus то файлы в проекте формируется так

EDA Netlist

Перед этим необходимо выполнить все необходимые настройки для генерации нетлиста как для подготовки временной симуляции. После генерации нетлиста во вложенной в папку проекта папке simulate/modelsim можно найти файлы lchm_vhd.sdo и lchm.vho. Эти файлы необходимо перенести в папку с нашим проектом Lchm для ModelSim. Кроме этого в папку проекта нужно перенести скомпилированные библиотеки. Теперь можно приступать к временной симуляции из командной строки, последовательно запуская необходимые команды в окне Transcript ModelSim.

# Переход в директорию проекта
cd D:/MyDesignsXp/ModelsimPrj/Lchm_Modelsim66d
# Присвоение SIM_DIR директории проекта
set SIM_DIR "D:/MyDesignsXp/ModelsimPrj/Lchm_Modelsim66d/"
# Имя библиотеки
vlib work

# Компиляция файлов .vho и тестбенча .vhd
vcom -93 ${SIM_DIR}/Lchm.vho
vcom -93 ${SIM_DIR}/lchm_tb.vhd
# Загрузка проекта
# i1 - имя карты портов в файле lchm_tb.vhd
# lchm_vhd_tst - имя верхнеуровневого модуля в файле lchm_tb.vhd
vsim -sdftyp i1=Lchm_vhd.sdo work.lchm_vhd_tst
# Добавление сигналов
add wave *
# Запуск симуляции
run

Top.Mail.Ru