Контрактная разработка и производство электроники
33,18
рейтинг
20 марта 2014 в 13:35

Разработка → Периферийное сканирование JTAG: тестирование опытных образцов электроники



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

Напомним, что периферийное сканирование (boundary scan) — это структурное тестирование печатной платы с установленными компонентами, которое основано на применении стандартов IEEE 1149.x. Результат сканирования — информация о наличии в электроцепях типичных неисправностей, возникающих в процессе производства печатных плат: коротких замыканий (bridges), непропаек (opens), западаний на 0 или 1 (stuck at 0, stuck at 1), обрывов дорожек.

JTAG-тестирование выполнятся на плате, которая пришла с производства.



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

На этапе тестирования (перед первым включением) проверяется отсутствие короткого замыкания на платах. Далее подается напряжение питания и проверяется ток потребления, после этого проверяются основные питающие напряжения. Затем плата подвергается либо JTAG либо внутрисхемному (ICT) тестированию (как вариант — можно использовать два теста по очереди).

Так как JTAG — это самый первый тест, то выявленные им проблемы экономят трудозатраты в дальнейшем. Логично, что если проблемы будут обнаружены после сборки устройства, его придется разбирать и собирать заново.

На этапе JTAG-тестирования выявляется:
  • непропай у микросхем с корпусами BGA, для которых реализовать ICT-тестирование не возможно в принципе;
  • незапаянные резисторы pull-up/down;
  • межвыводные КЗ.

Также с помощью технологии JTAG успешно проверяются микросхемы памяти: от SRAM до DDR3 (анализируется только правильность монтажа цепей, не сама память). Этот тест в совокупности с тестом flash-памяти позволяет отдать плату программисту для установки начального загрузчика, ОС и последующего брингапа (первого запуска).

Использование тестов JTAG на примере ПО Provision для функционального тестирования печатных плат


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



Мы использовали Provision для проведения тестирования в проектах с миниатюрной элементной базой, корпусами 0402 и BGA, высокой плотностью компоновки, платами более 4 слоев и гибко-жёсткими платами.

Рассмотрим применение технологи граничного сканирования на конкретных проектах:

Пример №1. VoIP-маршрутизатор

Задача: разработать устройство для VoIP-телефонии на базе процессора Blackfin BF527 с программным обеспечением на базе OC Linux.

В данном проекте тестировались микросхемы SDRAM, NAND, Ethernet switch. Также посредством JTAG была проверена корректность работы светодиодов и кнопок — для этого использовались функциональные тесты, написанные на языке Python. Это скриптовый язык, интегрированный в Provision. С его помощью можно тестировать различные цифровые интерфейсы и микросхемы, а также организовать гибкий диалог с пользователем.

Применение JTAG-тестирования позволило проверить корректность монтажа и работоспособность микросхем.

Пример №2. Plug-компьютер

Задача: разработать многофункциональное сетевое устройство (мини-сервер), предназначенное для работы в IP-сетях.

В данном проекте использовался процессор 88F6282 фирмы Marvell и память DDR2/DDR3. На плате ограниченных размеров применён двухсторонний монтаж и 7 микросхем с BGA-корпусами. В ходе подъема плат возникли проблемы с памятью, они проявлялось в виде зависаний плат во время загрузки или невозможности запуска U-boot. Были проведены оперативные тесты DDR2-памяти, которые выявили неприпаянные выводы на шине данных на линиях D0, D3, D7 одного из 4-х чипов памяти. Из-за этого дефекта данные в определённом адресном пространстве самопроизвольно менялись.

В версиях устройства с DDR3-памятью у программистов возникли проблемы с загрузкой ОС Linux. Было принято решение оперативно проверить качество монтажа данных чипов. В результате тестирования выяснилось, что все чипы исправные, а проблема крылась в неверно установленных таймингах.

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

В ходе данного проекта была оценена оперативность технической поддержки у JTAG Technologies.

Пример №3. Процессорный модуль JADE на чипе Fujitsu JADE

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

Данный проект — двухплатный — процессорный модуль и материнская плата (на фото — только сам модуль). Акцент был сделан на тестировании связей между платами, также была проведена проверка наличия генерации у генераторов, корректность монтажа NAND и NOR памяти.

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

Пример №4. Одноплатный промышленный компьютер

Задача: разработка процессорной платы SOM01 на базе процессора TI AM1808 (ARM926, 456MHz).
Данное устройство представляет собой одноплатный компьютер, реализованный в форм-факторе SO-DIMM 200. Во время реализации данного проекта был сделан подробнейший DFT-анализ, определено покрытие и даны рекомендации по шагам для увеличения тестового покрытия. Для максимального покрытия платы JTAG-тестами был спроектирован стенд, который увеличивал покрытие до 98% (непокрытым оказался только интерфейс USB, так как TAP-контроллер не имеет доступа к этим выводам). Также данный стенд позволиляет прошить плату по Uart или Ethernet, контролировать напряжения и токи.


На фото: тестовый стенд с подключенными платами

Выводы


Технология пограничного сканирования JTAG может успешно применяться на производстве для контроля правильности монтажа, для проверки опытных образцов, на производстве серии.

Для внедрения данной технологии на производство необходимо приобрести пакет программного обеспечения и аппаратный адаптер. А для тестирования конкретной платы необходим набор скриптов, написанных в этой среде.

Преимущества JTAG-тестирования перед ICT-тестированием заключается в том, что нет необходимости в размещении дополнительных контактных площадок для ICT-тестера (более подробно об этом мы уже писали в статье «Как тестировать электронику на производстве: анализ современных технологий»).

Также с помощью JTAG тестирования можно тестировать правильность монтажа BGA-корпусов, что невозможно при внутрисхемном тестирования.

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

Спасибо за внимание. Вопросы и комментарии приветствуются.
Автор: @Promwad
Promwad
рейтинг 33,18
Контрактная разработка и производство электроники

Комментарии (27)

  • +7
    Из поста так и не понял, как собственно это тестирование производится… Просто показали устройства, которые прошли такое тестирование.
    • 0
      Логика простая: известно что, допустим, нога 10 одной микросхемы подключена к ноге 15 другой. Подаешь на первую значения (статические 0 и 1), проверяешь, что на другую доходят. И так для всех имеющихся соединений между микросхемами.
      И jtag как-раз таки позволяет «достучаться» до микросхемы и подавать/считывать сигналы почти для всех элементов ввода-вывода. Существенным ограничением подобного рода тестирования является то, что далеко не все, даже «многоногие» микросхемы имеют jtag-интерфейс. В процессорах всяких обычно есть, а для тех же микросхем памяти это далеко не правило.
    • +1
      Тема данной статьи — осветить применение JTAG на практическом уровне. Сами принципы работы JTAG-тестирования — отдельная тема и статья. В нашем случае тестирование проводилось с использованием адаптера JTAG to USB и ПО от JTAG Technologies. Также использовались собственные алгоритмы написанные на Python, который интегрирован в данное ПО.
      • 0
        А как светодиоды проверялись?
        Или для каждой схемы вдвое больше дорожек делать?
        • 0
          Для теста светодиодов пишется скрипт на языке python, который зажигает диод и посредством графического интерфейса выводит сообщение, в котором спрашивает пользователя, горит ли светодиод.
    • 0
      Как это работает?

      1. Необходим BSDL-файл для JTAG-совместимого устройства.
      2. Нет лист-схемы.
      3. Все это закидывается в ПО для генерации тестов, затем генерируются автоматические тесты, при необходимости корректируем цепи, которые нельзя проверять или на которых необходим определенный уровень.
      4. Если необходимо, пишем дополнительные тесты на Python.
      5. Подключаем адаптер к JTAG-порту.
      6. Включаем девайс, запускаем тесты.
      7. В результате тест выдаст таблицу, по которой будет видно, как цепь отреагировала на определенное воздействие.
      8. По результатам делается вывод о КЗ, обрыве.

      Пример



      В таблицах воздействии значения расшифровываются так: Z – драйвер в Z состоянии; L, H – состояние выхода; 0,1 – считанные значение со входа; 0, 1 – ошибочные значения (0 означает — считан 0, а ожидалась 1).

      Тут видно, что цепь POR_3 имеет КЗ на лог.1, а цепь P0_RX_CTRL видит лог 1., хотя должна была видеть лог.0
      • 0
        А к чему сам JTAG то цепляется?
        • 0
          JTAG цепляется к совместимому порту JTAG IEEE1149.x контроллера или микросхемы, который содержит 4 основных сигнала: TDI, TDO, TMS, TCK и один дополнительный TRST. С помощью этих сигналов ПО общается с TAP-контроллером микросхемы.

          Более подробно про JTAG и с чем его едят посмотрите эту статью на Хабре.
          • 0
            Благодарю, познавательно.
            Тогда ещё маленький вопросик: Производители ПЛИС делают свои JTAG адаптеры для прошивки. Они принципиально отличаются или их же можно использовать для тестирования схемы (и отличаются ли вообще)?
            • 0
              Если в документации на ПЛИС или микросхему указано, что она поддерживает стандарт IEEE1149.xx, тогда этот JTAG-адаптер подойдет для ее тестирования.

              JTAG-адаптер для прошивки ни чем не отличается от JTAG-адаптера для тестирования, так как доступ к TAP-порту стандартизирован. Отличие идет только на уровне ПО.
              • 0
                В этом вся проблема — надо чтобы проиводитель софта для тестирования поддерживал все эти чужие программаторы. И у меня есть сомнения на этот счет… Готовых решений для граничного сканирования ни у Xilinx, ни у Альтеры нет, насколько я знаю.
                • 0
                  Естественно нет, так как Xilinx и Altera выпускают ПО для работы с ПЛИС, а не для периферийного сканирования JTAG. Для этого, как отмечалось в статье, и покупается ПО (в нашем случае — Provison), которое генерирует тесты и затем отправляет через адаптер в порт IEEE1149.x JTAG, который у всех одинаковый.

                  Мы без проблем тестируем любые ПЛИС, которые поддерживают 1149.x и для которых есть BSDL-файл.
                  ПО Provision можно управлять и считывать любой пин на ПЛИС, если в BSDL-файле он помечен как INOUT bit. Специального ПО от Xilinx или Altera не требуется. Оно понадобится только тогда, когда вы захотите прошить данную ПЛИС.
                  • 0
                    Так в итоге ваш софт будет работать с их программатором, если все драйвера установлены?
                    • 0
                      Нет. Наш софт работает только со своим родным программатором. И как верно заметил nerudo, стоимость адаптера ничтожно мала по сравнению с софтом. Но сам адаптер — это простая железяка с FTDI-микросхемой внутри.
                      • 0
                        Просто в вашем ответе выше я прочитал «этот JTAG-адаптер подойдет для ее тестирования», как «JTAG-адаптер производителя ПЛИС подойдет для ее тестирования», а не «этот, который прилагается к софту для тестирования».
                        Ясно теперь.
                  • 0
                    Я говорил не про ПО, а про то, что нужен и адаптер JTAG прилагаемый к этому софту, какой попало не пойдет. Впрочем с учетом стоимости софта, железка за 10-100$ уже значения не имеет ;)
  • +5
    А мы просто делаем тестирование «на дым». включаем, смотрим нет ли дыма. если нет, то «правильно спроектированное работает сразу» :D
    хотя менять иногда дохлые кристаллы приходится.

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

    Короче, нужно не «вот такое мы тестировали», а если уж пишете статью — распишите как именно организуется тестирование. что на вход. что на выход.
    как добавляется соответствующий тест-порт и тд.
    • 0
      datacompboy, спасибо за комментарий. Конкретный пример описан выше, но в целом описание принципов тестирования — это отдельная статья.
      • 0
        Дым — это да. А вот вовремя обнаружить непропай адресной линии на DDR JTAG-тестирование поможет, или, например, обнаружить неверную NAND, PHY и другие микросхемы с ID, когда заложена одна, а запаяна другая, то тест вычитает ID и позволит узнать, что же запаяно на самом деле.
  • +8
    Jtag тестирование очень важно. Jtag тестирование это jtag тестирование, позволяющее выявить дефекты, которые можно выявить с помощью jtag тестирования. Таким образом, используя jtag-тестирование можно обнаружить все проблемы, которые может обнаружить jtag-тестирование и таким образом избежать проявления проблем, выявляющихся jtag-тестированием на этапах после jtag-тестирования.
  • +1
    вопросы:
    1) сколько стоит разработать технологию тестирования для готовой платы (не сложной, скажем микроконтроллер STM32 + кнопки и светодиоды и релюшки)?
    2) не понятно как протестировать светодиоды и кнопки — в статье про это говорится. Ведь кнопку, чтобы проверить ее нужно нажать. И светодиод, чтоб проверить — нужно увидеть горит ли он.
    Проясните пожалуйста.
    • 0
      Для теста кнопок, как было указано в статье, пишется скрипт на языке python, который просит пользователя нажать на кнопку, затем в течении определенного времени скрипт опрашивает состояние кнопки и выдает результат.

      Тоже самое и для диода. Скрипт зажигает светодиод и посредством графического интерфейса выводит Message Box, в котором спрашивает, горит ли светодиод.

      В ПО Provision интегрирован скриптовый язык python со всеми вытекающими последствиями. Также для JTAG-тестирование можно применять ПО других фирм, в них будут интегрированы другие языки. Например, в XJTAG интегрирован C подобный язык.

      По стоимости ответим позже.
      • 0
        был уже где-то ответ по стоимости? назовите пожалуйста хотя бы порядок цен, спасибо :)
        • 0
          4utep, извините, что мы сразу не написали ответ на этот вопрос. К сожалению, мы не можем сориентировать вас по стоимости. Дело в том, что каждый проект — это индивидуальный расчет бюджета. Будет разница на порядок, все зависит от объема задач.

          Вы можете обратиться с конкретным запросом в наш отдел продаж — info@promwad.com

          Спасибо за интерес к теме!
          • 0
            хм, ок, спасибо за ответ
            а можете тогда назвать стоимость решения provision? какой там порядок цен? 10к+, 20к+, 25к+?
            • 0
              4utep, цена на provision для нас была порядка ~12k евро. Она зависит от комплекта поставки и прочих условий. Актуальный прайс можно запросить по ссылке: www.jtag.com/ru/content/jtag-provision

              И вот еще комментарий наших технических специалистов по поводу разработки JTAG-тестов (в продолжении темы о ценообразовании):

              1. Разработка тестов JTAG BS может занимать от часа до нескольких дней, все зависит от наличия BSDL-файла и поставленной задачи.
              2. Для плат вида «микроконтроллер STM32 + кнопки и светодиоды» нет смысла в разработке подобных тестов, т.к. это простейшие контроллеры в выводных корпусах, работа с которыми производится в среде разработки, чаще всего с JTAG-отладчиком.
              3. Ключевая цель проведения JTAG BS заключается в проверке монтажа BGA-корпусов для выявления дефектов монтажа, до того момента, когда подключатся разработки ПО.
              • 0
                еще раз спасибо за ответы
                про то что для stm32 boundary scan это излишество я в курсе)
                интересуюсь как раз для устройства со взрослым arm, бга со всеми вытекающими, bsdl файлы, естественно, есть
                подскажите еще пожалуйста, а при покупке решения, вы проводили сравнительный анализ с другими вендорами, с тем же xjtag?
                если да, то интересно почему выбрали именно провижн
                цены, как я понял у них у всех плюс-минус одинаковы

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка