Технологии в электронной промышленности №6'2011

JTAG-тест: мифы и реальность

Иванов Алексей


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

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

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

Да, 20 лет назад технология периферийного сканирования являлась своего рода «черной магией», когда не было автоматических генераторов тестов и их интерактивных редакторов. Пионерам использования этой технологии приходилось писать вручную все тестовые векторы, изучив предварительно JTAG-протокол и работу регистров. Кроме того, нужно было отыскать на рынке микросхему, поддерживающую стандарт IEEE 1149.1, а сейчас их десятки тысяч разновидностей. Однако примерно столько же лет назад для того, чтобы скопировать файл на компьютере, нужно было набрать некоторые команды в MS DOS. И вообще, возможности ПК составляли, наверное, считанные проценты от сегодняшних. Сейчас у нас есть такие ОС, как Windows и др., и копирование можно произвести несколькими способами, один из которых — просто перетаскивание значка указателем мыши. Примерно такая же эволюция произошла с инструментами для создания приложений, использующих периферийное сканирование, или JTAG-тестирование. Причем, в отличие от современных операционных систем, САПР для разработки JTAG-тестов предоставляют широкие возможности пользовательского контроля.

Процесс создания тестов заключается в получении так называемого списка соединений (нетлиста) из САПР, где разрабатывалась схема электронного модуля, конвертации его в программную среду для разработки тестов и запуска автоматической генерации многочисленных тестовых векторов, которые при помощи станции периферийного сканирования будут «прогоняться» по плате через JTAG-интерфейс с последующим анализом и диагностикой дефектов. Универсальность современных программных пакетов для JTAG-тестирования позволяет транслировать списки соединений из любых существующих САПР, будь то Mentor, PCAD, OrCAD или любая другая. Причем программа автоматически определит модели для всех компонентов на плате, если разработчик предусмотрел для них корректные названия в процессе проектирования. Однако расстановка моделей вручную обычно занимает всего несколько часов. После этого можно приступать к тестированию. Проект может содержать несколько плат, соединенных в блок, тогда тесты будут генерироваться для всей системы.

Все вышесказанное относится к разработке тестовых приложений. С другой стороны — если речь идет о платах, в которых не используются компоненты с поддержкой периферийного сканирования, и необходимо переходить на новую компонентную базу, то есть организовывать мероприятия по тестопригодной разработке, то, конечно, мы говорим именно о «внедрении» технологии JTAG-тестирования на предприятии. Такое «внедрение» может потребовать определенного времени и ресурсов, что в итоге отразится на качестве и ремонтопригодности продукции, и дальнейшая разработка тестовых приложений не вызовет проблем и затрат. А что касается правил тестопригодной разработки — то они просты и понятны, существуют брошюры с их описанием.

Программы для JTAG-теста можно разработать самим, без применения средств автоматического проектирования

Вообще говоря, это утверждение верно: существуют даже примеры таких «самодельных» пользовательских программ. В работе TAP-контроллера ИС с поддержкой IEEE 1149.1 нет ничего сложного, так же как и в сдвиговых регистрах, используемых при тестировании. Однако здесь следует помнить, что подавляющее большинство таких примеров — это тестовые программы для конкретного вида изделия. Так как здесь не применяется никакой конвертации данных из САПР и автоматического анализа межсоединений, то обычно программист пишет сам тестовые паттерны для какого-то конкретного участка платы и стимулирует JTAG-команды, найденные в BSDL-модели на конкретную ИС. Только вот часто происходит так, что, потратив год или два на создание такого самодельного программного инструмента, разработчик обнаруживает, что его детище устарело, так как изделие изменилось или больше не выпускается. Наскоро применить такую программу для другого, даже похожего изделия не получится — нужно все создавать практически сначала. Поэтому данный подход благополучно себя изжил, а для разовой прозвонки цепей можно использовать готовые простейшие программки, например JTAG Live Buzz, которая распространяется бесплатно.

Для внедрения JTAG-тестирования нужно изучать стандарт IEEE 1149.1

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

 Управление тестом цепей в JTAG ProVision можно осуществлять даже из графического представления платы

Рис. 1. Управление тестом цепей в JTAG ProVision можно осуществлять даже из графического представления платы

Для полноценного тестового покрытия нужно, чтобы все ИС платы, включая память, поддерживали IEEE 1149.1

Это неверно. При выполнении тестирования платы при помощи JTAG есть «движущая сила» теста, то есть микросхемы с поддержкой стандарта IEEE 1149.1 (это могут быть ПЛИС, процессоры, контроллеры), а есть «периферия» — функциональная логика, не имеющая такой поддержки, но тестируемая при помощи основных цифровых микросхем. Не зря JTAG-тест по-русски часто называется «периферийным сканированием», это определение более емкое, нежели английское boundary-scan или его русский вариант — «граничное сканирование». Эта «периферия», окружающая JTAG-микросхемы, также часто называется «кластерами». Обычно стандартный набор JTAG-тестов состоит из тестов межсоединений самих JTAG-компонентов (включая неподключенные выводы и внешние интерфейсы) и тестов кластеров, благодаря чему достигается значительное тестовое покрытие (рис. 2). Иногда при наличии всего одного компонента с поддержкой IEEE 1149.1 можно протестировать до 80–90% цепей платы — за счет кластерного теста.

 Виды приложений

Рис. 2. Виды приложений, осуществляемых при помощи технологии периферийного сканирования

Возьмем для примера микросхему ОЗУ, которая не поддерживает периферийное сканирование по стандарту IEEE 1149.1. Память — это довольно простой функциональный компонент, и при использовании в системе проектирования тестов некой «модели», описывающей шины адреса, данных и контрольные сигналы, вполне логично предположить, что система тестирования может симулировать чтение и запись в это устройство ОЗУ данных из регистров сканирования окружающих JTAG-микросхем. Автоматические генераторы тестов устроены таким образом, что создается несколько тысяч векторов с различными комбинациями адресов и данных, выбранных неслучайно — для точной диагностики местоположения и вида дефекта. При этом следует помнить, что еще около 10 лет назад такие модели приходилось создавать вручную (хотя и по шаблонам), а сегодня системы проектирования тестов содержат библиотеки с десятками тысяч видов ОЗУ, ПЗУ, логики и многих других устройств, не имеющих поддержки IEEE 1149.1, но тестируемых с помощью этой технологии. Действительно, было бы глупо и дорого внедрять JTAG-архитектуру и лишний интерфейс в микросхему TTL-логики всего лишь с 8 или 16 выводами.

TAG-тестирование — это только для крупносерийных производств

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

Что же касается крупносерийных производств, то при миллионных партиях производимых изделий часто можно увидеть не отсутствие электрического контроля (ICT, или периферийное сканирование), а как раз отсутствие функциональной проверки как пережитка прошлого. Изделия могут проходить какой-то минимальный самоконтроль, но только после электрического тестирования, выявившего заранее все возможные дефекты. И если изделие не запускается, то уже идет в брак без поисков причин дефекта. Но, повторимся, это при миллионных тиражах. А преимуществом JTAG именно для крупносерийных производств является скорость теста, который занимает всего несколько секунд.

Контрактный производитель не должен связываться с JTAG-тестированием

В рекламе очень многих западных контрактных производителей среди предлагаемых возможностей перечисляются средства электрического контроля: ICT, Flying Probe, Boundary-scan. При этом станции периферийного сканирования могут даже быть представлены несколькими производителями. JTAG-тесты и приложения для программирования могут быть созданы на предприятии, разработавшем изделие, но они также могут быть переданы в виде производственных архивов с файлами контрактнику, который запустит тест на имеющейся станции. Многие контрактные производители, кроме простых станций «прогона» тестов, имеют полный пакет ПО для разработки тестовых приложений и тест-инженеров, готовых в качестве дополнительной услуги предложить создание, отладку и выполнение тестов периферийного сканирования на плате заказчика. Некоторые делают это не в рамках услуги, а для собственной подстраховки от возможных дефектов, ведь там, «у них», контрактники очень дорожат репутацией и ставят себе задачу отгружать полностью работоспособные изделия.

При помощи JTAG-тестирования не получить 100%-ного тестового покрытия

Верное утверждение. Более того, ни один метод тестирования не даст 100%-ного тестового покрытия. Внутрисхемный тест «не залезет» под BGA или в слои платы, а JTAG-тест создан для цифровой электроники и не протестирует абсолютно аналоговое изделие. Вопрос выбора метода обсуждался не раз, про это написано много статей. Хорошо бы применять все возможные методы, но бюджет не всегда позволяет это сделать. Поэтому необходимо понять, где в основном возникают дефекты, что причиняет наибольшую головную боль при поиске причин отказа? Кроме того, периферийное сканирование очень органично интегрируется в функциональный тест, который может взять на себя, к примеру, аналоговые измерения.

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

Это утверждение возникает, скорее всего, в результате использования отладочных кабелей производителей ПЛИС и процессоров (например, программаторы фирм Xilinx или Altera), традиционно имеющих один JTAG-порт. Понятно, что если мы говорим о том, что для тестирования связи между двумя компонентами с поддержкой периферийного сканирования данные выставляются на одном из них и принимаются на другом (рис. 3а), то нужен одновременный доступ к JTAG-логике и того и другого. Технология периферийного сканирования позволяет соединять микросхемы с поддержкой IEEE 1149.1 последовательно в одну цепочку по JTAG-интерфейсу, в таком случае для одновременного доступа ко всем «участникам» теста действительно требуется всего один JTAG-порт (и один разъем на плате). Однако не все устройства могут сосуществовать в одной цепочке, и если периферийному сканированию «все равно», сколько и каких ИС в цепочке, то «родные» средства отладки процессоров или ПЛИС могут «отнестись» к этому критично и не заработать. Кроме того, часто встречается ситуация, когда разные ИС имеют разный уровень напряжения JTAG-сигналов. Поэтому появляется необходимость разделить JTAG-каналы и на плате возникает несколько JTAG-разъемов (рис. 3б). Однако бояться тут нечего: несколько JTAG-каналов — типичная ситуация для современных плат, поэтому контроллеры периферийного сканирования обычно содержат несколько синхронно работающих JTAG-портов. Контроллеры от JTAG Technologies, например, имеют минимум 2 порта, а профессиональные станции — 4 (рис. 4), при этом обычно каждый порт может настраиваться под разный уровень напряжения интерфейса.

 Варианты организации JTAG-интерфейса

Рис. 3. Варианты организации JTAG-интерфейса: а) с одним каналом сканирования; б) с несколькими каналами сканирования

 Контроллеры периферийного сканирования

Рис. 4. Контроллеры периферийного сканирования

JTAG-тестирование не применить без предварительной подготовки схемы изделия

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

С другой стороны, автору часто приходилось запускать тесты вопреки всем правилам тестопригодной разработки, когда это действительно было нужно (в случае, когда все-таки есть доступ к JTAG, но существуют другие проблемы). Для этого можно использовать различные ухищрения, как программные, так и аппаратные. Например, во всех руководствах по тестопригодной разработке есть согласование сигнала TCK при помощи последовательного включения емкости 100 пФ и резистора 50–70 Ом, который должен быть установлен на плату (рис. 5). Но в реальности такое можно встретить на редких платах. Если плата не сложная и кабель не длинный, то проблем не будет и при отсутствии такого согласования, но на сложных изделиях (5–10 компонентов с поддержкой IEEE 1149.1, например, процессоров или ПЛИС) могут возникнуть случайные ошибки в тесте, вызванные нарушением целостности сигнала. Реальность диктует свои условия: для очень сложных плат приходилось впаивать резисторы и конденсаторы прямо в JTAG-шлейф или использовать самодельные переходники. Этот пример самый простой (а подобных примеров много — это тема отдельной статьи), но он показывает, что при острой необходимости тестирования плат многие из проблем отсутствия тестопригодной разработки решаемы, главное — желание и смекалка тестового инженера. А в следующую версию изделия можно внести коррективы и упростить оснастку. Приходилось также делать и программные надстройки, чтобы выйти в режим периферийного сканирования на некоторых компонентах. Такие проблемы возникают не только в отечественных разработках, но встречаются и у зарубежных предприятий, хотя «у них», нужно отметить, тестопригодная разработка развита в гораздо большей степени и возведена в ранг корпоративной культуры.

 Рекомендованное согласование JTAG-сигналов

Рис. 5. Рекомендованное согласование JTAG-сигналов

При помощи JTAG не протестировать аналоговую часть платы

Вообще-то это скорее верное утверждение. Стандарт IEEE 1149.1 разрабатывался как средство для тестирования цифровой электроники. Оно и понятно, ведь оперирует он цифровыми сигналами, поэтому при наличии на плате одной или нескольких ИС, поддерживающих этот стандарт, можно протестировать связи между этими компонентами, их окружающие цепи (например, на замыкания), а кроме того, связи с ОЗУ (SRAM, DRAM, SDRAM, DDR и др.), ПЗУ (последовательные, параллельные), логику и интерфейсы. Однако на плате может присутствовать и аналоговая часть, для которой периферийное сканирование не предназначено.

В последние несколько лет много проблем вызывали высокоскоростные цифровые линии связи (например, LVDS), которые могут содержать аналоговые составляющие, такие как емкости, развязывающие по переменному току. Это значительно ограничивало применение стандарта IEEE 1149.1, который довольно статичен. Однако решение пришло в виде стандарта IEEE 1149.6, добавляющего к привычной логике периферийного сканирования дополнительные динамические элементы. Сейчас уже многие ИС в дополнение к IEEE 1149.1 поддерживают также и 1149.6, а системы автоматического проектирования тестов (например, JTAG ProVision) успешно с такими устройствами работают.

Кроме того, цифро-аналоговые участки платы при создании приложений JTAG-тестирования тоже могут тестироваться. Возьмем, к примеру, АЦП — выход этого устройства зачастую идет на компонент с поддержкой периферийного сканирования, следовательно, система тестирования может считывать данные с АЦП в регистр периферийного сканирования этого компонента. Таким образом, подавая различные напряжения на вход АЦП (например, граничные значения) можно создать тестовое приложение, считывающее данные с цифрового выхода и проверяющее, укладываются ли они в требуемый диапазон. А можно при помощи того же периферийного сканирования управлять ЦАП, установленным либо на тестируемой плате, либо на оснастке, и считывать данные с АЦП в рамках одного и того же приложения. Конечно, для такого рода приложений, возможно, потребуется создание дополнительной оснастки, и автоматом их не создать. Однако существуют средства, использующие для таких целей встроенный язык программирования, например JTAG Functional Test (JFT).

Другие статьи по этой теме


 
ПОДПИСКА НА НОВОСТИ

Оцените, пожалуйста, удобство и практичность (usability) сайта:
Хорошо
Нормально
Плохо