Функциональное тестирование и эмуляция средствами граничного сканирования (JTAG)
к. т. н., JTAG.TECT
amigo@jtag-test.ru
Мне часто приходится слышать следующий вопрос: «Можно ли выполнять функциональное тестирование средствами граничного сканирования?» В июльской колонке мы поговорим именно об этом, поскольку эмуляция в протоколе JTAG в последнее время получила значительное распространение как основа для структурно-функционального тестирования.
Эмуляция для целей тестирования в течение многих лет применяется в схемах с шинной структурой. Эмулятор обычно замещает ту или иную часть схемы, захватывая управление схемой посредством одной из ее шин. Таким образом, он может загружать и прогонять тесты, а также получать диагностическую информацию в режиме реального времени, то есть на рабочих частотах платы. Эмуляция процессорных схем была очень популярным подходом к функциональному тестированию в 80-х — начале 90-х годов прошлого века. Внешние эмуляторы подключались при этом к колодкам, предназначенным для многократных установок микросхем процессора и/или памяти, которые вынимались из платы на время эмуляции.
Отказ от применения внешних эмуляторов произошел в связи с двумя факторами: практически полным отсутствием в современных разработках микросхем процессоров и памяти на колодках, а также значительным возрастанием рабочих частот процессорных схем. На определенном, сравнительно недавнем, этапе развития электроники стала ощущаться явная нехватка таких логических анализаторов и эмуляторов процессоров, которые позволяли бы отладку аппаратного и программного обеспечения на частотах, значительно превышающих 20 МГц. Фирмы, разрабатывающие и выпускающие процессоры, довольно оперативно решили эту проблему, разместив необходимые для целей отладки функции на кристалле самого процессора. Но эпоха подлинного ренессанса в применении этого эффективного подхода к функциональному тестированию и диагностике наступила с появлением современных интерфейсов процессорной отладки. Средства эмуляции процессора сегодня располагаются на самом процессоре и в качестве встроенных функций отладки используют, например, следующие низкоуровневые функции:
- остановку процессора;
- чтение/запись на контактах ввода/вывода;
- чтение/запись памяти;
- точки прерывания;
- пошаговый код;
- трассировку кода.
Это краткое отступление в историю функционального тестирования средствами эмуляции я позволил себе лишь потому, что доступ к приведенным выше (и другим) встроенным функциям отладки в современной схемотехнике может осуществляться посредством интерфейса граничного сканирования (JTAG). Этот интерфейс в подобных случаях иногда называют расширенным JTAG (еJTAG, где е — emulation или extended) и применяют с добавками двух-трех сигналов специального назначения. Набор команд стандарта IEEE 1149.1 [ПЭ. 2007. № 6], поддерживаемых процессором, предназначенным для такого тестирования, должен быть, разумеется, расширен. В него должны быть включены команды управления функциональным ядром этого процессора.
Интерфейс отладки процессорных схем позволяет ГС-тестеру принять на себя управление собственно процессором, который в таком случае превращается просто в средство функционального тестирования остальной части схемы. Например, запуск функции чтения/записи памяти позволяет выполнять тестирование схемных элементов памяти на рабочих частотах процессора, весьма высоких, что не всегда выполнимо при тестировании этих элементов по обычным каналам граничного сканирования. Качество монтажа на поверхности плат для почти всех типов памяти типа DDR2 SDRAM все еще удается тестировать, причем вполне успешно, средствами граничного сканирования на частотах до десятков МГц. Важно при этом подчеркнуть, что речь идет именно о структурном тестировании, поскольку функциональный тест на подобных частотах очевидно невозможен.
Однако с появлением и быстрым распространением синхронной динамической памяти типа DDR3 SDRAM, которая сулит сокращение потребления энергии до 30% по сравнению с DDR2 благодаря применению 90-нм (а в перспективе 65-нм и даже 50-нм) технологий и питанию от источника 1,5 В, выяснилось, что структурные ГС-тесты для таких микросхем неэффективны или вовсе нереализуемы. Современным решением для тестирования качества сборки компонентов памяти DDR3 на поверхности плат является их функциональное ГС-тестирование по каналам эмуляции управляющих ими процессоров на их рабочих частотах.
Большинство современных микропроцессоров и DSP снабжены интерфейсами отладки, определяемыми, в частности, стандартом IEEE-ISTO 5001. В качестве примера можно привести семейства процессоров Intel Pentium, семейства PowerPC фирм Motorola и IBM, а также ARM, MIPs, SPARC, AMD Elan, семейства DSP фирм Motorola и TI и другие. Совмещение стандартных структурных ГСтестов с функциональным ГС-тестированием по каналам эмуляции процессоров представлено на рисунке.
Предположим, что тестируемая плата состоит из ряда функциональных блоков: микропроцессора, моста PCI, видеоконтроллера, цифро-аналоговых и аналого-цифровых преобразователей и т. д. Каждый из этих блоков содержит встроенную память и регистры ввода/вывода, посредством которых осуществляется управление блоками, а доступ к этим регистрам определяется интерфейсами отладки, реализующими низкоуровневые функции отладки. Выполнение этих функций отладки в определенной последовательности может представлять собой полный функциональный тест блоков и платы в целом.
При стандартном структурном JTAG-тестировании можно без труда достичь приемлемого покрытия дефектов монтажа элементов, обозначенных на рисунке голубым цветом. Понятно, что нет никаких проблем в построении ГС-теста межэлементных связей [ПЭ. 2007. № 8] для фрагмента схемы, охватывающего микросхемы микропроцессора, FPGA, ПЛМ и DSP. Посредством встроенного в эти компоненты механизма граничного сканирования так же просто строятся ГС-тесты для элементов памяти SSRAM и DDR2 SDRAM, для не слишком быстродействующих типов флэш-памяти и для элементов I2C, включая их внутрисхемный прожиг. Внутрисхемное конфигурирование FPGA и ПЛМ в ГС-протоколе — это тоже совершенно рутинная процедура.
Построение кластерного теста для проверки связей DSP с внешним разъемом, например, для дифференциальных цепей LVDS [ПЭ. 2008. № 4], — и это не проблема при наличии пассивной обратной связи в виде проводных петель либо того или иного типа активной обратной связи. Кластерными же являются ГС-тесты для проверки целостности подключения ЭСППЗУ к шине SMB и тестирование отклика входных регистров моста PCI на обращение к ним в специфическом для них протоколе [ПЭ. 2008. № 7]. Важно отметить, что диагностика неисправностей во всех указанных ГС-тестах происходит до уровня неисправных цепей или контактов микросхем. При этом можно определить возможные структурные неисправности типа КЗ или обрывов при монтаже компонентов.
Тестовое покрытие фрагментов схемы, показанных зеленым цветом на рисунке, может быть достигнуто при эмуляции микропроцессора, управление которым происходит посредством того же ГС-порта, что и при стандартном JTAG-тестировании. Несмотря на исходно-функциональный характер этих тестов, они в состоянии указывать на наличие неисправностей сборки платы, выполняя, таким образом, функции структурного теста. Генерация таких тестов — ручная или полуавтоматическая, а диагностика неисправностей, обнаруживаемых ими, — на функциональном уровне, то есть с указанием на неисправные функции, а не на неисправные цепи или контакты микросхем. При таком подходе можно написать тесты для видеоконтроллера и памяти VRAM, а также тесты для цифро-аналоговых преобразователей и контроллера Ethernet, обеспечив обратные связи на наружных разъемах. Легко заметить, что выполнение функционального тестирования средствами граничного сканирования особенно оправдано для чисто аналоговых и/или гибридных компонентов, занимающих в схеме место на границе цифровой и аналоговой зон.
Одним из наиболее популярных сегодня интерфейсов отладки процессоров средствами эмуляции, использующих ГС-порт, является интерфейс СОР (Common On-chip Processor) семейства PowerPC. Функции этого интерфейса, подключенного непосредственно к ГС-порту, обеспечивают доступ внешнего компьютера (как правило, РС) ко многим внутренним операциям микропроцессора, среди которых — точки прерывания и ожидания, чтение и модификация содержимого регистров и встроенной памяти и т. д. В дополнение к стандартным JTAG-цепям, этот интерфейс использует еще несколько цепей для контроля состояния микропроцессора.
Рисунок. Совмещение стандартных структурных ГС-тестов с функциональным ГС-тестированием по каналам эмуляции процессоров
Поскольку один и тот же интерфейс СОР используется как для целей структурного ГСтестирования, так и для функционального тестирования средствами ГС, это позволяет значительно расширить уровень покрытия неисправностей ГС-тестом, включив в него фрагменты функционального теста как для микросхем, так или иначе связанных с процессором, которые поддерживают граничное сканирование, так и для тех, которые вовсе не снабжены этим механизмом, и выполнять тест на рабочих частотах тестируемой платы. Этапы записи под управлением загружаемого ядра эмулятора конфигурируют периферийные по отношению к процессору компоненты платы в режим нормального функционирования, а этапы чтения позволяют считывать соответствующие реакции компонентов для сравнения их с ожидаемыми. Тестпрограмма пишется, как правило, на одном из стандартных языков программирования. Загрузка тест-программы в память тестируемой платы обычно не требует модификации прикладного программного обеспечения, содержащегося во флэш-памяти. Более того, иногда бывает предпочтительнее не выполнять прожиг флэш-памяти по обычным JTAG-цепям, а загружать ее содержимое из процессора под ГС-управлением на рабочих частотах схемы.
Таким образом, рассмотренная комбинированная стратегия тестирования, получившая значительное распространение, позволяет увеличить уровень тестового покрытия, сократить время разработки теста и оптимизировать диагностику неисправностей. Структурно-функциональные ГС-тесты могут быть без труда объединены в рамках одного и того же аппаратного стенда и под одним и тем же программным интерфейсом оператора.
Следует, по мере возможности, максимизировать область применения структурного ГСтестирования, поскольку разработка тестов для них большей частью автоматизирована [ПЭ. 2008. № 2, ПЭ. 2008. № 3]. Функциональные ГС-тесты должны быть предназначены для тестирования цифровых компонентов, не снабженных механизмом граничного сканирования, а также тех, которые нуждаются в тестировании на рабочих частотах схемы. ГС-тесты, выполняемые по каналам эмуляции, незаменимы также при структурнофункциональном тестировании аналоговых и гибридных фрагментов схем.