Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2006 №12

Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 7. Расширенная отладка

Рабоволюк Алексей


Данная статья является продолжением описания маршрута проектирования FPGA Advantage, начатого в КиТ № 7`2005. В ней речь пойдет об отладке проекта с использованием расширенных средств верификации.

Все статьи цикла:

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

Один из таких инструментов — мультипликация (рис. 1). Мультипликация позволяет следить за работой блок-схемы (Flow Chart), конечного автомата (State Machine) и блок-диаграммы (Block Diagram) непосредственно в процессе моделирования. Например, в процессе моделирования можно открыть любой конечный автомат, являющийся частью моделируемого проекта, и, включив режим мультипликации, увидеть, в каком состоянии автомат находится в данный момент. Текущее состояние выделено красным. Желтым показано предыдущее состояние, а синим — так называемые следы, то есть те состояния, в которых автомат «побывал» хотя бы раз. То же возможно проделать и с блоксхемой. А вот с блок-диаграммой дело обстоит немного по-другому. Там нет отдельных состояний, в которых находится элемент, зато есть сигналы, которые в процессе моделирования принимают различные значения. Эти значения можно посмотреть непосредственно на блок-диаграмме, подключив к нужным сигналам так называемые пробники (Probes).

Рис. 1. Мультипликация

Рассмотрим мультипликацию подробнее.

Мультипликация доступна в результате тесной интеграции программ HDL Designer и Modelsim. В процессе моделирования происходит обмен данными между этими программами, вот почему одним из необходимых условий является совместимость версий программ HDL Designer и Modelsim. В документации среды HDL Designer перечислен список версий Modelsim, с которыми возможна интеграция. Простым решением данной проблемы является приобретение маршрута FPGA Advantage, в состав которого входят совместимые версии HDL Designer и Modelsim. Другое обязательное условие — наличие в проекте дополнительной информации о текущем состоянии проекта в процессе моделирования. Включить автоматическое добавление этой информации, например, к конечному автомату можно, выбрав в его редакторе меню Diagram > State Machine Properties и в разделе Generation > Advanced и включив пункт Instrument HDL for Animation. Это надо проделать для всех конечных автоматов в проекте. Аналогичным образом включается Instrument HDL for Animation и для блок-схемы. Блок-диаграмме никаких дополнительных действий для работы пробников не требуется. После включения Instrument HDL for Animation можно запускать проект на моделирование в Modelsim. После запуска ModelSim, в редакторах графики среды HDL Designer, в нижней части окна появится дополнительная панель управления моделированием (рис. 2). Теперь можно включить анимацию и режим захвата данных (рис. 2) и наблюдать, как в процессе моделирования меняются состояния автомата. Аналогичным образом можно поступить и с блок-схемой. В редакторе блок-диаграммы также появляется дополнительная панель инструментов, но там нет кнопок анимации. Вместо этого можно выделить несколько интересующих сигналов, нажать кнопку Add Probe» (крайняя левая кнопка из области «Пробник» на рис. 2), при этом около имен сигналов появятся маленькие квадратики, символизирующие «пробники» и текущие значения сигналов. FPGA Advantage позволяет изучать состояния автоматов и сигналов не только на последний промоделированный момент времени, но и на любой выбранный вами момент. Для этого необходимо в окне Wave среды ModelSim установить курсор в интересующий момент времени, просто щелкнув левой клавишей мыши прямо по диаграмме сигналов, и в редакторах графики в HDL Designer появятся значения состояния на определенный момент времени.

Рис. 2. Дополнительная панель управления моделированием

Кроме описанных выше возможностей появляющиеся во время моделирования дополнительные панели управления позволяют управлять процессом моделирования непосредственно из редакторов графики среды HDL Designer. Так, на всех панелях присутствуют кнопки управления моделированием (запустить моделирование на выбранный промежуток времени, продолжить моделирование от точки останова и т. д.), кнопки управления прерываниями (установить, отключить, удалить точку прерывания и т. д.), кнопки отображения выделенных сигналов на диаграмме сигналов и получения дополнительной информации о них и кнопка выбора вхождения. Кнопка выбора вхождения (помечена на рис. 2 как «Выбор вхождения») позволяет выбрать состояние какого из множества вхождений компонента отображать. Помимо общих существуют и специфичные для конкретного типа графики кнопки. Так, в редакторе блок-диаграммы присутствуют кнопки управления пробниками (создать, удалить и т. д.). В редакторах блок-схемы и конечного автомата есть свои (общие для обоих типов) кнопки. К их числу относятся кнопки перемещения по истории моделирования, кнопки захвата данных, следы, Cause и синхронизация (рис. 2). Кнопки перемещения по истории моделирования позволяют просматривать, в каких состояниях находились схемы в процессе моделирования. Кнопка Cause предоставляет возможность синхронизировать отображаемые моменты времени в окне редактора графики в среде HDL Designer и окне диаграмм сигналов в ModelSim. В окне диаграммы сигналов ModelSim текущий момент времени помечен курсором — вертикальной желтой чертой на диаграмме сигналов. Кроме Cause есть кнопка синхронизации окон редакторов графики (рис. 2). При включенной синхронизации (на кнопке нарисовано звено цепи: если звено порвано — синхронизация отключена, замкнуто — включена) все открытые окна редакторов графики будут показывать один и тот же (выбранный) момент времени.

При отладке проекта можно использовать точки прерывания. Их устанавливают как на строках HDL текста в окне просмотра исходников ModelSim, так и на графических элементах исходного проекта, в окне редактора графики среды HDL Designer. Для установки точки прерывания на строку исходного текста необходимо открыть окно просмотра этого текста в ModelSim, дважды щелкнув по нужному элементу в дереве проекта в окне ModelSim и один раз щелкнуть левой клавишей мыши по номеру нужной строки, показанному слева. При этом справа от номера строки появится красная точка. Повторный щелчок отключит точку прерывания. Для установки точки прерывания на графический элемент необходимо в среде HDL Designer открыть исходное графическое описание проекта, выделить нужный элемент и нажать на крайнюю левую кнопку из области «Точки прерывания», показанной на рис. 2. Точки прерывания можно добавлять не только на графические элементы блок-схемы или конечного автомата, но и на сигналы на блок-диаграмме. В этом случае процесс моделирования остановится при изменении значения выбранного сигнала.

Другим, не менее важным, инструментом отладки является окно DataFlow симулятора ModelSim, которое открывается через меню View > Debug Windows > Dataflow (рис. 3). Перетащив в него сигнал, можно отследить, какие процессы влияют на значение выбранного сигнала, и таким образом понять, где искать ошибку. Окно DataFlow показывает маршрут распространения сигналов в выбранный момент времени сквозь всю иерархию проекта. Без этой возможности в больших проектах может понадобиться очень много времени на поиск всех процессов, одновременно влияющих на сигнал.

Рис. 3. Окно «dataflow»

Если в распоряжении пользователя имеются сконфигурированные данные для лабораторных работ, о которых говорилось в первой статье, создана блок-диаграмма, описанная во второй статье, создана архитектура для блока BCDRegControl, описанная в третьей статье, и объект BCDRegister без ошибок промоделирован в ModelSim, как это было описано в четвертой статье, успешно синтезирован, как описано в пятой статье, и создан тестбенч, как показано в шестой статье, то можно приступить к отладке проекта BCDRegister при помощи тестбенча.

Для начала необходимо убедиться в том, что включена опция Instrument HDL for Animation в элементах BCDRegister_tester и BCDReg_control. О том, как это сделать, говорилось в начале статьи. Затем можно запускать проект BCDRegister_tb на моделирование. Для этого можно открыть его в редакторе графики среды HDL Designer и нажать на кнопку ModelSim Flow. После того как ModelSim будет загружен, необходимо вернуться в окно редактора блок-диаграммы BCDRegister_tb, выделить в нем все сигналы и нажать на кнопку Add Wave (рис. 4).

Рис. 4. Кнопка «Add Wave»

Откройте какой-нибудь конечный автомат и блок-схему и разместите их на экране так, чтобы были видны и они, и окно Wave среды ModelSim. Далее можно активировать анимацию (1), включить следы (2), синхронизировать окна (3) и промоделировать проект в течение 100 нс (4), как показано на рис. 5. Теперь, продолжая моделировать по 100 нс, можно наблюдать, как работают схемы проекта, а перемещая курсор в окне диаграмм сигналов ModelSim или нажимая кнопки из области «История моделирования» (рис. 2), можно перемещаться в историю моделирования.

Рис. 5. Последовательность нажатия кнопок для использования анимации

Если все сделано правильно, то проект должен работать без ошибок, поэтому предположим, что переключение выходных данных с 09 на 10 не работает. Для поиска мнимой ошибки необходимо в конечном автомате установить точку прерывания на состояние Count_Tens в созданном ранее элементе BCDRegControl. Для этого необходимо спуститься в иерархическое состояние Count_Tens, выделить состояние TensCntOn и нажать крайнюю левую кнопку из области «Точки прерывания», показанную на рис. 2. При этом будет установлена точка прерывания на состоянии, предшествующем выбранному. Для того чтобы увидеть красную точку, символизирующую прерывание, необходимо вернуться на верхний уровень конечного автомата и спуститься в иерархическое состояние CountOnes. Теперь можно нажать кнопку «Перезапуск моделирования» (рис. 2) и запустить моделирование второй слева кнопкой из области «Управление моделированием» на рис. 2. Начнется моделирование. Достигнув точки прерывания, моделирование завершится и ModelSim покажет строку исходного HDL текста, на котором была выполнена остановка. После экспериментов с точками прерывания и мультипликацией ModelSim можно закрыть.

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

Для начала необходимо подключить библиотеку Text. В первой статье цикла описывалось, как можно получить данные для лабораторных работ, как их правильно сконфигурировать и подключать уже существующие библиотеки. Подключив библиотеку Text, находящуюся в той директории, на которую ссылается переменная окружения $FPGADV_LABS, можно открыть ее и найти там элемент text_tester. Он использует в своей работе файл in_out_vectors.txt — его можно увидеть во вложенном окне Downstream среды HDL Designer, а включить отображение окна Downstream можно через меню View > Sub Windows > Side Data/Downstream. После моделирования проекта text_tester с различным содержимым файла in_out_vectors. txt становится понятно, насколько удобнее редактировать один маленький тестовый файл вместо модификации тестбенча и его перекомпиляции.

Очередным инструментом отладки, существенно облегчающим верификацию, является возможность записи ассертов в заданный текстовый файл. Пару слов об ассертах. В языке VHDL есть конструкция, начинающаяся с ключевого слова ASSERT, за которым следует логическое выражение и затем один из нескольких вариантов действий. Конструкции assert использовались при создании тестера для созданного ранее элемента BCDRegister. Assertion (ассерт) можно перевести как «утверждение», то есть в ассертах утверждается, что логическое выражение, следующее за ключевым словом assert, истинно. Если это не так (выражение ложно), то следует одно из нескольких возможных действий: вывод на консоль текстовой строки, остановка моделирования и т. д. ModelSim позволяет выводить сообщения, получаемые от ассертов, в заданный текстовый файл. Таким образом ModelSim позволяет вести отладку на принципиально ином уровне: с помощью ассертов можно непосредственно в проекте описать условия, при которых проект работает правильно, а в процессе моделирования просто наблюдать сообщения от ассертов, например, операция такая-то выполнена успешно, а операция такая-то выполнена с ошибками, и т. д. Так, в тестере для BCDRegister используется следующий ассерт:

который отслеживает пересчет двоично-десятичного счетчика BCDRegister из значения 09 (двоичный код: 0000 1001) в значение 10 (двоичный код: 0001 0000) и в случае успешного переключения, выдает отчет 09 to 10 Rollover PASSED.

Для записи ассертов в отдельный файл необходимо при запуске проекта на моделирование из среды HDL Designer, в окне Start ModelSim, которое появляется перед тем, как будет загружен сам ModelSim, прописать в поле Additional simulator arguments следующую строку: «-assertfile <имя_файла>», например, как показано на рис. 6. Теперь все ассерты будут попадать в указанный файл, а отображаться в консоли ModelSim не будут. Этот файл будет создан в рабочей директории ModelSim, и, следовательно, получить к нему доступ можно через вложенное окно Downstream среды HDL Designer.

Рис. 6. Запись ассертов в файл assert.txt

В следующей статье речь пойдет о расширенных возможностях проектирования среды HDL Designer.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке