Применение осциллографов для визуализации протокола JTAG
В предыдущих колонках этой рубрики, а также в ряде статей цикла «Основы теории и практики тестопригодного проектирования (DFT), граничного сканирования (JTAG) и внутрисхемного
тестирования (ICT)» [1] я неоднократно упоминал об использовании
для JTAG-тестирования разнообразных программно-аппаратных
средств. Все эти инструменты, поставляемые компаниями Flynn
Systems, XJTAG, Corelis, Asset, JTAG Technologies и некоторыми другими, действительно широко применяются во всем мире для генерации
JTAG-тестов и их прогона. Они снабжены множеством полезных
и удобных дополнений, позволяющих как разработчику тестов, так
и тест-оператору производственной линии, особенно если она хорошо отлажена, вовсе не вникать в нюансы протокола JTAG. Ни одна
из таких систем не снабжена средствами визуализации сигналов в цепях JTAG, поскольку для отладки таких цепей эти системы содержат
достаточно программного обеспечения, позволяющего во многих
случаях (но не всегда!) обойтись и без визуализации сигналов.
Зачастую, однако, в исследовательских лабораториях и при отладке
сложных ситуаций на производственных линиях возникает необходимость работать с портами и цепями JTAG на уровне сигналов его
протокола. Можно, разумеется, использовать для этой цели упомянутые программно-аппаратные средства JTAG-компаний вместе с обычными осциллографами, именно так многие инженеры и поступают.
Присутствуют ли синхросигналы ТСК в соответствующих цепях?
Правильно ли отрабатываются уровни сигналов/TRST? «Дышат» ли
цепи TDI и TMS? Не заваливаются ли фронты сигналов ТСК и TMS,
что может быть критично для устойчивой работы диаграммы состояний ТАР? Соответствуют ли уровни сигналов TDO предыдущих
каскадов ожидаемым уровням сигналов TDI последующих каскадов?
На все эти вопросы действительно нетрудно ответить, зондируя цепи
JTAG любым доступным осциллографом.
В более сложных случаях разработки или отладки цепей JTAG,
и не только их, бывает необходимо работать напрямую по каналам
JTAG с теми или иными внутренними регистрами тех или иных ИС
исследуемой схемы. Это могут быть ИС ASIC, DSP, PHY, I2C, контроллеры разных типов и т. д. Причем в ряде случаев доступ к таким регистрам по каналам JTAG может даже не рассматриваться как
предпочтительный или планируемый, а просто как наиболее естественный и простой на данном этапе разработки или отладки схемы.
Физический доступ к соответствующим внутренним цепям JTAG
через разъемы или контрольные точки может не быть предусмотрен
ввиду тех или иных ограничений проекта, однако зондирование щупом осциллографа могло бы разрешить ряд проблем отладки. Это
могут быть задачи наблюдения сигналов протокола JTAG в реальном
времени, когда схема подключена к аппаратуре эмуляции, что позволяет судить о ее поведении и состоянии внутренних регистров.
Это могут быть также задачи управления сигналами протокола JTAG
в реальном времени, что позволяет влиять на состояние исследуемой
схемы в процессе ее отладки.
Реальная отладка цепей JTAG в рамках давно и подробно описанного и хорошо известного протокола стандарта IEEE 1149.1 без наличия специальных средств JTAG-компаний или при отсутствии
хорошо подготовленных специалистов представляет собой непростую задачу. Затраты времени и усилий на решение таких задач энтузиастами обычно огромны, а адекватность получаемых результатов
не гарантирована. Было бы очень естественно ожидать, что один
из самых распространенных приборов исследовательских лабораторий — осциллограф — будет так или иначе приспособлен для визуализации протокола JTAG. Действительно, современные осциллографы уже на протяжении ряда лет применяются для визуализации многих шинных протоколов, среди которых как относительно
простые — типа I2C, SPI, RS-232, так и посложнее — PCI, к примеру.
Визуализация протокола JTAG средствами осциллоскопа, тем не менее, несколько затянулась ввиду очевидной сложности такого проекта, однако некоторые современные осциллографы, в частности
Agilent Infiniium 9000, уже позволяют исследователю воспроизводить
все детали этого протокола (рис. 1) и предоставляют удобную и наглядную визуализацию его подробностей.
Речь в данном случае должна идти о произвольно синхронизируемой визуализации алгоритма работы контроллера ТАР, представляющего собой конечную машину состояний, диаграмма которой, содержащая 16 состояний, приведена в [2]. Переходы между состояниями
осуществляются в соответствии со значениями сигнала в цепи TMS,
указанными на соответствующих дугах диаграммы, и синхронизируются передними фронтами импульсов ТСК. За исключением двух начальных состояний, остальные 14 распределены в двух симметричных
столбцах и отличаются лишь суффиксами их меток в соответствии
с тем, с какой группой регистров, IR или DR, эти состояния связаны.
Перевод контроллера ТАР в исходное состояние TLR (Test-LogicReset) называется его сбросом. Асинхронный сброс контроллера
всегда осуществляется при подаче низкого уровня необязательного
сигнала/TRST. Контроллер ТАР может быть также всегда сброшен
синхронно, если высокий уровень в цепи TMS синхронизируется
не менее чем пятью импульсами TCK. Будучи сброшенным, контроллер ТАР будет оставаться в исходном состоянии TLR до тех пор, пока
в цепь TMS не подан никакой сигнал, или же TMS = 1. Если TMS = 0,
TAP покидает состояние TLR, переходя в промежуточное состояние
RTI (Run-Test/Idle), и остается в нем, пока значение в цепи TMS вновь
не изменится на TMS = 1.
Таким образом, лишь последовательность 1-0-1 в цепи TMS, синхронизированная передними фронтами импульсов TСК, выводит
ТАР из состояния сброса TLR и приводит в состояние Select-DR-Scan
выборки (или активизации) одного из регистров данных группы
DR. При нахождении контроллера ТАР в этом состоянии (только
если перед этим код команды уже был введен и дешифрован) на протяжении одного импульса TСК генерируется сигнал активизации
выбранного регистра данных, что подразумевает коммутацию этого
регистра на контакт TDО через выходной мультиплексор, которым
этот сигнал управляет.
К регистрам данных во внутренней структуре JTAG любой ИС
относятся регистр обхода РО (Bypass), регистр идентификации РИ
(Identification), регистр граничного сканирования РГС (BoundaryScan) и некоторые другие. Два из них (РО и РГС) обязательны в стандарте JTAG, а остальные — факультативны. Особняком при этом
стоит обязательный регистр команд PK (Instruction Register), не относящийся к группе регистров данных и предназначенный для ввода,
хранения и дешифрации кодов команд. Этот трехкаскадный регистр
состоит из сдвигового регистра сканирования РС, регистра хранения
РХ и дешифратора. При входе контроллера ТАР в состояние Shift-IR
регистр РК уже активен и остается подключенным между контактами
TDI и TDО до тех пор, пока значение в цепи TMS = 0 не изменится.
По окончании последовательного ввода битов кода команды внешний контроллер JTAG меняет значение в цепи TMS на 1, что вызывает
переход ТАР в состояние фиксации IR (Update-IR). При этом по заднему фронту импульса TСК генерируется сигнал параллельного
переноса содержимого регистра РС в регистр хранения РХ, что приводит к декодированию введенного кода команды и выдаче сигнала
выборки активного регистра данных для выполнения этой команды.
Уже по одному этому, весьма краткому описанию протокола JTAG,
далеко не охватывающему всех его особенностей, можно оценить
степень его сложности. Теперь представим себе, что мы занимаемся отладкой одной или нескольких JTAG-цепочек, каждая из которых содержит разные ИС JTAG. Мы можем при этом располагать
одной из упомянутых выше систем JTAG-тестирования, или реализовать протокол JTAG в одной из систем внутрисхемного программирования ISP (фирм Altera, Lattice, Xilinx и т. д.) [3], или работать с той или иной системой эмуляции микропроцессоров или DSP,
или с любой другой системой, реализующей выполнение протокола
JTAG. Представим себе также, что тестопригодность отлаживаемой
схемы не очевидна. Как найти выпадение одного или нескольких
битов данных или проскальзывание одного импульса во временной
диаграмме? Как просмотреть выполнение той или иной из необязательных JTAG-команд той или иной ИС? Как работает обязательная
команда EXTEST относительно одной, весьма важной для наших
целей, цепи? Как вообще получить сравнение действительной и ожидаемой временных диаграмм сигналов во многих JTAG-цепях в удобной и визуально воспринимаемой форме?
Подробности структуры JTAG каждой из ИС, находящихся в цепочке,
описываются при помощи специальных файлов BSDL [КиТ. 2009. № 9].
Разработчики ИС получают файлы BSDL для своих микросхем как
один из результатов процесса автоматизированного синтеза аппаратной структуры ИС вообще и структуры JTAG — в частности.
Использование усовершенствованных систем синтеза ИС, таких как
Cadence, Mentor Graphics, Synopsys, приводит к получению адекватных описаний структур JTAG в формате BSDL, хотя и эти файлы
сами по себе также нуждаются в тестировании. Как правило, файлы
BSDL находятся в свободном доступе в Интернете, хотя бывают и досадные исключения. Мы не всегда можем быть уверены в том, что
эти файлы адекватно описывают «силиконовую действительность»
JTAG-структуры ИС, и это еще больше затрудняет процесс отладки
JTAG-цепочек.
Современный осциллограф, обеспечивающий визуализацию подробностей протокола JTAG с разверткой во времени при зондировании цепей JTAG, подключается к четырем каналам, помеченным
как TDI, TDO, TMS и TCK. Программное обеспечение в виде простого браузера позволяет ввести в осциллограф файлы BSDL отдельных ИС JTAG-цепочки и упорядочить их в соответствии с порядком
подключения ИС в реальной цепочке, связав их с соответствующими схемными именами ИС. В окнах визуализации протокола JTAG
отображаются последовательности смены состояний контроллера
ТАР, цветом выделяются фазы прохождения состояний IR и DR, указываются сдвигаемые в фазах Shift данные и длины битовых потоков. Несоответствие длин вдвигаемых битовых потоков и соответствующих регистров немедленно подсвечивается красным, что
указывает на наличие ошибки. Каждое событие в процессе развертывания протокола JTAG может быть выделено и детально просмотрено в режиме off-line (рис. 2). В дополнение к временным диаграммам JTAG-процессов на экране осциллографа можно в отдельных
окнах получить любую сопутствующую информацию из файлов
BSDL, в том числе коды операций JTAG-команд и длины РГС отдельных ИС, назначение и характеристики отдельных ячеек РГС,
коды идентификации РИ и любые другие данные. Содержимое таких экранов можно также вывести в отдельные файлы для их последующего анализа. Применение осциллографов для визуализации
протокола JTAG косвенным образом может рассматриваться и как
наглядное тестирование целостности JTAG-цепочек без применения специальных средств тестирования.
Литература