Внутрисхемное программирование и JTAG-цепочки

№ 6’2011
PDF версия
Многие инженеры и техники, лишь понаслышке знающие о технологии JTAG и тестировании на ее основе, тем не менее постоянно сталкиваются с JTAG-протоколом при выполнении вполне рутинных операций внутрисхемного программирования (или конфигурирования) ПЛИС и FPGA.

Общеизвестно, что без использования
протокола JTAG зачастую просто невозможно провести программирование (или, если угодно, внутрисхемное конфигурирование) целого ряда повсеместно применяемых ИС программируемой логики фирм
Altera, Xilinx, Lattice и т. д. после их монтажа
на поверхность ПП. Два названия процесса
связаны с двумя способами его выполнения
с использованием каналов JTAG: один из них
называется внутрисхемным программированием (In-System Programming, ISP), а другой — внутрисхемным конфигурированием
(In-System Configuration, ISC). Между способами реализации этих двух подходов есть
значительные различия. Однако оба способа
реализуются в рамках протокола JTAG точно
так же, как и собственно JTAG-тестирование,
так как при этом используются одна и та же
аппаратная шина и cхожие протоколы доступа: ISP определяется JTAG-стандартом IEEE
1149.1 [1], а ISC — стандартом IEEE 1532 [2],
являющимся расширением стандарта IEEE
1149.1. Для выполнения этих процедур применяются одни и те же схемные цепи порта контроллера ТАР (TDI, TDO, TMS, TCK,
TRST), а формат SVF ввода команд и данных
для них общий, наряду с некоторыми другими, например, форматом JAM и т. д.

Оба процесса (ISP и ISC) обладают рядом неоспоримых преимуществ, чем
и обусловлено их широкое применение.
Во-первых, это возможность внутрисхемного программирования и перепрограммирования содержимого ПЛИС и FPGA после их
монтажа на ПП и в любое время, в том числе
при нахождении ПП на объекте, внешними
или внутренними средствами (к примеру,
под управлением процессора ПП), а также
перепрограмирование этих ИС дистанционными средствами, например, с помощью
Интернета. Во-вторых, существенно упрощается инвентаризация их содержимого, так
как вместо наклеивания на них шильдиков
с версией конфигурации, считывание которых требует организации визуального доступа, код версии конфигурации может быть
считан по каналам JTAG без прерывания работы системы, в том числе и дистанционно.
Тем не менее процедуры внутрисхемного программирования ПЛИС и FPGA
в ряде случаев вовсе не совмещаются с JTAGтестированием на одном и том же стенде, что
бывает вызвано, в частности, недостаточным
пониманием их тесной взаимной связи. Одной
из причин слабой совместимости стендов внутрисхемного программирования со стендами
JTAG-тестирования является то, что широко
распространенные программно-аппаратные
средства фирм-изготовителей ИС (Quartus II
для компонентов Altera, ISE и iMPACT — для
компонентов Xilinx, ispLEVER — для компонентов Lattice) совершенно не предназначены
для JTAG-тестирования: ни для разработки
тестовых JTAG-программ, ни для их прогона.
Например, система Quartus II предназначена
только для программирования микросхем
фирмы Altera, с микросхемами других производителей она вообще не работает. То же
справедливо в отношении остальных систем ISP и ISC — каждая из них конфигурирует только «свои» ИС, пользуясь при этом
только своими аппаратными средствами
сопряжения с ПП: кабель USB-Blaster фирмы Altera, кабель XILINX Platform USB фирмы Xilinx, кабель USB2A фирмы Lattice. И это
лишь неполный их список, приведенный для
примера.

Любая из упомянутых систем ISP и ISC, тем
не менее, позволяет получить файл в формате SVF для внутрисхемного программирования ПЛИС и FPGA [3], следует лишь ввести
в такую систему описание JTAG-цепочки
платы в соответствующей форме. Такой
файл SVF представляет собой готовый этап
JTAG-программы тестирования платы, разработанной в рамках любой из JTAG-платформ
наряду с этапами собственно тестирования.
Иными словами, разработчики структур всех
JTAG-платформ исходят из предположения,
что этапы внутрисхемного программирования ПЛИС или FPGA будут в них импортированы из соответствующей системы ISP
или ISC в формате SVF.
С другой стороны, аппаратные средства
JTAG-тестеров любых платформ — Asset,
Corelis, Goеpel, JTAG Technologies, XJTAG
и других (кроме платформы onTAP фирмы
Flynn Systems, но о ней речь ниже) — совершенно несовместимы с упомянутыми интерфейсными средствами систем ISP и ISC,
а форматы их тестовых JTAG-программ заметно отличаются от стандартного формата
SVF. Подобная несовместимость, обусловленная конкурентными соображениями
маркетинга, приводит к тому, что для сопряжения систем прогона JTAG-тестов с тестируемыми платами приходится, в дополнение
к аппаратным средствам внутрисхемного
программирования ISP и ISC, приобретать
и весьма недешевые интерфейсные средства
JTAG-тестеров той или иной платформ.
Мне часто приходится слышать такой вопрос: можно ли использовать уже имеющиеся
в нашем распоряжении интерфейсные средства ISP-фирм (Altera, Xilinx, Lattice и т. д.) для
сопряжения тестируемых ПП с одной из платформ JTAG-тестирования? Положительный
ответ на такой вопрос можно дать только
в отношении платформы JTAG-тестирования
onTAP фирмы Flynn Systems [4]. Наряду
с очень простыми и недорогими собственными средствами сопряжения с тестируемыми
ПП (рисунок), система onTAP позволяет использовать для прогона своих JTAG-тестов также широко распространенные кабели XILINX Platform USB фирмы Xilinx.

Рисунок. Средство сопряжения с тестируемыми ПП

Все дело в том, что onTAP — это, пожалуй, единственная из платформ разработки JTAG-тестов, для которой стандартный формат
SVF [3] является выходным форматом всех тестовых программ: теста
инфраструктуры и межэлементных связей, тестов элементов памяти
и кластеров, прожига ИС флэш-памяти и т. д. Это заметно повышает
гибкость применения самих JTAG-тестов платформы onTAP, поскольку дает возможность использовать их (с некоторыми ограничениями) в любой другой JTAG-платформе. JTAG-тесты, сгенерированные на платформе onTAP, могут быть загружены и запущены через
секвенсер тестовых этапов, позволяющий комбинировать выполнение любых наборов JTAG-тестов и импортированных ISP-файлов,
поскольку все они присутствуют в одном и том же формате SVF.

В заключение — несколько слов о факторах, обуславливающих
применение того или иного количества JTAG-цепочек в схемах тестируемых ПП. Разработчики схем, не имеющие достаточного опыта
в тестопригодном проектировании для JTAG-тестирования, предпочитают размещать каждую из ИС JTAG (или небольшие группы
таких ИС) в отдельных JTAG-цепочках. Оправданием этого зачастую
служит утверждение, что специфические средства отладки таких ИС
требуют их размещения в раздельных JTAG-цепочках. Подобные
утверждения когда-то были совершенно верны, но уже давно не соответствуют действительности. Например, последние версии эмуляторов фирмы WindRiver с успехом работают с процессорами, находящимися в одной и той же JTAG-цепочке с ИС, никакого отношения
к эмуляторам не имеющими.

Другое распространенное заблуждение связано с внутрисхемным программированием ПЛИС и FPGA. Разработчики схем ПП необоснованно
полагают, что для применения к таким ИС программно-аппаратных
средств фирмы-изготовителя (Quartus-II, ISE, ispLEVER) сами ИС непременно должны находиться в отдельных JTAG-цепочках. Это, однако, вовсе необязательно, поскольку каждая из упомянутых систем позволяет
получить файл JTAG-конфигурирования в формате SVF, следует лишь
предварительно ввести в программное обеспечение этих систем описание JTAG-цепочки, содержащей любые ИС JTAG в дополнение к программируемым. Полученный таким образом файл SVF содержит команды JTAG-конфигурирования для «своей» ИС и команды BYPASS — для
«чужих» ИС. Кроме формата SVF, для этих целей применяются и другие
форматы — JAM, STAPL и JEDEC. Если же конфигурируемые компоненты поддерживают и стандарт IEEE 1532 (а это верно для большинства
из них), то даже применение формата SVF излишне для размещения таких компонентов в JTAG-цепочках с любым количеством произвольных
ИС JTAG, совсем необязательно программируемых.

Сказанное вовсе не означает, конечно, что одновременное использование нескольких портов ТАР (или, другими словами, организация ИС
JTAG тестируемой ПП в виде нескольких отдельных JTAG-цепочек)
не является оправданным или даже желательным в ряде схемотехнических ситуаций. Известно, к примеру, что этапы JTAG тест-программ, связанные с прожигом ИС флэш-памяти, являются наиболее времяемкими среди прочих. Поскольку длительность прожига флэш-памяти
напрямую связана со значением ТСК — частоты синхросигналов
JTAG-цепочки, управляющей прожигом, а эта частота определяется
ТСК наиболее медленной ИС цепочки, при проектировании схемы рекомендуется сконцентрировать JTAG-управляемость всеми сигналами
ИС флэш-памяти (не только шинами адреса и данных, но и сигналами
управления) в одной ИС JTAG с наибольшим значением ТСК. Зачастую
эта ИС размещается в отдельной JTAG-цепочке. Довод о времени выполнения того или иного тестового этапа, не обязательно связанного
с прожигом флэш-памяти, является, как правило, достаточным для
выделения ответственных за этот этап ИС в отдельную JTAG-цепочку.
Это решение, разумеется, должно быть принято на этапе тестопригодного проектирования схемы.
Раздельные JTAG-цепочки могут понадобиться также при организации кластерного теста тех или иных фрагментов схемы при помощи внешней тестовой платы, подключаемой к тестируемой ПП
через ее краевой разъем, покрытие дефектов монтажа которого тоже
является одной из задач построения этого кластера. Мультипортовое
JTAG-тестирование неизбежно и при тестировании блоков или узлов,
состоящих из нескольких JTAG-тестируемых ПП (одинаковых или
разных), если кросс-плата этого блока не поддерживает интерфейс
JTAG. В таком случае каждая из одновременно тестируемых ПП подключается к одной или нескольким JTAG-цепочкам. Мультипортовое
JTAG-тестирование — основа синхронного теста большого числа
одинаковых ПП при их массовом или крупносерийном производстве. Решение о числе JTAG-портов в таких конфигурациях принимается в зависимости от ожидаемой производительности процесса
тестирования и наличия на предприятии мультипортового тестового
оборудования.

Аппаратное обеспечение всех существующих платформ поддержки JTAG-тестирования имеет те или иные мультипортовые модификации [5] — два, четыре или больше. Это, в частности, означает, что
при проектировании ПП важно принимать во внимание, на каком
оборудовании предполагается проводить тестирование этой ПП.
Если линия монтажа вашей ПП оборудована одним четырехпортовым JTAG-контроллером, а вы планируете, к примеру, использовать в схеме шесть JTAG-цепочек, то следует быть готовым к тому,
чтобы использовать некий наружный коммутатор цепочек (такие,
разумеется, существуют) или же приобрести дополнительный двухили четырехпортовый JTAG-контроллер.

Литература

  1. www.jtag-test.ru/JTAGUniversity/articles/01-PE_5_2007.php
  2. www.jtag-test.ru/JTAGUniversity/articles/20_2011.php
  3. www.jtag-test.ru/JTAGUniversity/articles/04-PE_8_2007.php
  4. www.jtag-test.ru/JTAGUniversity/columns/KiT_05_2011.php
  5. www.jtag-test.ru/JTAGUniversity/articles/12-PE_6_2009.php

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

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