https://lauftex.ru/product/lf-21060-lcw-tsifrovoy-signalnyy-protsessor

Обход проблем, порождаемых JTAG-тестированием: исследование проблемы


PDF версия

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

Отказ от ответственности

Рабочая группа, ответственная за создание и изменения в стандарте IEEE 1149.1, может, в принципе, реализовать некоторые из идей, представленных в настоящей статье [7]. Однако содержание настоящей статьи не обязательно отражает мнение и результаты работы данной группы. Идеи и мнения, отраженные в настоящей статье, принадлежат исключительно ее авторам.

Введение

В статье [7], представленной в материалах международной конференции по тестированию 2010 года (ITC IEEE), описаны последствия проблемы, которую авторы назвали «лоботомией» [6] и которая представляет собой побочный эффект использования стандарта JTAG IEEE 1149.1 [1, 2] в процессе тестирования сложных печатных плат (ПП). Этот (возможно, чрезмерно красочный) термин был придуман для того, чтобы подчеркнуть, что в начале процесса тестирования микросхема работает в «нормальном» режиме. Затем все ИС JTAG переключаются в режим «тест», когда все контакты ввода/вывода (КВВ) вдруг оказываются под управлением внутренних регистров тестирования без всякой синхронизации с той или иной внутрисхемной активностью в ПП. Такой резкий переход может нарушить нормальное функционирование самой ПП, а также функционирование логики системы внутри каждой ИС JTAG, которая участвует в тестировании. Термин лоботомия, вообще говоря, относится к радикальной медицинской практике удаления хирургическим путем лобной доли мозга человека, что вызывает необратимые изменения когнитивных свойств мозга и самой личности.
В процессе граничного сканирования ПП ее контакты ввода/вывода могут оказаться внезапно, без какого бы то ни было предупреждения, отключенными от их внутренних связей. Реальная проблема может возникнуть, однако, по завершении процесса граничного сканирования, когда TAP-контроллер ИС переходит (сбрасывается) в состояние Test-Logic-Reset (TLR), а контакты ввода/вывода ИС снова подключаются к внутренней логике ИС. Затруднительно, тем не менее, однозначно предсказать последствия переключения ИС из нормального режима работы в режим JTAG-тестирования и обратно. Цель работы [7] заключалась в попытке анализа того, какие функции следует добавить к стандарту IEEE 1149.1, что позволило бы управлять непредсказуемыми побочными эффектами, возникающими при переходе в режим JTAG- тестирования и при выходе из него.
В предлагаемой статье описан пример JTAG-тестирования реальной платы, представленный корпорацией Fujitsu, при котором был обнаружен ряд неожиданных побочных эффектов, имевших место как в процессе JTAG-тестирования, так и после его завершения. Инженеры корпорации Fujitsu провели подробное исследование происходящих процессов, приведенное в статье. Мы также обсудим точку зрения рабочей группы IEEE 1149.1 на эти проблемы и способ их решения.

Исследование проблемы

Разработанная фирмой Fujitsu системная плата ПК, содержащая несколько ИС JTAG, постоянно доставляла тест-инженерам массу хлопот. На плате находится чип, носящий название контроллер-коммутатор платформы (ККП) (Platform Control Hub, PCH) [7]. Внешний вид платы приведен на рис. 1, а ее блок-схема — на рис. 2.

 

Рис. 1. Внешний вид системной платы Fujitsu

Рис. 2. Блок-схема системной платы Fujitsu

В ККП интегрированы функции множества внешних устройств, таких как многочисленные интерфейсы ввода/вывода (LAN, PCIe, SATA, USB и т.д.). Он также поддерживает усовершенствованный интерфейс конфигурации и управления питанием (Advanced Configuration and Power Interface, ACPI [5]) — открытый промышленный стандарт, используемый для конфигурирования устройств и управления питанием. ACPI представляет собой сочетание аппаратных средств и встроенного ПО, с помощью которого можно управлять такими состояниями системы, как Power States, Device States, Processor States и Performance States. ККП также управляет некоторыми регуляторами напряжения на плате, включая и отключая их для поддержания различных уровней питания, что определено в спецификации ACPI, и также спящими режимами системы («Sleep», «Suspend» и «Hibernation»).
ККП и другие многофункциональные компоненты активно участвуют в управлении питанием в режиме реального времени, выполняя проверки работоспособности системы и другие операции управления, удерживая напряжения в границах, необходимых для обеспечения нормальной работы системы.
Как можно видеть на рис. 2, ККП и процессор управления питанием работают параллельно, поддерживая различные уровни напряжения питания и управляя соответствующими регуляторами напряжения, которые включаются или отключаются, что обеспечивает требуемые уровни логических напряжений на плате. Во время тестирования выходы ККП должны быть переведены в заведомо обусловленное состояние, чтобы обеспечить устойчивое управление напряжением. Но что происходит, когда JTAG-тест завершен и ККП больше не находится в тестовом режиме?
В современных микросхемах имеются средства управления собственным внутренним энергопотреблением. Эти средства позволяют подключать и отключать при необходимости основные модули микросхемы. Такие переключения вызывают повышенное или пониженное потребление тока на некоторых отрезках времени.
Тест-инженеры могут и не знать всех тонкостей управления функциями питания ИС. Тестируемая плата также не ведет себя как единая система во время тестирования. Например, модули памяти DRAM могут просто не участвовать в тестировании. Это означает, что ККП и/или какие-то другие центральные устройства, возможно, не смогут выполнить некоторые заданные функции. Добавьте к этому лоботомию некоторых ИС JTAG во время граничного сканирования, и вы получите весьма веские причины для появления побочных эффектов при JTAG-тестировании.
В случае с исследуемой платой ситуация была такова, что активные средства управления питанием могли наложиться (взаимодействовать) со средствами управления граничным сканированием. Стратегия JTAG-тестирования, разработанная тест-инженерами Fujitsu, основывалась на запитывании всей платы, кроме модулей DIMM. В разъемы этих модулей памяти они вставляли некие переходные устройства для замыкания цепочек сканирования между платой и переходником, предназначенные для тестирования самих разъемов DIMM с целью увеличения тестового покрытия. Затем предполагалось использовать JTAG-тестер, разработанный фирмой Fujitsu, для обнаружения производственных дефектов в смонтированной печатной плате. Тест должен был выполняться в два этапа, описание которых в статье значительно упрощено. Каждый из этапов должен начинаться и заканчиваться в состоянии Test-Logic-Reset TAP контроллера, и на каждом этапе используется команда PRELOAD (ПРЕДЗАГРУЗКА) для подготовки тест-векторов в ячейках регистров граничного сканирования на контактах ИС до начала выполнения (первой) команды EXTEST. Первый JTAG-тест должен проверять исправность взаимосвязей между сканируемыми ИС, а второй тест проверяет GPU/VRAM интерфейс с помощью команды EXTEST для несканируемых ИС. Однако в некоторых случаях второй тест не выполнялся верно. Было установлено, что некоторые из регуляторов напряжения на тестируемой плате отключались между выполнением этих двух команд EXTEST. Чтобы понять суть происходящего, потребовалось выполнение тщательного лабораторного анализа.
Инженеры Fujitsu под руководством группы из Intel обнаружили следующие факты. Пока ККП выполняет EXTEST на контактах ввода-вывода через некий JTAG-регистр, шины питания остаются включенными. В тот момент, когда этот JTAG-регистр ККП прекращает управление вводом-выводом, переходя в состояние Test-Logic-Reset, или выполняя команду PRELOAD, шины питания могут быть отключены. В ходе JTAG-тестирования сигналы на печатной плате приводили к запуску встроенного таймера, приводящего к «горячему сбросу» по питанию регуляторов напряжения, находящихся под управлением ККП. Это происходило параллельно с завершением первого JTAG-теста и началом второго JTAG-теста для GPU и VRAM. Второй тест был, таким образом, прерван из-за сброса питания, что, разумеется, помешало его правильному выполнению. Если JTAG-тест контроллер, что типично, запитывается от собственного источника питания, к нему не поступает никакая информация об ошибочных результатах, указанных выше, и он никак не может принять их к сведению.
Для разрешения этой проблемы были разработаны два подхода. Первый из них предполагает загрузку в один из слотов одного из ЗУ DIMM реального ИС ЗУ с тем, чтобы не возникало ситуации запуска таймера, приводящего к «горячему сбросу» по питанию регуляторов напряжения, находящихся под управлением ККП. Второй подход предполагает некоторую перестановку последовательности двух тестов: вначале выполняется для GPU и VRAM, никак не мешающий функционированию ККП, а затем — запускается собственно тест межсвязей (interconnect), включающий в себя также и выполнение теста ККП. По завершению такой последовательности тестов проблем с питанием не возникает.
Излишне упоминать, что исследование этой проблемы предполагает наличие квалифицированного подхода, а также опровергает давно и весьма распространенное мнение о том, что в рамках технологии граничного сканирования (JTAG) можно обеспечить тестопригодность печатных плат, вовсе не принимая во внимание функциональных особенностей этих плат.
Что можно было бы предпринять для разрешения такого рода проблемы? Подобные вопросы, как правило, находятся под рассмотрением рабочей группы IEEE 1149.1, начиная с версии этого стандарта 2001 года. В следующих разделах статьи будут введены некоторые новые концепции и дополнения к JTAG-стандарту IEEE 1149.1,
которые призваны позволить тест-инженеру обеспечить безопасное JTAG-тестирование.

Инициализация ИС JTAG для тестирования

За период, прошедший с 2001 года, в сложности ИС произошли значительные изменения, что естественно за такой длительный период. Появилось множество ИС с программируемой функциональностью, в частности, программируемыми функциями контактов ввода-вывода. К примеру, контакты ввода-вывода могут принадлежать к семейству контактов 3,3 В, или 1,8 В, или ряду других. Высокочастотные контакты принадлежат к семействам тех или иных протоколов, как, например, PCI Express или SATA. Колебания в их дифференциальных цепях могут настраиваться от полных до частичных (скажем, от 75 or 52,7%). Рабочие частоты также подстраиваемы в широком диапазоне значений, что зачастую означает возможность включения или выключения групп контактов при помощи той или иной встроенной памяти, управляющей этими группами.
Технология JTAG, вообще говоря, не предполагает выбора каких-то специальных частотных диапазонов или протоколов ввода-вывода для своего функционирования. А поскольку никакой особой связи между требованиями стандартов 1149.х и поведением контактов ввода-вывода нет, все происходит очень просто. Если на уровне тестопригодного проектирования платы выполнено согласование электрических сигналов на логических уровнях и AC/DC, приемо-передача данных происходит успешно. Это согласование электрических сигналов должно быть выполнено, разумеется, до начала выполнения JTAG-тестирования и периодического переключения контактов ИС из нормального режима в тестовый и наоборот. В противном случае падение теста может произойти из-за электрической несовместимости в схеме, а не в результате обнаружения производственных дефектов в печатной плате.
Сложные ИС сегодня также снабжаются встроенными средствами управления их собственным питанием, обладая возможностями самостоятельно включать те или иные внутренние подсистемы. Их применение связано, очевидно, с продлением срока службы батарей питания и уменьшением энергопотребления. Другая цель весьма важна в аспекте тестирования, поскольку немало печатных плат поступают на линию тестирования, не будучи снабжены никакими средствами термической защиты в процессе производственного тестирования. Поскольку при JTAG-тестировании тестируемая плата должна быть запитана, следует позаботиться об отводе избыточного тепла. Желательно, таким образом, чтобы ИС JTAG были снабжены режимами отключения питания, запускаемыми в ситуациях типа «придержать в охлажденном состоянии» («safe and cool») [7]. Наличие такого режима служило бы активным предупреждением о необходимости вмешательства в процесс отключения питания.
Специально для реализации этой цели рабочая группа 1149.1 разработала две новых команды, INIT_SETUP и INIT_RUN [7]. Команда INIT_SETUP предназначена для обеспечения доступа к регистру INIT_DATA, предназначенному для выбора семейств контактов ввода-вывода по их уровням напряжения, протоколам связи, частотным характеристикам отдельных контактов и т.д. Одним из важных типов данных должны при этом быть параметры тестовых приемников, применяемых в технологии 1149.6 [6].
Настраиваемость этих параметров может оказаться весьма важной, чтобы обеспечить обнаружение сигналов, приходящих к тестируемым ИС с верхних иерархических уровней. Следует обратить внимание на то, что выполнение команды INIT_SETUP не захватывает ресурсы JTAG-ячеек, в точности как и при выполнении команды SAMPLE/PRELOAD, не нарушая при этом нормального функционирования ИС JTAG.
Команда INIT_RUN предназначена для управления встроенной диаграммой (машиной) состояний, синхронизируемой ТСК, для управления рядом требований к течению процесса тестирования. Вообще говоря, здесь речь идет о механизмах блокировки функций ИС в случаях, когда возникают шумовые помехи или избыточная теплоотдача.
Применение этой команды могло бы ввести ИС JTAG в состояние «safe and cool», а поскольку, как было указано, выполнение команды INIT_SETUP не захватывает ресурсы JTAG-ячеек, контакты ввода-вывода ведут себя как при выполнении команды
CLAMP. Это, очевидно, означает, что перед выполнением данной команды можно, после предварительного выполнения команды PRELOAD, разумеется,  ввести контакты ИС в любой требуемый режим ввода-вывода.
При изучении этой ситуации рабочая группа 1149.1 столкнулась с тем, что объем данных, которые необходимо ввести в регистр INIT_DATA, огромен — сотни и тысячи бит. Это, в частности, указывает на необходимость для каждой конкретной ИС и для каждого конкретного ее расположения на печатной плате использовать специфическое содержимое регистра INIT_DATA. Очевидная проблема при этом заключается в том, что для другой точно такой ИС придется применять другое содержимое этого регистра.
Поскольку содержимое регистра INIT_DATA для подобных случаев может состоять из большого числа сравнительно коротких полей данных, было принято решение пополнить структуру файлов BSDL новым дополнением (IEEE01, Annex B). Это дополнение предназначено для описания указанных выше полей в рамках длинных регистров и задания им осмысленных имен. Аналогичным образом, наборы данных, загружаемые в эти поля, также будут иметь осмысленные имена. Например, полю регистра PLL-A может быть присвоено имя PLL-Off, и это будет означать, что PLL-A выключен как часть настройки (setup) теста. Также точно можно программировать уровни напряжений интерфейса ввода-вывода SATA, поскольку они совместимы с уровнями напряжений на соответствующих соединенных с ними контактах.
Вывод, таким образом, заключается в том, что для каждой ИС должен существовать специальный регистр INIT_DATA, содержащий уникальные данные инициализации. Рабочая группа представляет себе средства графической поддержки тест-инженера в подобной ситуации, работающие в самом общем виде, лишь бы обеспечить загрузку необходимых данных и обеспечить непротиворечивость настроек при тестировании всех ИС на плате.

Режим готовности к тестированию

В статье [7] впервые было введено такое понятие, как модальное состояние «Готовность-к-тестированию» («Ready-for-Test»). Это модальное состояние устанавливается в результате процесса инициализации (INITIALIZE) как определенная последовательность команд INIT_SETUP и INIT_RUN, что приводит их в итоге к некоему «постоянному» состоянию в JTAG-цепочке, даже в том случае, когда все ТАР-контроллеры в цепочке сбрасываются, т.е. переводятся в состояние Test-Logic-Reset (TLR). Замысел конфигурации заключается в том, что эти сброшенные ИС JTAG могут продолжать принимать участие в тестировании как «одиночные ИС», тогда как остальные «инициализируются» последовательностью команд INIT_SETUP и INIT_RUN.
Факт того, что внутренняя логика ИС JTAG была отключена от контактов ввода-вывода, далее не принимается во внимание и связи с контактами ввода-вывода не восстанавливаются случайным образом между тестами.
В сущности, модальное состояние «Готовность-к-тестированию» представляет собой некое состояние «парковки» для ИС JTAG во время тестирования в предположении, что все контакты ввода-вывода находятся в безопасных состояниях, т.е. отсутствуют противоречия на общих шинах ИС и т.д. Со времени публикации этой статьи рабочая группа 1149.1 разработала новый (хотя и опциональный) режим JTAG, реализующий концепцию «Готовность-к-тестированию», излагаемую ниже.
Как известно, при выполнении обычного JTAG-тестирования, в частности, при выполнении теста межсвязей, контакты ввода-вывода переводятся в тестовый режим (разумеется, после предзагрузки командой PRELOAD), в результате чего все эти контакты ИС остаются под полным управлением регистра граничного сканирования РГС. Выполняемые при этом команды — EXTEST, CLAMP, и некоторые другие. Если, однако, ТАР-контроллер JTAG-цепочки сбрасывается в состояние TLR, это может инициализировать выполнение нетестовых команд BYPASS или IDCODE. Проблема заключается в том, что контакты ввода-вывода ИС JTAG могут при этом переключиться на внутреннюю логику ИС и нарушить режим тестирования. Результаты такого нарушения непредсказуемы. Стоит обратить внимание на следующий факт: если несколько независимых JTAG-тестов выполняются последовательно, и каждый из них применяет свою последовательность загрузки командами PRELOAD для дальнейшего использования команд EXTEST, то после полного завершения теста контакты ввода-вывода цепочки ИС JTAG также могут самопроизвольно переключиться на свою системную логику.
Рабочая группа 1149.1 была вынуждена ввести новую команду CLAMP_HOLD, предназначенную для предотвращения переключения (сброса) контактов ввода-вывода ИС JTAG в состояние TLR при загрузке нетестовых команд. Другими словами, контакты ввода-вывода ИС JTAG должны оставаться под управлением регистра граничного сканирования, т.е. в тестовом режиме, даже после загрузки в регистр команд кодов операций BYPASS или IDCODE (после прохождения сброса TLR).
Проблема такого уровня возникла перед рабочей группой впервые за последние 20 лет существования стандарта JTAG. Весь этот период нетестовые команды рассматривались в качестве «нормальных» команд, никак не связанных с управлением контактами ввода-вывода ИС JTAG. Задача, таким образом, заключалась в организации требуемого поведения встроенного механизма JTAG. Одно из предложений заключалось, к примеру, во введении в диаграмму состояний ТАР неких новых дополнительных состояний, что, конечно, привело бы к радикальным переменам в порядке перемещения по диаграмме ТАР. Решение, которое было принято в результате длительных обсуждений, заключается в использовании опциональной и параллельной ТАР-диаграммы состояний, называемой ТРС (Контроллер Сохранения Теста, Test Persistence Controller). Общая структура диаграммы ТАР при этом сохраняется, а при помощи переходов по диаграмме ТРС происходит управление нетестовыми командами посредством бимодальных определений.
Диаграмма ТРС состоит всего из двух состояний (рис. 3): «Контроллер Сохранения Теста Включен» (Test-mode Persistence On) и «Контроллер Сохранения Теста Выключен» (Test-mode Persistence Off). В дополнение к этому введены две новых команды переключения: CLAMP_HOLD и CLAMP_RELEASE. Вплоть до официального утверждения новой версии стандарта эти имена могут и измениться.
Рабочая группа в настоящее время рассматривает также возможность введения в ТРС третьего перехода — из состояния «Вкл» в состояние «Выкл», который будет называться «BYPASS Escape» (Уход от команды BYPASS) и использоваться в качестве некоего механизма самоотключения.

 

Рис. 3. Диаграмма состояний контроллера сохранения теста (ТРС)

Обратите внимание на то, что прохождение состояния TLR контроллера TAP никак не влияет на смену состояний контроллера ТРС. Если, однако, выполняется асинхронный сброс посредством контакта /TRST или сигнал On-Chip POR активен, контроллерTPC переходит в выключенное состояние.
Для понимания того, каким образом контроллер сохранения теста может управлять контактами ввода-вывода ИС JTAG, рассмотрим структуру типичной JTAG-ячейки, связанной с произвольным выходным контактом JTAG-регистра. Классическим примером такого рода является ячейка ВС-1, показанная на рис. 4. Собственно выходной контакт подключен к соответствующему драйверу. Общим для всех подобных JTAG-ячеек является наличие сигнала Mode, генерируемого контроллером ТАР по результатам дешифрации кодов команд (см. значения сигнала Mode в табличке над схемой рис. 4). Если Mode=0, выходной контакт ИС JTAG напрямую подключен к системной логике ИС, и ячейка, таким образом, прозрачна. Если Mode=1, то на выходной контакт ИС JTAG подается содержимое выходного триггера М2 и, таким образом, выходной контакт ИС JTAG отключен от системной логики ИС.

 

Рис. 4. Структура JTAG-ячейки ВС_1

Аналогичные JTAG-ячейки управления иили наблюдения могут применяться также и совместно со входными контактами. В этом случае, как и прежде, при смене команды, включающей в себя сигнал Mode=1, на команду, включающую в себя сигнал Mode=0, контакты ввода-вывода переключатся на внутреннюю логику ИС. Это произойдет автоматически при прохождении контроллером ТАР состояния TLR, поскольку при этом в регистр команд загружается код команды BYPASS (или IDCODE). Концепция применения контроллера сохранения теста предполагает, наряду с этим, что подобные изменения не должны произойти, пока этот контроллер включен. Сигнал Mode следует изменить для поддержки «persistence on» (см. сигнал CH-Mode на рис. 6).
Стандарт 1149.1 определяет также структуру ячеек управления запиранием выходных контактов. Это могут быть, конечно, обычные ячейки типа ВС-1. Однако разработчики ИС JTAG могут выбрать применение и таких ячеек управления, которые включают или выключают соответствующий драйвер при прохождении контроллером ТАР состояния TLR.
Пример соответствующей структуры показан на рис. 5, где сигнал Reset* предназначен для установки или сброса триггера UpdateDR (R2). Этот сигнал генерируется ТАР-контроллером при прохождении им состояния TLR. Выполнение такой процедуры, вообще говоря, оправдано в конце выполнения теста, когда ТАР входит в состояние TLR и разработчик ИС JTAG полагает, что драйверы всех контактов ввода-вывода автоматически выключаются. Концепция применения контроллера сохранения теста, тем не менее, предполагает, что отключения этого сигнала также не происходит, и сигнал Reset* должен поддерживать состояние «persistence on» — см. сигнал CH-ControlR Reset* на рис. 6.

 

Рис. 5. Структура JTAG-ячейки c предварительно устанавливаемым триггером Update (ControlR)

Рис. 6. Реализация схемы контроллера сохранения теста

Контроллер сохранения теста имеет всего два состояния, и, таким образом, может быть реализован всего на одном триггере, что и показано на рис. 6. Физически ТРС может быть размещен внутри самого контроллера ТАР, поскольку его входные сигналы оттуда легкодоступны, и предназначен для выдачи сигналов Mode и Reset*, поступающих в регистр граничного сканирования JTAG. Если разработчик ИС сталкивается с проблемой «одношаговой защелки», он может, разумеется, применить несколько избыточных триггеров для компенсации этого затруднения.
Сброс триггера СН-1 ТРС происходит либо по включению питания, либо когда TRST*=0. Этот триггер устанавливается в «лог. 1» (On) в соответствии с модификацией команды CLAMP_HOLD. Будучи однажды установлен, этот бит может быть сброшен, либо когда TRST*=0, либо в соответствии с инициализацией команды CLAMP_RELEASE. Следует также отметить, что поскольку стандартная схема модификации сигнала Mode связана только с изменениями в состоянии Update-IR контроллера TAP, изменения состояний ТРС не должны наблюдаться, пока вместо команд CLAMP_HOLD или CLAMP_RELEASE не выдаются какие-то другие, поскольку обе эти команды обуславливают наличие сигнала Mode = «лог. 1».
Все команды стандарта JTAG так или иначе связаны с выдачей сигнала Mode, так что этот сигнал должен поддерживаться в состоянии «лог. 1» при реализации режима сохранения теста. Это обуславливает целый ряд особенностей поведения контактов ввода-вывода ИС JTAG, приведенных в таблице 1 в конце статьи.
Как было отмечено, основной целью введения сохранения теста является удержание контактов ввода-вывода ИС JTAG в том безопасном состоянии, в котором они находились по завершении выполнения теста, т.е. в предположении, что либо продолжения выполнения теста не последует, либо из этого безопасного состояния через какое-то время начнется выполнение (продолжение) теста. В этом, вообще говоря, и заключалась основная причина проблем фирмы Fujitsu: в оснащении чипа контроллера-коммутатора платформы (ККП) как минимум командой CLAMP_HOLD, предназначенной для предотвращения фиксации контактов ввода-вывода ИС JTAG в стабильном состоянии.

ТАР-управляемая активизация системного сброса

Введенная в [7] команда IC_RESET («RESTORE») представляет собой метод ТАР-управляемой активизации контакта системного сброса ИС JTAG (Master Reset).
Этот контакт может быть либо блокирован любой из команд JTAG (например, EXTEST), либо установлен в состояние «лог. 1» при реализации режима сохранения теста.
Рабочая группа полагает заслуживающим внимания учесть следующее обстоятельство. IP-решения по реализации указанной функции могут иметь самое разнообразное происхождение, например часть такого IP-решения может быть встроена в BIST ИС, и такой IP-блок может иметь собственный сигнал сброса. Такой IP-блок можно, разумеется, использовать в качестве собственного блока сброса ИС (IC_RESET), предназначенного для управления (выдачи или переключения) сигналов сброса, как связанных с входным контактом ИС, так и с любой внутренней логикой ИС.
Целью такого подхода является, конечно, внешнее или внутреннее управление функциями сброса, используя при этом только контакты ТАР-контроллера, а основной задачей  — обеспечение сброса всех функциональных подсистем ИС по окончании тестирования. Наличие таких аппаратных средств позволит обеспечить тест-инженеров дополнительными инструментами для подавления непредсказуемого поведения ИС или тестируемых плат по окончании JTAG-тестирования.

Заключение

Проблема «лоботомии», которая может возникать при окончании процесса JTAG-тестирования, в состоянии привести к результатам, препятствующим продолжению дальнейшего тестирования платы. Это было убедительно продемонстрировано инженерами фирмы Fujitsu на примере весьма странного поведения их сложной схемы в результате попытки продолжения ее JTAG-тестирования. Было установлено, что процесс JTAG-тестирования сам по себе создает определенные условия в системе питания ИС, влияющие на процесс продолжения JTAG-тестирования.
Наряду с этим, рабочая группа изучила возможности применения новых JTAG-команд INIT_SETUP, INIT_RUN, CLAMP_HOLD, CLAMP_RELEASE и IC_RESET [3], что может обеспечить устранение указанных выше проблем. Пример, приведенный в статье, показывает, как этого можно достичь.
Результаты, которые можно получить при выполнении JTAG-теста для платы, содержащей контроллер сохранения теста, заключаются в одном или нескольких из вариантов, приведенных ниже.
По завершении выполнения первого теста следует загрузить команду CLAMP_HOLD, что приведет к фиксации тест-вектора на контактах ввода-вывода ИС. Следует при этом иметь в виду, что этот тест будет выполнен первым сразу после того, как ИС перейдет в «нормальный» режим, например, после включения питания. Такая фиксация может сохраниться и в продолжение последующих тестов, несмотря на то, что каждый из них может завершаться своим собственным тест-вектором на выходах.
При другом варианте завершения любого теста следует загрузить команду CLAMP_HOLD сразу после выполнения последней команды EXTEST, что также приведет к фиксации тест-вектора, выданного командой EXTEST, на контактах ввода-вывода ИС. Дальнейшие тесты можно при этом выполнять в произвольном порядке или вовсе стереть их из тестовой последовательности.
Для завершения выполнения последнего теста некоторой последовательности следует вначале загрузить команду CLAMP_RELEASE. Это должно привести к «освобождению» ранее «зависших» контактов ввода-вывода ИС, если желательна перегрузка тестируемой платы.
Есть еще одна возможность, специально разработанная для совместного применения команд CLAMP_RELEASE и IC_RESET, которые добавляются в конец тестовой последовательности, что приводит к эффективной перезагрузке платы. Тест-инженер может исследовать, какая из ИС является «ведущей» по отношению к перезагрузке, а какая — целевой для команды IC_RESET.
Последняя из возможностей — зацикливание включения питания с целью перезагрузки. Подобная процедура гарантирует, разумеется, устранение зависания режима тестирования, и приводит к ожидаемой перезагрузке, однако может потребовать для выполнения чрезмерно много времени.
В заключение приведем таблицу поведения контактов ввода-вывода ИС относительно стандартных JTAG-команд в режиме сохранения теста (таблица 1).

Taблица 1. Поведение контактов ввода-вывода ИС относительно стандартных JTAG-команд в режиме сохранения теста

Команда

Поведение при включенном режиме сохранения теста

Поведение при выключенном режиме сохранения теста

IDCODE/USERCODE

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

BYPASS

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

PRELOAD с разрешением 8.7f)

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС, эмулирует команду SAMPLE

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования; эмулирует команду SAMPLE

PRELOAD без разрешения 8.7f)

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС, не эмулирует команду SAMPLE

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования, однако содержимоеможет меняться в состоянии Update-DR, эмулирует команду SAMPLE только на выходах

SAMPLE с разрешением 8.6f)

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС, эмулирует команду PRELOAD

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования; эмулирует команду EXTEST на входо-выходах ИС

SAMPLE без разрешения 8.6f)

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС, не эмулирует команду PRELOAD

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования, однако содержимоеможет меняться в состоянии Update-DR, эмулирует команду EXTEST только на выходах

EXTEST

Стандарт 1149.1 EXTEST

Стандарт 1149.1 EXTEST

INTEST c выходным поведеним типа EXTEST; правило 8.9.1c)1)

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования; EXTEST эмулируется только на выходах; см. рекомендации 8.9.1f) касательно входов

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования; EXTEST эмулируется только на выходах; см. рекомендации 8.9.1f) касательно входов

INTEST c выходным поведеним типа CLAMP; правило 8.9.1c)2)

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

CLAMP

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

HIGHZ

Все контакты в состоянии HIGH

Все контакты в состоянии HIGHZ (состояние регистра граничного сканирования не меняется)

RUNBIST c выходным поведеним типа HIGHZ;правило 8.10.1k)2)

Все контакты в состоянии HIGHZ

Все контакты в состоянии HIGHZ (состояние регистра граничного сканирования не меняется)

RUNBIST c выходным поведеним типа CLAMP;правило 8.10.1k)1)

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

INIT_SETUP

Без захвата контактов ввода-вывода, остающихся подключенными к системной логике ИС

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

INIT_RUN

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

CLAMP_HOLD

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

CLAMP_RELEASE

Не должна следовать в паре с выполнением команды CLAMP_HOLD, однако если это происходит, контакты ввода-вывода ИС защелкиваются до тех пор, пока команда CLAMP_RELEASE не сменится другой нетестовой командой

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования, пока команда CLAMP_RELEASE не сменится другой нетестовой командой

IC_RESET

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

Контакты ввода-вывода ИС защелкиваются на содержимое регистра граничного сканирования

 

Благодарности

Авторы выражают свою искреннюю благодарность Джеймсу Грелишу (James Grealish) из Intel за его разъяснения ряда вопросов по реализации структур на кремнии. Инженеры Масаюки Баба (Masayuki Baba) и Манабу Кеяки (Manabu Keyaki) из Fujitsu оказали значительную помощь в инструментальной части исследования. И, наконец, наша отдельная признательность рабочей группе 1149.1, в течение многих лет прилежно разрабатывающей все эти проблемы. Авторы убеждены, что весь этот новый инструментарий станет заметным вкладом в разработки безопасных и эффективных JTAG-тестов.

Литература
1. IEEE Standard Test Access Port and Boundary-Scan Architecture, IEEE Std 1149.1-2001
2. IEEE Standard for Boundary-Scan Testing of Advanced Digital Networks, IEEE Std 1149.62003
3. IEEE 1149.1 Working Group website which contains meeting minutes and a private draft area: http://grouper.ieee.org/groups/1149/1/
4. Intel® 5 Series Chipset and Intel® 3400 Series Chipset, Intel Corporation Document Number: 322169-003, June 2010
5. http://www.intel.com/technology/iapc/acpi/
6. The Boundary-Scan Handbook, Edition 3, Parker, K. P., Kluwer Academic Publishers (now Springer), Boston, MA, 2003
7. Parker, K. P., “Surviving State Disruptions Caused by Test: The ‘Lobotomy Problem’”, Proc. IEEE International Test Conference, paper 19.2, Austin Tx, Nov 2010.

Перевод с английского: Галит Городецкая (JTAG.TEST)

Оставьте отзыв

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