Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ISE_WP.docx
Скачиваний:
19
Добавлен:
22.08.2019
Размер:
8.55 Mб
Скачать

5.5.Функциональное моделирование

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

Целями моделирования могут быть также исследования алгоритмов работы проектируемого устройства и верификация характеристик, получаемых при его аппаратной реализации. В первом случае производится моделирование на верхних уровнях абстрагирования (т. е. преимущественно на поведенческом уровне, и, возможно, на RTL-уровне). Моделирование на физическом уровне призвано проверить возможность работы созданного устройства в заданных условиях эксплуатации (т. е. проверяется возможность работы на заданной тактовой частоте, с требуемыми длительностями сигналов, в заданном температурном диапазоне и т.д.).

План тестирования в идеальном случае должен обеспечивать проверку все возможных состояний проектируемого устройства (полное тестовое покрытие), что практически недостижимо для сложных цифровых устройств. Это обусловливает необходимость выработки оптимальной стратегии моделирования, что является предметом отдельных исследований при проектировании. Таким образом, моделирование представляет собой специальный комплекс проектных процедур, требующий применения специальных знаний, навыков и автоматизированных инструментов верификации. Современные средства автоматизированного проектирования предлагают разработчику большую номенклатуру инструментов моделирования. Примерами могут служить пакеты программ MultiSim (Mentor Graphics), Virtuoso (Cadence) [ и VCS (Synopsys). САПР ISE также имеет встроенные средства моделирования - утилиту iSim.

При моделировании используется подход, основанный на создании и применении специальной моделирующей программы - «испытательного стенда» (testbench). Для этого моделируемое (тестируемое) устройство (в англоязычной литературе - UUT, Unit Under Test) представляется своим синтезируемым кодом (внутренний модуль испытательного стенда), а для проверки его поведения в различных условиях создаются описания тестовых воздействий («моделирующий код», т. е. внешний модуль испытательного стенда).

Задание тестовых входных воздействий реализуется программно на основе языков HDL, в частности, на языке VHDL.

Чтобы в проект добавить тестовый модуль следует вызвать из главного системного меню функцию Project - New Source и в открывшемся диалоговом окне выбрать из списка тип вновь создаваемого модуля: VHDL Test Bench (рис. 58). Для унификации обычно в названии тестового модуля используется постфикс _TB (от testbench). В данном случае основному модулю my2 следует сопоставить тестовый файл my2_tb.

Рис. 58. Создание модуля, описывающего тестовые воздействия.

При добавлении тестового файла в проект САПР ISE также запрашивает ассоциирование этого файла с одним из имеющихся модулей (рис. 59).

Рис. 59. Привязка модуля описания тестовых воздействий к синтезируемому модулю проекта.

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

Результат генерации шаблона тестового файла для верхнего модуля проекта my2.sch показан на рис. 60.

Рис. 60. Пример генерации шаблона модуля описания тестовых воздействий my2_tb.

При генерации поведенческого описания тестового модуля необходимо строго придерживаться правил написания кодов на языке VHDL

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

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

Для данного проекта полное тестовое покрытие заключается в отслеживании сигналов на выходах output_1 и output_2 модуля UUT при всех возможных состояниях его входов input_1 и input_2.

Характер изменения тестовых сигналов можно написать на языке VHDL тестовом модуле (рис. ), а можно использовать шаблон тестового модуля без изменений и определить тестовые сигналы в приложении iSim.

Отредактированный файл тестового модуля следует проверить на наличие синтаксических ошибок. Для этого нужно перейти на вкладку Simulation окна исходных модулей навигатора проекта, выделить тестовый модуль и запустить на исполнение процесс Behavioral Check Syntax из окна Process.

Ошибки следует исправить, сохранить исправленный файл, и вновь проверить синтаксис. Если ошибок нет, то можно приступить к моделированию. Для этого в окне процессов нужно запустить на исполнение программу моделирования, нажав дважды на строку Simulate Behavioral Model. В результате начнет работать специальная программа моделирования iSim и по завершении теста откроется основное окно программы (рис. 61),

Рис. 61. Интерфейс программы моделирования iSim

в свою очередь содержащее: главное меню, палитру инструментов, окно имен классов и процессов проекта (Instance and Process Name), окно объектов моделирования.(Object Name) и окно временной диаграммы с результатами моделирования.

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

Таблица 15. Основные кнопки панели инструментов для работы с временной диаграммой программы iSim.

При работе с данным приложением следует иметь в виду, что при необходимости внести коррективы в тестовый файл, например, для изменения времени событий, следует в окне Instance and Process Name щелчком мыши на названии тестового файла открыть редактор кода, внести необходимые изменения, запомнить файл, снова проверить его синтаксис. После этого в окне документов нужно открыть временную диаграмму перезапустить ее симулирование. При закрытии программы симулирования и переходе к интерфейсу навигатора проекта нужно сохранить в проекте новую редакцию тестового файла.

Другая последовательность действий при необходимости внесения изменений в файл тестовых воздействий: закрыть программу iSim, выполнить редактирование тестового файла и проверку его синтаксиса, а затем снова вызвать процесс Simulate Behavioral Model.

Для задания тестовых сигналов необходимо нажать правой клавишей мыши на нужный входной сигнал и в контекстном меню выбрать пункт Force Clock(рис. 62)

Рис. 62. Задание тестовых сигналов. Первый этап.

и в появившемся диалоговом окне задать параметры входного тестового сигнала (рис. 63).

Рис. 63. Задание тестовых сигналов. Второй этап.

После этого необходимо задать общее время исполнения теста и запустить его на исполнение (рис. 64)

Рис. 64. Задаие общее время исполнения теста и его запуск.

После завершения выполнения теста появятся временные диаграммы изменения входных и выходных сигналов (рис. 65).

Рис. 65. Временные диаграммы входных, промежуточных и выходных сигналов.

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

33

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]