Программные средства, использующие возможности механизма граничного сканирования (стандарта JTAG), для тестирования устройств на основе ПЛИС фирмы ALTERA

Программные средства, использующие возможности механизма граничного сканирования (стандарта JTAG), для тестирования устройств на основе ПЛИС фирмы ALTERA.

Торчигин С.В.

Институт проблем информатики РАН

Введение

Интерфейс JTAG предоставляет пользователю достаточно много средств, позволяющих получить представление о состоянии различных компонентов вычислительной системы [1]. Однако в том случае, если тестируется достаточно сложная вычислительная система возникает необходимость в определенном сервисе, позволяющем пользователю в достаточно наглядной и удобной форме выдавать в систему запросы об интересующей его информации и получать ответы также в понятной и наглядной форме. В настоящей работе представлены функциональные возможности и принципы организации реализованной на персональном компьютере программной системы «Test Chips», позволяющей решать указанные задачи. Программная система прошла опытную эксплуатацию при отладке управляемого потоками данных многопроцессорного комплекса, состоящего из нескольких десятков ПЛИС типа ALTERA достаточно высокой степени интеграции. Работает под управлением ОС Windows 9x/NT/2000, имеет интуитивно понятный интерфейс и развитую графическую оболочку.

Возможности системы "Test Chips".

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

1) Тестирование комплекса микросхем, объединенных в JTAG цепочку.

2) Установка на выходы микросхемы тестовой последовательности и чтение результатов теста.

3) Тестирование закороток и разрывов цепи у выбранных микросхем.

Доступ к тестируемой системе организован при помощи кабеля типа ByteBlaster, который соединяет тестируемую систему с параллельным портом персонального компьютера рис. 1.

Рис.1. Соединение тестируемого устройства с ПК.

Для тестирования микросхем необходим файл описания микросхем в BSDL формате (этот файл можно взять на сайте производителя выбранной микросхемы). В этом описании можно найти все JTAG команды для данной микросхемы, IDCODE производителя, описание всех выводов микросхемы и длину BSR регистра (Boundary-Scan Register - служит для сохранения или установки сигналов на выводы микросхемы). Последнее наиболее важное для правильной инициализации отдельных выводов микросхемы [2].

Замечание: При инициализации одного или нескольких выводов микросхемы нужно инициализировать весь BSR - регистр в котором находится тестовая последовательность (не тестируемые выводы можно устанавливать в любое состояние). В BSR - регистре для каждого вывода ПЛИС, как правило, отведены три последовательных бита: вход (I), вывод (O) и разрешение \ запрет вывода (Z).

Прежде чем переходить к описанию этих средств, целесообразно рассмотреть методику тестирования нескольких простых устройств с известной схемотехникой и принципами работы. Такое рассмотрение позволит получить представление о необходимых действиях и их очередности, которые предпринимаются при тестировании любого устройства. После этого станут ясными функции рассматриваемых программных средств. С этой целью рассмотрим три простейших примера. В первом примере будет показано, как протестировать соединения между микросхемами. Во втором примере будут рассмотрены способы тестирования содержимого (ядра) микросхемы, а в третьем - тестирование содержимого (ядер) взаимосвязанных микросхем [3].

Пример 1.

Рассмотрим в качестве примера тестирование связей между двумя ПЛИС ALTERA (можно использовать любые другие микросхемы, поддерживающие стандарт JTAG). Для тестирования нескольких микросхем и соединений между ними, эти микросхемы должны быть объединены в JTAG цепочку, как показано на рис. 2. Такое соединение должно быть предусмотрено на этапе проектирования печатной платы.

тек

TDI TDI 1 TDO 1 ПЛИС 1 TDI 2 TDO 2 ПЛИС 1 TDI 3 TDO 3 ПЛИС 5 TDI 4 TDO 4 ПЛИС 4

TD О

TMS

Рис. 2. Соединения тестируемых ПЛИС для использования средств стандарта JTAG.

Где выводы TCK, TMS,TDI, и TDO - выводы JTAG интерфейса.

После этого предпринимаются следующие шаги тестирования:

1) Из JTAG цепочки выбирается ПЛИС, для которой будут тестироваться связи с другими ПЛИС, например ПЛИС 2.

Для данной цепочки формируется последовательность JTAG команд. Для всех ПЛИС это будет команда EXTEST .

ТАР - контроллер, всех ПЛИС, переводится в состояние SHIFT_IR. Эти команды последовательно посылаются на вход TDI синхронизованный с сигналом TCK, в следующей последовательности: сначала для четвертой, затем для третьей, для второй и для первой ПЛИС.

2) ТАР - контроллер переводится в состояние SHIFT_DR и формируется для данной JTAG цепочки следующая последовательность данных. Для первой третьей и четвертой микросхемы состояние каждого вывода должно выглядеть следующим образом вход (I) = 0, разрешение \ запрет выхода (Z) (зависит от семейства ПЛИС) вывод ПЛИС должен быть инициализирован как вход, выход (О) = 0. Для «ПЛИС 2» тестируемые выводы должны быть инициализированы как «выход» и на выходе должна стоять логическая единица. Данные посылаются в JTAG цепочку через вход TDI в той же

последовательности, что и команды.

3) Затем ТАР - контроллер переводится в состояние иРБАТЕ_БК При этом

тестовая последовательность появится на выводах «ПЛИС 2», следовательно ее можно считывать с ПЛИС 1,3,4. Снова ТАР - контроллер переходится в состояние 8НГРТ_БК (проходя через состояние К.иК_ТЕ8Т\ГОЬЕ, 8ЕЬЕСТ_БЯ, САРТШЕ_БК, сигналы пришедшие на ПЛИС 1,3,4 записываются в ББЯ - регистр). Для того чтобы считать ББЯ - регистр всех тестируемых ПЛИС, нужно подать на вход ТБ1 любую последовательность равную длине ББЯ - регистра первой ПЛИС + длина ББЯ - регистра второй ПЛИС + длина ББЯ - регистра третьей и + длина ББЯ - регистра четвертой ПЛИС. В это время считывать с выхода ТБО содержимое всех ББЯ -регистров. Очевидно, что сначала считываются данные для четвертой ПЛИС, затем для третьей ПЛИС, для второй ПЛИС и, наконец, для первой ПЛИС. У каждой ПЛИС, кроме второй, анализируется бит отвечающий за состояние входа [4]. Например, в нашем примере тестировалась одна связь между всеми ПЛИС см. таблицу 1.

Таблица 1.

ПЛИС 1 ПЛИС 2 ПЛИС 3 ПЛИС 4

Выводы ПЛИС 10 37 12 25

На вывод 37 - ПЛИС 2 была подана логическая «1», следовательно, она должна появиться на выводе 10 - ПЛИС 1, выводе 12 - ПЛИС 3 и выводе 25 - ПЛИС 4. Если при анализе считанного BSR - регистра, логическая «1» появилась на выводах 10,12 и 25, то межсоединения между ПЛИС работоспособны.

Пример 2.

Во втором примере рассмотрим, как можно протестировать схему внутри микросхемы. Допустим, что имеется одна ПЛИС фирмы ALTERA. В этой ПЛИС реализован дешифратор 2х4 выходы которого заведены на триггера (рис.3). В силу того, что дешифратор это комбинационная схема, его выходы нужно удерживать с помощью триггеров. Триггера синхронизуются сигналом «en», который проходит через цепь задержек, для ликвидации дребезгов на входе триггеров. Описание выводов этой микросхемы приведены в таблице 2. С помощью JTAG интерфейса можно протестировать схему внутри ПЛИС.

Рис.3 Схема тестируемого дешифратора. Таблица 2.

Описание вывода Физический вывод на ПЛИС

Еп - вход синхросигнала 6

1п0 - вход 0 дешифратора 11

1п 1 - вход 1 дешифратора 12

ОиЮ - выход 0 дешифратора 25

ОиИ - выход 1 дешифратора 20

ОШ;2 - выход 2 дешифратора 21

ОШ;3 - выход 3 дешифратора 27

Для того чтобы протестировать внутреннюю схему ПЛИС нужно: Способ 1.

1) Перейти в состояние SHIFT_IR ТАР - контроллера и послать в ПЛИС команду EXTEST.

2) Перейти в состояние SHIFT_DR и сконфигурировать выводы 11 и 12 как входы и установить на них любое значение. Например, на вход вывода 11 установить логическую единицу, а на вход вывода 12 установить логический нуль. Тогда на вход

дешифратора будет установлена единица. На вход «еп» необходимо установить логическую единицу (вывод 6). Записать эти данные в Б8Я - регистр и перейти в состояние иРВЛТЕ_ВЯ ТАР - контроллера. В этот момент данные, введенные в Б8Я -регистр, устанавливаются на выводах ПЛИС.

3) Далее следует перейти в состояние 8НГРТ_ГО. ТАР - контроллера и послать в ПЛИС команду 8ЛМРЬЕ\РКЕЬОЛБ.

4) Затем опять следует перейти в состояние 8НГРТ_ВК ТАР - контроллера (переход осуществляется через состояние К.иК_ТЕ8Т\ГОЬЕ, 8ЕЬЕСТ_БК, СЛРТиР£_БК, в этом состоянии данные, с вывода ПЛИС, записываются в Б8Я - регистр.) и записать любые данные в Б8Я - регистр, одновременно считывая информацию с выхода ТБО. Полученная последовательность и есть состояния выводов ПЛИС, после того как данные на дешифраторе были установлены. Проанализировав выводы 25, 20, 21 и 27 (в выводе нужно анализировать бит отвечающий за выход) получается, что на выходе вывода 20 стоит логическая единица, следовательно, дешифратор сработал правильно, так как на выходе дешифратора получается единица [4].

Способ 2.

1) Шаги 1 и 2 аналогичны первому способу.

2) Перейти в состояние 8НГРТ_БК ТАР - контроллера (переход осуществляется через состояние КиК_ТЕ8Т\ГОЬЕ, 8ЕЬЕСТ_БЯ, СЛРТ№Е_БК, в этом состоянии данные, с вывода ПЛИС, записываются в Б8Я - регистр.) и записать любые данные в Б8Я -регистр, одновременно считывая информацию с выхода ТБО. Полученная последовательность и есть состояния выводов ПЛИС, после того как данные на дешифраторе были установлены. Проанализировав выводы 25, 20, 21 и 27 (в выводе нужно анализировать бит отвечающий за вход) получается, что на выходе вывода 20 стоит логическая единица, следовательно, дешифратор сработал правильно, так как на выходе дешифратора получается единица.

Оба способа работоспособны, но способ 2 действителен только для одной тестируемой микросхемы.

С помощью предложенных алгоритмов можно тестировать достаточно сложные схемы. Эти алгоритмы являются полезными, если приходится тестировать устройства с известной схемой внутри ПЛИС. Необходимость данного тестирования отпадает, если инженер создает свой проект. Гораздо проще и удобней протестировать созданный проект в САПР в котором он был разработан

(МАХ2РЬиБ, ОиАЯТиБ и т.д.). Однако, этот способ тестирования очень эффективен при тестировании нескольких проектов, находящихся в разных ПЛИС.

Пример 3.

Рассмотрим пример 3, в котором тестируются две схемы, расположенные в разных ПЛИС. Допустим, что в первой ПЛИС реализована схема дешифратора 2х4 (принципиальная схема дешифратора приведена на рис.3 ), а во второй ПЛИС - схема шифратора 4х2 см. рис. 4.

ПЛИС 1 ПЛИС 2

Г" - 1 1 г 1

твг , ТОО -» 1 тм

1 шО Дешифратор 1 оиЮ 1 зпО Шифра тор

1

1 -» ш 1 ош1 -1 зп! ТЮ 1

- 4x2

1 еп ои12 I ш2 -* оиЮ

1 отйЗ 1 1пЗ 0111; 1

1 ТБО 1 г 1

1

1 1 J

Рис.4. Тестируемые дешифратор и шифратор, находящиеся в разных ПЛИС. Таблица 3 (таблица соединений).

ПЛИС 1 ПЛИС 2

Вывод схемы Вывод ПЛИС Вывод схемы Вывод ПЛИС

1п0 11 ОШЮ 8

1п1 12 0ut1 9

0ut0 25 1п0 39

ОиП 20 1п1 37

0ut2 21 1п2 34

0ut3 27 1п3 33

Еп 6

Для того чтобы протестировать связи и ядра микросхем необходимо выполнить следующие шаги.

1) Перейти в состояние SHIFT_IR ТАР - контроллера и установить на всех ПЛИС команду EXTEST. Это выполняется в следующей последовательности. Сначала посылается на вход TDI команда для ПЛИС 2, а затем для ПЛИС 1.

2) Перейти в состояние SHIFT_DR ТАР - контроллера, инициализировать выводы ПЛИС 1 11 и 12 как входы, и установить на дешифраторе входное значение (например 1). Вывод 6 инициализировать как вход и установить на нем логическую единицу. Выводы 25, 20, 21, 27 инициализировать как выходы. Остальные выводы микросхемы можно инициализировать как угодно (но желательно инициализировать как входы). Выводы ПЛИС 2 нужно инициализировать как входы. Затем засылаются данные в BSR -регистры тестируемых ПЛИС сначала для ПЛИС 2, а затем для ПЛИС 1.

3) Перейти в состояние SHIFT_IR ТАР - контроллера и установить для обеих ПЛИС команду SAMPLE\PRELOAD.

4) Перейти в состояние SHIFT_DR и подать на вход TDI любые значения длиной равной BSR - регистр ПЛИС 1 плюс BSR - регистр ПЛИС 2, одновременно считывая значения с выхода TDO. Понятно, что сначала считывается BSR - регистр для ПЛИС 2, а затем для ПЛИС 1.

5) Анализировать выводы 25, 20, 21, 27 (бит отвечающий за выход) - ПЛИС 1 и выводы 39, 37, 34, 33 (бит отвечающий за вход), 8, 9 (бит отвечающий за выход) - ПЛИС 2. В зависимости от полученного результата делается вывод о работе схем внутри ПЛИС.

После приведенной методики тестирования и использования средств стандарта JTAG становится ясным какие функции должны быть возложены на программные средства. Основными являются следующие:

1) Установка на ПЛИС тестовой последовательности.

2) Тестирование межсоединений.

3) Анализ результатов тестирования.

Все необходимые средства тестирования и диагностики есть в системе "TEST Chips" окно которой показано на рис.5.

|^Паск| 11% Test ALTERA chip

Рис.5 Результат тестирования JTAG цепочки из двух ПЛИС с помощью программы «TEST Chips».

В главном меню, в списке «Создание JTAG цепочки» задается JTAG цепочка. В окне «Set Pins» в списке «Выбор микросхемы» выбирается микросхема, на которую устанавливается тестовая последовательность. В списке «Входы» выбранный вывод ПЛИС инициализируется как вход с возможностью установки на этот вход логической единицы, а в списке «Выходы» выбранный вывод ПЛИС инициализируется как выход с возможностью установки на этот выход логической единицы. После конфигурирования выбранных выводов ПЛИС после нажатия кнопки «Пуск Тестирования» в окне «Read Pins» появляется поочередно информация о состоянии выводов ПЛИС в JTAG цепочке. По кнопке «Следующая микросхема» осуществляется переход к следующей микросхеме в JTAG цепочке.

В примере 3 на вход дешифратор была установлена единица, на выходе шифратора была получена тоже единица (см. рисунок 5), следовательно, ядра двух ПЛИС работают корректно.

Заключение

Инструментария предложенного в данной программе достаточно чтобы быстро и с большой эффективностью протестировать изделия, имеющие большое число ПЛИС. Тесты этой программы проводились на системе из нескольких десятков ПЛИС фирмы ALTERA, система показала высокую надежность тестирования ПЛИС. Разумеется, программа «TEST Chips» допускает развитие во многих направлениях. Основными из них являются следующие:

1) При тестировании большого числа ПЛИС на закоротки, время подготовки тестирующей последовательности может быть сокращенно за счет усовершенствования алгоритмов тестирования.

2) Время установки тестовых последовательностей для большого числа ПЛИС может быть сокращено путем использования типовых последовательностей, хранящихся в базе данных.

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

Список литературы

1. Ключев А.О., Коровьякова Т. А., Платунов А.Е. "Использование интерфейса JTAG для отладки встраиваемых систем". // Изв. вузов. Приборостроение. — 1998. — Т 41, № 5. — С. 4550.

2. Документ фирмы ALTERA http://www.altera.com/literature/an/an039.pdf

3. А.П.Антонов «Язык описания цифровых устройств AlteraHDL» практический курс

4. Торчигин С.В. Принципы использования стандарта JTAG при отладке вычислительных систем, основанных на программируемых логических интегральных схемах. Электронный журнал «Исследовано в России» 149, стр. 1686-1701, 2002 г. http://zhurnal.ape.relarn.ru/articles/2002/149.pdf