Как стать автором
Обновить

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

Время на прочтение5 мин
Количество просмотров19K
Всего голосов 11: ↑6 и ↓5+1
Комментарии27

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

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

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
А к чему сам JTAG то цепляется?
JTAG цепляется к совместимому порту JTAG IEEE1149.x контроллера или микросхемы, который содержит 4 основных сигнала: TDI, TDO, TMS, TCK и один дополнительный TRST. С помощью этих сигналов ПО общается с TAP-контроллером микросхемы.

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

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

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

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

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

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

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

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

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

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

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

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