Проектирование в условиях временных ограничений: отладка проектов (часть 2)

№ 8’2007
PDF версия
Настоящая статья продолжает цикл публикаций, посвященных анализу особенностей проектирования в условиях жестких временных ограничений. Рассматриваются вопросы отладки для ПЛИС, включая рекомендации и примеры практической работы с САПР одной из мировых ведущих фирм — Altera.

Настоящая статья продолжает цикл публикаций, посвященных анализу особенностей проектирования в условиях жестких временных ограничений. Рассматриваются вопросы отладки для ПЛИС, включая рекомендации и примеры практической работы с САПР одной из мировых ведущих фирм — Altera.

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

Средства отладки, предлагаемые фирмой Altera

Фирма Altera, понимая всю важность средств отладки систем на ПЛИС и учитывая многообразие ее проблем, предлагает разработчикам целый спектр средств. Основные принципы их работы были рассмотрены в предыдущем разделе. Поскольку динамика развития программных продуктов в данной области достаточно высока, следует оговорить, что последующий материал ориентирован на возможности САПР Quartus II версии 7.0.

Представленные ниже средства фирмы Altera проверялись при их загрузке в отладочный стенд (рис. 9). Разработанный авторами стенд в ЛЭТИ, предназначенный для экспериментальных и учебных целей, позволил произвести большинство запланированных экспериментов. Его основу образует ПЛИС типа Cyclone (EP1C6Q240C8). Вывод свободных контактов ИС на разъемы типа PLD и PLT позволяет подключать (в том числе и по мезонинной технологии) разнообразное оборудование. Плата содержит ИС 16 Мбайт памяти типа DDR SDRAM и предусматривает соединение с ведущим компьютером не только по интерфейсу JTAG, но и USB 2.0 через ИС Cypress.

Плата с ИС фирмы Altera для проведения экспериментов
Рис. 9. Плата с ИС фирмы Altera для проведения экспериментов

Программное обеспечение Quartus II предоставляет несколько способов отладки проекта после его загрузки в FPGA, среди которых можно выделить использование встроенного логического анализатора SignalTap II, интерфейса внешнего логического анализатора LAI (Logic Analyzer Interface), передачу внутренних сигналов на внешние контакты с помощью SignalProbe и создание отладочной инфраструктуры с использованием мегафункции “sld_virtual_jtag”. Каждый из них, безусловно, является очень важным и полезным. Однако в конкретных ситуациях преимущества отдельной утилиты могут быть настолько очевидны, что применение остальных средств представляется нецелесообразным.

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

SignalProbe

Аппаратная отладка — долгий и весьма дорогостоящий процесс. В настоящее время он практически немыслим без привлечения специализированных средств САПР. Одним из ключевых моментов при этом является простота доступа к внутренним сигналам устройства, что вызвано необходимостью визуального наблюдения за проектом при постоянном росте уровня интеграции схем и ограниченности трассировочных ресурсов и контактов ИС. Еще одним условием является минимум влияния на проект отладочных средств. Традиционно используемый разработчиками перебор наблюдаемых точек проекта чаще всего связан с повторной компиляцией. Во многих случаях это приводит к изменениям схемы проекта, и поэтому результаты контрольных экспериментов могут в дальнейшем отличаться от ее работы с удаленными отладочными фрагментами. Фирма Altera для увеличения эффективности процедуры верификации предлагает средство SignalProbe, позволяющее быстро проводить соединение между внутренними сигналами и внешними контактами ввода/вывода без оказания воздействия на основной проект.

Каждое соединение внутреннего сигнала с внешним контактом реализуется в системе как указание о конструкторском изменении ECO (Engineering Change Order), которое применяется к списку соединений после полной компиляции.

Последовательность действий при работе с SignalProbe выглядит следующим образом:

  1. Резервирование контактов ввода/вывода для SignalProbe.
  2. Выполнение полной компиляции проекта.
  3. Назначение источника сигнала для SignalProbe.
  4. Указание количества регистров в цепи конвейера и источника тактовых сигналов.
  5. Выполнение SignalProbe-компиляции с созданием файла конфигурации.
  6. Эксперименты со штатными и SignalProbe-контактами проекта.

Резервирование контактов

Резервировать необходимое количество контактов, ориентированных на SignalProbe, можно как до, так и после выполнения полной компиляции проекта. Программное обеспечение Quartus II предусматривает множество способов назначения SignalProbe-контактов, таких как, например, утилита PinPlanner или Tcl-скрипт. Однако для полноценной работы необходимо использование диалогового окна SignalProbe Pins (меню Tools > SignalProbe Pins…), внешний вид которого представлен на рис. 10.

Диалоговое окно SignalProbe Pins
Рис. 10. Диалоговое окно SignalProbe Pins

В том случае если проект еще не был размещен в кристалле, доступными для заполнения будут только поля Pin name (имя SignalProbe-контакта) и I/O Standard (стандарт ввода/вывода данного контакта). При добавлении нового контакта SignalProbe сначала в списке Current and potential SignalProbe pins выбирается номер вывода микросхемы, который будет использоваться для отладки, и ему присваивается имя в поле Pin name. Далее производится назначение стандарта ввода/вывода. После нажатия кнопки Add в список добавляется новый SignalProbe-контакт. При редактировании ранее зарезервированного контакта вместо кнопки Add появится кнопка Change. В примере были зарезервированы два SignalProbe-контакта: SignalProbe_pin1 и SignalProbe_pin2, назначенные в отладочной плате на пятый и восьмой выводы микросхемы Cyclone соответственно.

Получение списка соединений проекта

Следующий шаг — получение списка соединений проекта, для чего требуется произвести полную компиляцию (Processing > Start Compilation). Источником сигналов для SignalProbe-контактов становится один из внутренних узлов списка соединений, полученного после трансляции проекта. Выбор источника происходит при помощи функции Node Finder с предустановленным фильтром SignalProbe. Возможны ситуации, когда какой-то конкретный узел не будет присутствовать в списке допустимых источников сигналов по причине выполненной оптимизации при синтезе или физической невозможности трассировки данного сигнала до выбранного SignalProbe-контакта. Примером последнего может служить недоступность внутренних комбинационных узлов и регистров гигабитных приемопередатчиков, так как подобная трассировка принципиально невозможна.

Подключение резервированных контактов к узлам проекта

SignalProbe-источники (сигналы проекта, выводимые на ранее зарезервированные контакты ИС) назначаются в поле Source диалогового окна SignalProbe Pins (фильтр SignalProbe в Node Finder установлен по умолчанию). После выбора источника автоматически включается опция SignalProbe enable (разрешение SignalProbe). Для сохранения изменений необходимо нажать кнопку Add/Change. В качестве источников сигналов в примере были задействованы выход регистра Shift_register[0] (для контакта SignalProbe_pin1) и выходной сигнал DFF_register[4] (для контакта SignalProbe_pin2).

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

Синхросигнал тактирования конвейера указывается в поле Clock диалогового окна SignalProbe Pins (в примере — сигнал Clock). А в поле Registers заносится число триггеров, которые планируется последовательно расположить в цепи между источником сигнала и контактом SignalProbe (в примере указан один триггер). Сохранение изменений происходит после нажатия кнопки Change.

SignalProbe-компиляция

Трассировка SignalProbe-соединений происходит при SignalProbe-компиляции (меню Processing > Start > Start SignalProbe Compilation). Выполнение этой команды не изменяет результатов полной компиляции — размещение проекта в кристалле остается прежним. После успешной компиляции поле Status изменяет свое значение на Routed. Результаты SignalProbe-компиляции могут анализироваться в файле отчета (раздел Fitter > SignalProbe Fitting Results). Кроме того, можно оценить временные параметры полученных соединений — меню Processing > Start > Start Timing Analyzer. Основным результатом этого этапа является создание файла конфигурации, содержащего основной проект и дополнительные разведенные SignalProbe-соединения (Processing > Start > Start Assembler).

Отладка проекта с SignalProbe-контактами

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

Для экспериментальной проверки проекта UNIT был разработан источник тестовых сигналов — простейшая VHDL-программа, основу которой составляет конечный синхронный автомат (компонент Avt). Временная диаграмма, формируемая тестовым устройством, приведена на рис. 11.

Временная диаграмма тестового устройства
Рис. 11. Временная диаграмма тестового устройства

Сигналы Reset_M, Start_M, Stop_M служат для сброса, запуска и остановки тестового устройства. Наличие свободных ресурсов в ИС отладочного стенда позволило объединить в конфигурационном файле одной ИС оба проекта: собственно исследуемое устройство и тестирующий его автомат (имя модуля верхнего уровня иерархии — tap). Соединение внешними перемычками двух проектов позволяет при помощи стандартного осциллографа наблюдать на выходных контактах ПЛИС результаты работы устройства. Как и следовало ожидать (в нашем случае), в реальных экспериментах они совпадают с результатами моделирования (см. КиТ № 6, 2007, с. 136, рис. 8). Наблюдению доступны как контакты собственно проекта unit, так и SignalProbe-контакты.

SignalTap II Logic Analyzer

Другим средством внутрикристальной отладки фирмы Altera является встроенное в САПР Quartus II программное обеспечение под общим названием SignalTap II. В отличие от SignalProbe пакет SignalTap II имеет расширенные возможности и позволяет разработчику создавать и встраивать в проект определенное число логических анализаторов, оперативно изменять условия фиксации данных в их памяти и отображать эти данные на экране компьютера. Особенность этого подхода состоит в исследовании поведения внутренних сигналов без использования дополнительных контактов ввода-вывода и какого-либо внешнего оборудования, кроме ПК с загрузочным кабелем того или иного типа (рис. 12). Еще одной является работа в режиме реального времени проекта. Применение анализатора не требует изменения исходных файлов проекта и практически не влияет на его свойства и поведение. Все эти достоинства достигаются путем временного хранения полученных значений сигналов в буферах, организованных во внутренней памяти ПЛИС, а затем посредством JTAG-интерфейса передаваемых в САПР и отображаемых в виде временных диаграмм.

Функциональная схема анализатора SignalTap II Logic Analyzer
Рис. 12. Функциональная схема анализатора SignalTap II Logic Analyzer

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

Камнем преткновения между гибкостью изменений настроек внутрикристального логического анализатора и минимизацией временных затрат на выполнение экспериментов становится необходимость повторной компиляции проекта (так как в отличие от внешнего анализатора внутренний является частью проекта). В SignalTap II возможен выбор одного из двух вариантов компиляции: обычная (полная) и инкрементная (частичная). Обычная компиляция является традиционной. Инкрементная предполагает транслирование только тех частей проекта, в которых были произведены изменения.

В соответствии с этим разработчик может назначить два типа сигналов для своего SignalTap II:

  • Pre-Synthesis — выделяются из проекта после анализа исходного кода, но до выполнения какой-либо оптимизации, связанной с синтезом (сигналы уровня регистровых передач).
  • Post-Fitting — образуются после проведения физической оптимизации и размещения проекта в кристалле.

В том случае если используется инкрементная компиляция, выбор сигналов должен производиться из списка Post-Fitting. В противном случае наоборот — из Pre-Synthesis. После выполнения команды Analysis & Elaboration (меню Processing) сигналы, подсвеченные красным цветом, являются недопустимыми и должны быть удалены из списка. Такое возможно, например, если в список были добавлены сигналы типа Pre-Synthesis, а затем включена опция Incremental Compilation.

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

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

  1. Компиляция (при необходимости) исходного описания проекта для получения списка цепей.
  2. Определение структуры логического анализатора (создание основных блоков).
  3. Конфигурирование и подключение логического анализатора к проекту.
  4. Совместная компиляция проекта с подключенным анализатором.
  5. Загрузка прошивки в ПЛИС и запуск логического анализатора.
  6. Выполнение запланированных действий с проектом и анализ полученных данных.
  7. Если требующая внимания проблема проекта не разрешена, для наблюдения выбираются новые узлы, и процедура отладки повторяется, начиная с третьего пункта.

Вся информация о структуре анализатора и результатах его работы хранится в связанном с ним STP-файле. Управление отладкой осуществляется при помощи редактора STP-файла. Для одного проекта можно создать любое количество таких файлов. Для этого используют два способа: прямую работу с редактором или привлечение параметризируемой мегафункции SignalTap II Logic Analyzer. При необходимости в один и тот же STP-файл можно включать дополнительные экземпляры (instances) анализатора, например, если требуется одновременно отслеживать несколько областей синхронизации (clock domains). Количество экземпляров ограничивается только доступными ресурсами микросхемы.

Возможности конфигурирования и управления работой анализатора

Поскольку вся процедура отладки выполняется с помощью тех или иных действий в редакторе STP-файлов, то целесообразно вначале остановиться на его возможностях и средствах. Функциональное разнообразие задач, решаемых редактором STP-файлов, делает рациональной организацию его работы в основном и пяти дополнительных окнах: Instance Manager, JTAG Chain Configuration, Signal Configuration, Hierarchy Display и Data Log.

Окно Instance Manager

Окно Instance Manager (рис. 13) содержит информацию обо всех экземплярах логического анализатора, добавленных к проекту. В ПЛИС одновременно могут присутствовать несколько анализаторов. Эта возможность оказывается полезной, например, в том случае, если необходимо использовать отдельный анализатор на каждую область синхронизации. Каждый экземпляр анализатора настраивается индивидуально. Отсюда вытекает еще одно полезное свойство — можно варьировать объем выборки для любого сигнала персонально. Таким образом обеспечивается гибкость отладки.

Окно Instance Manager
Рис. 13. Окно Instance Manager

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

В этом окне есть опция — разрешение/запрет инкрементной компиляции. Поскольку в нашем варианте она не рассматривается, то соответствующая галочка убирается.

Окно Signal Configuration

После того как были созданы все необходимые логические анализаторы, можно приступать к их настройке в окне Signal Configuration (рис. 14).

Окно Signal Configuration
Рис. 14. Окно Signal Configuration

В поле Clock происходит назначение частоты выборки. Логический анализатор будет производить запись данных по каждому фронту этого синхросигнала. Несмотря на то, что для синхронизации фиксирования данных анализатором можно выбрать любой сигнал проекта, все же рекомендуется в качестве частоты выборки задействовать глобальные тактовые сигналы. Выбор сигнала Clock выполняется обычным способом через окно Node Finder.

Следующая установка — глубина выборки и тип памяти, используемой для формирования буферов. Глубина выборки (варьируется от 0 до 128 К) определяет число отсчетов, которые будут зафиксированы и сохранены для каждого сигнала. Возможность выбора типа памяти для буферов всецело зависит от применяемой микросхемы.

Далее необходимо выбрать вариант организации буферов для хранения отсчетов. Допустимо использование двух видов заполнения и остановки буферов: циклического или сегментарного. При использовании циклического буфера (рис. 15) задается количество данных, «защелкиваемых» до и после момента фиксации. Циклический буфер является установкой по умолчанию. Во время работы логического анализатора данные непрерывно записываются в память выборки, новые данные замещают старые. Продолжается это до тех пор, пока не возникнет условие защелкивания. После его появления анализатор будет фиксировать значения сигналов до момента переполнения буферов.

Циклический буфер
Рис. 15. Циклический буфер

Сегментарный буфер удобен при периодическом возникновении условий защелкивания. В этом режиме буфер разделяется на несколько частей — сегментов (рис. 16). Запись в очередной сегмент начинается после возникновения условия фиксации. При переполнении буфера новые данные замещают устаревшие. Размер и количество сегментов являются предварительно настраиваемыми параметрами.

Сегментный буфер
Рис. 16. Сегментный буфер

Пояснения относительно группы настроек Trigger (определение условий защелкивания данных в окне Signal Configuration) будут приведены далее после описания возможностей, предоставляемых основным окном логического анализатора SignalTap.

Основное окно редактора

Основное окно редактора является узловым для логических анализаторов. Редактор STP-файлов допускает два режима работы: предварительный выбор фиксируемых сигналов (вкладка Setup) и отображение временного поведения выбранных сигналов (вкладка Data).

Режим отображения временного поведения сопровождается традиционным набором функций удобства наблюдений (перемещение и изменение размеров изображения, задание реальных величин времени, маркеров и т. д.). На рис. 17 показаны основные сигналы устройства Unit при его работе от тестового устройства Avt.

Основное окно анализатора в режиме отображения выбранных сигналов
Рис. 17. Основное окно анализатора в режиме отображения выбранных сигналов

При настройке логического анализатора в список узлов STP-файла добавляются сигналы проекта, подключаемые к анализатору (рис. 18). Для того чтобы сигналы появились в перечне Node Finder, необходимо обработать исходные файлы проекта — команда Start Analysis & Elaboration в меню Processing, и затем можно обращаться к меню Edit > Add Nodes. Выбранные сигналы могут использоваться по-разному. В одних случаях при отладке необходимо отслеживать только поведение выбранных сигналов, в других случаях они используются для формирования условий фиксации данных, в-третьих, — для обеих целей вместе. Для наблюдения за поведением сигналов в строго определенных интервалах времени (в начале, конце или середине этих интервалов) необходимо сформировать специальные условия защелкивания — аналог точек останова в традиционных программных отладчиках. SignalTap II предоставляет широкий выбор различных типов условий. Простейшим случаем является использование так называемых базовых условий защелкивания (Basic Triggers). Напомним, что доступными для добавления к STP-файлу (то же относится и к сигналу Clock — частоте выборки данных) являются сигналы двух типов: Pre-Synthesis и Post-Fitting. Поскольку нами рассматривается случай, когда инкрементная компиляция не используется (сброшена соответствующая опция в окне Instance Manager), выбор сигналов должен производиться из списка Pre-Synthesis.

Сигналы проекта, подключаемые к анализатору, в режиме Setup
Рис. 18. Сигналы проекта, подключаемые к анализатору, в режиме Setup

Для выбора способа применения каждого сигнала необходимо указать требуемые опции: Data Enable, Trigger Enable и Trigger Levels.

Опция Data Enable означает, что узел будет использован в качестве анализируемого сигнала и соответственно отображен на временной диаграмме.

Узлы с установленной опцией Trigger Enable предназначены для формирования условия фиксации.

Опция Trigger Levels позволяет выбрать из списка поведение, соответствующее выполнению одного из 6 базовых условий фиксации: Don’t care (безразлично), Low (низкий уровень сигнала), High (высокий уровень сигнала), Falling Edge (спад сигнала), Rising Edge (фронт сигнала), Ether Edge (любое изменение сигнала).

Фиксация (Triggering) — это останов процесса сбора информации о сигналах при выполнении всех установленных логических условий. Другими словами, фиксация происходит, когда объединение условий по логическому «И» оценивается как истина.

Существует возможность предотвращения внесения изменений в STP-файл, которые потребовали бы перекомпиляции, — использование режима блокировки. Включение режима производится, например, через меню Edit > Lock Mode, после чего становятся допустимы только изменения условий защелкивания.

Однако не редки ситуации, когда в процессе отладки желательно задействовать сигналы уровня RTL, которые в результате оптимизации могут исчезнуть. Данное обстоятельство ограничивает использование Pre-Synthesis-сигналов. Для разрешения этого противоречия можно воспользоваться специальными атрибутами синтеза для сохранения сигналов при размещении проекта в кристалле — Keep (предотвращает оптимизацию комбинационных сигналов) и Preserve (выполняет аналогичную функцию для регистров). При этом необходимо учитывать, что подобные действия могут привести к увеличению занимаемой площади или ухудшению временных характеристик проекта. Исключительными являются сигналы, которые в силу архитектурных особенностей ПЛИС или иных причин не могут быть напрямую захвачены анализатором: выход clkout блоков PLL, сигналы переноса логических элементов (cout0 и cout1), сигналы интерфейса JTAG, выходы блоков SERDES и др.

Наряду с базовыми возможностями задания условий фиксации существуют и расширенные. Они позволяют установить условия с использованием дополнительных логических ресурсов микросхемы. При выборе фиксации типа Advanced в столбце Trigger Levels открывается дополнительная вкладка в основном окне редактора SignalTap IIAdvanced Trigger, в которой посредством графического интерфейса создается сложное условие с использованием различных вычислительных устройств и логических операций.

Настройки Trigger в окне Signal Configuration

Создание сложных условий фиксации данных производится в окне Signal Configuration. Как уже было сказано ранее, в формировании любых условий останова фиксации данных участвуют сигналы с включенной опцией Trigger Enable. Для каждого из таких сигналов выбирается одно из шести условий фиксации.

Достаточно сложной является иерархическая организация условий. SignalTap II позволяет задавать несколько последовательных уровней (поле Trigger Levels в окне Signal Configuration) и формировать сложные команды для логического анализатора, обеспечивая, таким образом, более точный поиск и анализ проектной проблемы при отладке. В начале анализатор SignalTap II обрабатывает условия защелкивания, соответствующие уровню trigger level 1. Когда выражение, связанное с этим уровнем, будет оценено как True, анализатор приступит к вычислению значения логического выражения уровня trigger level 2 и т. д. Любой из уровней может быть представлен базовым или расширенным набором условий фиксации.

Помимо вышеназванных средств по управлению условиями фиксации данных, которые можно обозначить как внутренние, SignalTap II предоставляет возможности взаимодействия с внешним оборудованием. Внешний вход защелкивания (Trigger input) воспринимается анализатором как уровень trigger level 0 и анализируется в первую очередь. Переход к следующим уровням происходит только после получения значения True для выражения, соответствующего этому сигналу. Настройка производится в разделе Trigger in окна Signal Configuration.

Вторая возможность — формирование выходного сигнала фиксирования (Trigger output) для внешнего оборудования или других анализаторов SignalTap II. Это позволяет синхронизировать работу внешних устройств и встроенного логического анализатора. Настройка выходного сигнала фиксирования осуществляется также в окне Signal Configuration в разделе Trigger Out.

Окно JTAG Chain Configuration

Панель (рис. 19) позволяет конкретизировать соединение со встроенным логическим анализатором ведущего компьютера и ИС, выбрать и загрузить конфигурационный файл проекта, содержащий отладочные средства. Содержимое окон отражает наличие JTAG-связи между ПК и отлаживаемым устройством, задает тип загрузочного кабеля, осуществляет выбор в JTAG-цепочке необходимой ИС и определяет загружаемый файл.

Окно загрузки конфигурации
Рис. 19. Окно загрузки конфигурации

Окно Hierarchy Display

Для всех сигналов, подключенных к анализатору, как показано на рис. 20, панель отображает иерархическое расположение блоков проекта. Включение блока (наличие галочки внутри) разрешает присутствие его внутренних сигналов в перечне сигналов основного окна редактора STP-файла.

Окно иерархии отображаемых блоков
Рис. 20. Окно иерархии отображаемых блоков

Окно Data Log

Журналом записей (Data Log) традиционно пользуются для сохранения действий пользователя в последнем сеансе работы (рис. 21). В SignalTap II журнал обычно применяют для сохранения временных диаграмм. Для этого в меню Edit надо выбрать Enable Data Log. Чтобы сохранить полученные анализатором данные, выполняют команду Save to Data Log (меню Edit).

Окно Data Log
Рис. 21. Окно Data Log

При необходимости можно сохранить временную диаграмму в любом из доступных форматов: .csv, .tbl, .vcd, .vwf, .jpg или .bmp.

Основные этапы отладки примера Unit с помощью SignalTap II

Базовую последовательность действий разработчика рассмотрим на предложенном ранее примере устройства.

Компиляция исходного проекта

Традиционными средствами САПР Quartus II задаем имя проекта и его расположение (директорий). В общем случае в нем помещаются файлы, содержащие описание проектируемого устройства (в нашем случае, кроме файла собственно проекта — Unit.vhd, тестовые программы — Avt и TAP) и проектные библиотеки. Указывается компонент верхнего уровня иерархии проекта (TAP). Приводится имя семейства ПЛИС и конкретизируется тип ИС. Для выбранной нами отладочной платы это — ПЛИС типа Cyclone (EP1C6Q240C8).

Задание базовых элементов анализатора

Файл STP (и соответствующие ему логические анализаторы) можно создать различными способами: от создания нового файла (с чистого листа) до корректировки существующего файла.

Для открытия существующего STP-файла можно выполнить одну из следующих последовательностей действий: в меню File выбрать Open и открыть желаемый STP-файл или в меню Tools выбрать SignalTap II Logical Analyzer. Для создания нового STP-файла необходимо в меню File выбрать New, а затем выбрать тип файла Other File и далее SignalTap II File. После этого выполняется последовательность действий в различных окнах редактора STP-файлов. Для назначения тактового сигнала:

  1. В окне Signal Configuration около окна Clk нажимаем клавишу (…) для открытия определителя узлов Node Finder.
  2. В определителе устанавливаем фильтр на сигналы типа SignalTap II: pre-synthesis.
  3. После нажатия List становится доступным список сигналов, из которого может быть выбран тактовый сигнал — Clock. Если он не выбран, то САПР Quartus автоматически назначит тактовым сигнал с именем auto_stp_external_clk, предполагая, что далее разработчик обеспечит подключение к внешнему контакту с этим именем соответствующего источника тактовых импульсов.

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

Выбору сигналов должно предшествовать выполнение Analysis & Elaboration или Analysis & Synthesis, или обычная полная компиляция проекта.

В окне логического анализатора открываем панель Setup. Двойной щелчок в окне вызывает определитель узлов Node Finder. В определителе устанавливаем фильтр на сигналы типа SignalTap II: pre-synthesis. Двойной щелчок на выбранных сигналах открывает их список.

Выбор опций позволяет отнести сигналы к одной из трех вышеперечисленных групп, а для сигналов, выбранных в качестве условий фиксации, можно установить шаблон поведения (по умолчанию установлено Don’t care). Для примера выбраны внешние сигналы устройства: Data_In, En_Count, Load, Reset, Shift, DFF_Register и внутренние: Counter и Shift_register.

Компиляция проекта, совмещенного с анализатором

После создания STP-файла его подключают к основному проекту. Для этого достаточно выполнить следующие действия:

  1. Выбрать меню Assignments > Settings…
  2. В разделе SignalTap II Logic Analyzer установить опцию Enable SignalTap II Logic Analyzer.
  3. Указать имя сохраненного STP-файла — TAP.stp.
  4. Нажать Ok.

После окончания работы с логическим анализатором необходимо снять соответствующую опцию Enable SignalTap II Logic Analyzer.

В окне Instance Manager SignalTap II показываются затраты ресурсов кристалла, вносимые отладочными объектами.

Загрузка конфигурации в кристалл

Перед загрузкой конфигурации в кристалл в окне JTAG Chain Configuration производится подключение к ведущему компьютеру. Для загрузки конфигурации в статическое ОЗУ обычно используется JTAG-интерфейс. Соответствующий тип загрузочного кабеля указывается в строке Hardware. После просмотра JTAG-цепочки в строке Device необходимо указать нужную микросхему ПЛИС. Далее следует указать SOF-файл, полученный после компиляции проекта с подключенными средствами логического анализатора, и нажать Program Device.

Запуск анализатора в работу

Запуск логического анализатора выполняется по команде Processing > Run Analysis.

С момента нажатия кнопки Run и до перехода логического анализатора в состояние ожидания JTAG-порт занят и не должен использоваться для каких-либо других операций.

Кроме обычного запуска можно воспользоваться также автоматическим перезапуском — Autorun Analysis. При этом логический анализатор периодически повторяет процесс сбора информации. Это эквивалентно выполнению команды Run Analysis автоматически после каждого защелкивания.

Анализ результатов

При успешном сеансе работы анализатора происходит фиксация состояния буфера анализатора с назначенными проектировщиком данными.

Результатом работы SignalTap II является временная диаграмма процессов, происходящих с анализируемыми сигналами. Она формируется на вкладке Data основного окна SignalTap II.

Для экспорта текущей диаграммы в один из предложенных форматов необходимо:

  1. Выбрать File > Export…
  2. Указать STP-файл.
  3. Указать формат нового файла.
  4. Для некоторых форматов возможно указание периода синхросигнала.
  5. Нажать Ok.

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

Литература

  1. Quartus II Version 7.0 Handbook Volume 3: Verification (Section V. In-System Design Debugging). www.altera.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *