2005
Доклады БГУИР
октябрь-декабрь
№ 4 (12)
УДК 681.326.7
ОБЗОР МЕТОДОВ НЕРАЗРУШАЮЩЕГО ТЕСТИРОВАНИЯ ОЗУ
ВН. ЯРМОЛИК, А.П. ЗАНКОВИЧ
Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь
Поступила в редакцию 26 апреля 2005
В статье представлен обзор методов периодического неразрушающего тестирования схем памяти. Основное внимание уделено неразрушающим аналогам классических маршевых алгоритмов. Рассмотрен получивший широкое распространение метод Николаидиса, а также новые методы, основанные на локальной и глобальной симметрии данных. Приведена сравнительная оценка эффективности использования рассмотренных методов.
Ключевые слова: неразрушающее тестирование, маршевые тесты, симметрия данных, условия скрытия и проявления ошибок, маскирование ошибок.
Введение
В настоящее время быстро прогрессирующие технологии производства полупроводниковых приборов позволяют создавать схемы ОЗУ с чрезвычайно высокой степенью интеграции. Нежелательным последствием использования новых технологий является увеличение вероятности возникновения неисправностей. Для обеспечения надежного функционирования цифровых систем большое внимание должно быть уделено своевременному обнаружению неисправностей памяти, поскольку результаты исследований [1, 2] свидетельствуют о том, что отказы ОЗУ могут составлять до 70% от общего числа отказов системы в целом.
Помимо традиционного заводского контроля на этапе производства в настоящее время широко применяется встроенная аппаратура самотестирования ВАСТ [3, 4]. Такой подход позволяет периодически выполнять тестирование на внутренней частоте без применения внешнего оборудования. Большинство ВАСТ реализуют тесты сложности О(Ж) N - емкость запоминающего устройства), называемые маршевыми тестами [5]. При выполнении стандартного маршевого тестирования со всеми ячейками памяти в определенном порядке (^ — от младших адресов к старшим, - — наоборот, ф — в любом направлении) выполняются операции, задаваемые несколькими маршевыми элементами. Используются операции: ^0, — запись в элемент памяти значений 0 или 1; г0, г1 — чтение текущего значения из элемента памяти и сравнение его со значением 0 или 1. Достоинствами маршевых тестов являются относительно высокие скорость выполнения и покрывающая способность, а также простота реализации ВАСТ. Из недостатков отметим полную потерю хранящейся в памяти информации после выполнения тестирования, что ограничивает применение классических маршевых тестов только моментами начального тестирования устройства. Для надежной работы постоянно включенных систем, помимо методов с использованием избыточных данных (коды Хэмминга, контроль на четность), применяется методы периодического неразрушающего тестирования [6-9], основанного на классических маршевых алгоритмах. Их обзор представлен в данной статье.
При анализе покрывающей способности маршевых тестов рассматриваются не реальные дефекты в структуре ОЗУ (замыкания, обрывы и т.п.), а математические модели, описывающие функциональное проявление этих дефектов в процессе работы памяти. Приведем наиболее распространенные модели неисправностей [2].
1. Константные неисправности (Stuck-At Fault — SAF): логическое значение ячейки памяти всегда равно 0 (SA0) или 1 (SA1) независимо от операций, производимой с этой или другими ячейками памяти.
2. Переходная неисправность (Transition Fault — TF): ячейка не способна осуществлять переход из состояния логического 0 в состояние логической 1 (TF|) либо наоборот (TFj).
3. Неисправности взаимного влияния (Coupling Fault — CF): изменение логического значения одной (влияющей) ячейки отражается на значении второй (зависимой) ячейки. Ячейка с меньшим адресом может влиять на ячейку со старшим адресом (это обозначается символом л) и наоборот (символ v). Различают три типа неисправностей CF.
3.1. Инверсная неисправность CF (Inversion CF — CFin). Изменение значения влияющей ячейки вызывает инвертирование значения зависимой. Возможны следующие виды неисправностей CFin: л(|,|), лЦ,|)М|,|), v(|,|).
3.2. Неинверсная неисправность CF (Idempotent CF — CFid). Изменение значения влияющей ячейки переводит зависимую ячейку в определенное состояние. Возможно восемь видов неисправностей CFid: л(|,0), л(|,1), л(|,0), лЦ,1), v(|,0), v(|,1), v(j,0), v(j,1).
3.3. Константная неисправность CF (State CF - CFst). Переход зависимой ячейки в какое-либо состояние возможен только при определенном значении влияющей ячейки. Различают следующие неисправности CFst: л(0,0), л(0,1), л(1,0), л(1,1), v(0,0), v(0,1), v(1,0), v(1,1).
Неразрушающее тестирование памяти
Основным требованием, предъявляемым к неразрушающим тестам, является необходимость восстановления исходного состояния объекта тестирования после выполнения процедуры тестирования. Поэтому все тестовые воздействия, направленные на активизацию неисправностей и проявление их в виде ошибок на выходах схемы, должны носить обратимый характер. Простейшим способом реализации этого требования для случая неразрушающего тестирования памяти является сохранение всего ее содержимого в резервном буфере с последующим выполнением одного из классических разрушающих алгоритмов. Хотя этот способ позволяет использовать существующую ВАСТ, он потребует дублирования массива запоминающих элементов, а также дополнительного времени для сохранения и последующего восстановления содержимого памяти. Поэтому для большинства приложений он непригоден.
Другой подход был предложен в докладе Б.Конемана на семинаре Design For Testability в 1986 г. [10]. Обозначим через s(A) сигнатуру упорядоченного потока данных A длинной N, а через TP — поток тестовых данных той же длины. Тогда алгоритм работы метода можно сформулировать следующим образом.
Шаг 1: Прочитать содержимое памяти (CONTENTS). Вычислить сигнатуру содержимого памяти s(CONTENTS). Записать новое содержимое памяти NEWCONTENTS = (CONTENTS © TP). Знак "©" здесь и далее используется для обозначения операции исключающего ИЛИ.
Шаг 2: Прочитать новое содержимое памяти (NEWCONTENTS). Вычислить сигнатуру s(NEWCONTENTS). Восстановить в памяти прежние значения путем записи (NEWCONTENTS © TP)
Шаг 3: Вычислить результирующую сигнатуру RESULT как s(CONTENTS) © s(NEWCONTENTS)
Для работы этого метода необходимо, чтобы используемые сигнатурные анализаторы обладали свойством линейности, потому что только в этом случае для исправной памяти будет получено детерминированное значение RESULT = s(TP).
Несмотря на то что описанный алгоритм удовлетворяет требованиям неразрушающего тестирования и достаточно просто реализуется в программном или аппаратном виде, он обладает некоторыми существенными недостатками.
1. Некоторые неисправности генерируют на Шаге 1 и Шаге 2 одинаковые векторы ошибок. Такие неисправности не будут обнаружены за счет наложения ошибок друг на друга.
2. Предлагаемые тестовые последовательности состоят из двух элементарных циклов, содержащих по одной операции чтения и записи для каждой ячейки. Им соответствует простейший маршевый алгоритм , М); А(г1, ^0). Не существует универсальных способов построения неразрушающих аналогов произвольных маршевых алгоритмов.
3. Предложенный алгоритм не гарантирует обнаружение целого ряда неисправностей
памяти.
Тестирование по методу Николаидиса
Из-за описанных недостатков метод Конемана не нашел широкого применения на практике. Вместо него в большинстве случаев используются методы, основанные на преобразовании классических маршевых тестов к неразрушающему виду. Последовательность шагов, требуемых для такого преобразования, была предложена М.Николаидисом в работе [4]. На вход преобразования поступает классический маршевый алгоритм АЬт, промежуточные алгоритмы, получаемые на каждом шаге i, обозначаются через АЬ/.
Шаг 0. В начало каждого маршевого элемента, начинающегося операцией записи, добавляется операция чтения. Это требуется для предотвращения затирания маршевым элементом текущего содержимого памяти.
Шаг 1. Если первый маршевый элемент алгоритма АЬт используется только для записи в память инициализирующих значений (а это справедливо для большинства классических маршевых алгоритмов), и этот элемент не обнаруживает никаких дополнительных неисправностей, то его можно удалить из АЬ0.
Шаг 2. На этом шаге все операции из алгоритма АЬ1 заменяются неразрушающими аналогами. Ими являются операции га и г, читающие значение текущей ячейки памяти и помещающие его в прямом (а) или обратном (а) виде во временный буфер, а также wa и wa , записывающие в текущую ячейку памяти прямое или проинвертированное значение из временного буфера. Пусть х — ожидаемое значение первой операции чтения алгоритма АЬ1. Тогда все последующие операции алгоритма, читающие значение У] (] = 2, ..., т, где т - общее количество операций в алгоритме АЬ1), преобразуются в соответствующие неразрушающие операции со значением, если х = у■, или со значением а , если х = у■. Самая первая операция чтения
алгоритма АЬ1 преобразуется в операцию га.
Шаг 3. Если последняя операция записи помещает в память значения, обратные значениям, используемым на стадии инициализации алгоритма АЬт, то в конец алгоритма АЬ2 добавляется маршевый элемент §(га, wa ), инвертирующий содержимое памяти. Этот шаг необходим для восстановления начального состояния памяти в тех случаях, когда после выполнения АЬ2 оно оказалось обратным начальному. Однако дополнительный маршевый элемент может существенно увеличить время тестирования. В работе [11] предложен один из способов элиминации данного шага, основанный на изменении архитектуры схемы памяти (рис. 1). Переключение Т-триггера производится после каждого выполнения процедуры тестирования. Его выход управляет инверсией входных и выходных данных схемы памяти с помощью двух вентилей исключающего ИЛИ.
Массив запоминающих элементов
входные
данные
©
¿-и
©
выходные
данные
Полученный на последнем шаге алгоритм AL3 представляет собой неразру-шающую версию исходного маршевого алгоритма ALin. Он называется базовым нераз-рушающим тестом. Активизирующая неисправности модификация памяти в процессе его выполнения осуществляется путем инвертирования всего содержимого памяти. Для обнаружения ошибок результаты всех операций чтения сжимаются с помощью сигнатурного анализатора в рабочую сигнатуру. Для получения эталонной сигнатуры, соответствующей содержимому памяти без ошибок, перед выполнением базового алгоритма запускается начальный алгоритм, получаемый на шаге 4.
Шаг 4. Из алгоритма AL3 удаляются все операции записи, а операции га заменяются
схема тестирования T-триггер
Рис. 1. Модифицированная архитектура памяти для инвертирующих тестов
на ra
Рассмотрим применение этих правил для классического маршевого теста March C- [2].
ALin:
AL0
AL1
AL2
AL3
AL4
#(^0); ^(г 0, М); ^(г1, ^0); % 0, М); ^0);ф(г 0) ф(г 0, ^0); ^(г 0, М); ^(г1, ^0); % 0, М); ^0);ф(г 0) ^ (г 0, М); ^ (г 1, ^0); ^(г 0, М); ^(г 1, ^0); ф(г 0)
Чга,^);%,^); %,^);%,^ )
совпадает с AL2, обозначается tMarchC-
^а ); ^а ); ) ^(а Пка ) Опишем полную процедуру тестирования памяти алгоритмом с использованием базового и начального неразрушающих алгоритмов.
1. Вычисляется эталонная сигнатура Ок^ путем выполнения начального алгоритма
AL4.
2. Вычисляется рабочая сигнатура СТЕЗТ путем выполнения базового алгоритма AL3.
3. Сигнатуры С^Ер- и СТЕЗТ сравниваются между собой. Их неравенство или равенство определяют соответственно наличие или отсутствие неисправностей в ОЗУ.
Описанной технологии неразрушающего тестирования также присущ ряд недостатков.
1. Существенно увеличивается сложность теста за счет добавления начального алгоритма, используемого для вычисления эталонной сигнатуры.
2. Не гарантируется 100-ная покрывающая способность даже для однократных неисправностей из-за эффекта маскирования [12].
Симметричное тестирование памяти
Для устранения основного недостатка неразрушающего тестирования по методу Нико-лаидиса, связанного с существенным (до 30%) увеличением сложности алгоритма, был предложен новый метод [7]. Его основная идея заключается в разбиении базового неразрушающего теста на две части, считывающие симметричные последовательности данных. Неисправности схемы памяти проявляют себя в виде нарушений симметрии этих последовательностей, что легко обнаружить, вычислив и сравнив в конце алгоритма их сигнатуры.
Пусть В = ((,...,Вк_) — некоторая последовательность данных. Обратной назовем
последовательность В* = (( _!,•••, В0), инверсной — последовательность В =((,..., Вы _), а обратной инверсной — последовательность В * = (в^_1,., В0). Все возможные комбинации симметричных последовательностей данных делятся на четыре типа, представленные на рис. 2.
Т1
Т2
Т3
Т4
Рис. 2. Типы симметрии последовательностей данных
Для применения симметричных последовательностей данных при тестировании схем памяти требуется описать способ их сигнатурного анализа. Введем некоторые условные обозначения. Пусть = (¿о, Ун) представляет собой некоторое состояние сигнатурного анализатора размерности к, его обратным состоянием назовем 5* = (,ук-ь ..., ¿0). Если Н(х) = Нкхк + Ик-1хк~ 1 + ... + Н1х + Н0 представляет собой некоторый полином степени к, то Н*(х) = хкН(х"1) = Нк + Нк_ 1х + ... + Н1хк'1 + Л0хк будет представлять полином степени к, обратный исходному полиному Н(х). Через sig(В, 5, Н) обозначим сигнатуру, получаемую при сжатии последовательности данных В на сигнатурном анализаторе, описываемом полиномом Н(х), с начальным состоянием 5.
Теорема 1. Пусть при сжатии последовательности данных В на сигнатурном анализаторе, описываемом полиномом Н(х), с начальным состоянием 50, была получена сигнатура 51 = sig(В, 50, Н). Тогда сигнатура 52, получаемая при сжатии последовательности данных В* на сигнатурном анализаторе, описываемом полиномом Н*(х), с начальным состоянием 51*, будет определяться следующим соотношением:
sig(В*, sig(В, 50, Н)*, Н*) = 50
(1)
Доказательство теоремы 1 приведено в [7]. Аналогичным образом было получено, что:
В * , sig(В, 50, Н)*, Н*) = 50* + sig((1, ..., 1), (0, ..., 0), Н*),
sig(В , 50, Н) = sig(В, 50, Н) + sig((1, ..., 1), (0, ..., 0), Н),
(2) (3)
sig(D, 50, Н) = sig(В, 50, Н). (4)
Пользуясь соотношениями (1)-(4), можно построить схемы сигнатурного анализа последовательностей данных, обладающих любым из рассмотренных на рис. 2 типов симметрии. Пример сжатия двух последовательностей с симметрией типа Т2 приведен на рис. 3. При отсутствии в считываемых последовательностях данных нарушений симметрии сигнатуры 52 и 5С должны быть равны. 5С используется для обозначения константной сигнатуры из (2): 5С = = 50* + 81е((1, ..., 1), (0, ..., 0), Н*).
Н = х4 + х +1
Н * = х4 + х3 +1
Н * = х 4 + х3 +1
1
В
-Ф
50 =
1 0 1 0 1 1 0 1
1000 1100 0110 0011 0001 0000 0000
(0000)
В '
0 1 0 1 0 0 1 0
,001^ = 52 0111 1110 1101 1011 0110 1100 1000
0001 ) = 51*
5 * =
0110 1101 1011 0111 1110 1100 1000
0000
Рис. 3. Сигнатурный анализ взаимообратных инверсных последовательностей данных
Главным условием применения симметричного сигнатурного анализа является наличие симметричных последовательностей данных. Для их формирования в случае неразрушающего маршевого тестирования в [7] предлагается следующий подход. В качестве основы берется базовый неразрушающий алгоритм. Он разделяется на две половины, операции чтения которых должны генерировать взаимосимметричные последовательности данных. Этого можно добиться, вводя в маршевый алгоритм дополнительные операции чтения. Подобная возможность основывается на утверждении о том, что покрывающая способность маршевого теста не изменяется при добавлении к любой его фазе в произвольном месте произвольного количества операций чтения или фаз, содержащих только операции чтения. Данное утверждение справедливо, поскольку ни одна из рассматриваемых моделей неисправностей не активизируется при выполнении операции чтения.
Рассмотрим пример преобразования маршевого теста March C- в симметричный. Для этого создадим схему считываемых базовым неразрушающим алгоритмом tMarch C- данных (рис. 4,а).
Здесь каждая стрелка соответствует отдельной операции чтения из каждой фазы маршевого теста. Направление стрелки указывает направление движения фазы теста. Теперь задача преобразования сводится к добавлению дополнительных операций чтения к тесту таким образом, чтобы представленная выше схема стала бы обратно симметричной. В нашем случае для этого достаточно добавить в начало алгоритма маршевый элемент -U-(ra) (рис. 4,6). Вертикальной линией помечена граница симметричных последовательностей. Окончательный вариант симметричного алгоритма будет выглядеть следующим образом (добавленная операция подчеркнута):
UDMarch C- Ufc),^);%,^);| %,^);%,^);%).
Использование симметрии позволило существенно уменьшить сложность неразрушающего алгоритма. Она снизилась с 14N для алгоритма Николаидиса tMarch C- до 10N для UD-March C-.
Локально-симметричные алгоритмы тестирования памяти
Главным недостатком описанных выше алгоритмов является то, что они рассматривают покрывающую способность построенных алгоритмов только после их получения, т.е., при создании алгоритма в первую очередь рассматриваются вопросы придания ему определенной структуры (добавление начального алгоритма вычисления эталонной сигнатуры, приведение алгоритма к симметричному виду), что приводит, как правило, к его необоснованному усложнению. Авторами предложена методика анализа поведения неисправностей в процессе не-разрушающего маршевого тестирования [13], которая позволяет построить алгоритмы с теоретически минимальной сложностью. Она основана на выделении условий проявления и скрытия неисправностей.
Модификация значений памяти в процессе выполнения базового неразрушающего алгоритма выполняется путем инвертирования содержимого. Инвертирование исправной ячейки означает запись в нее противоположного значения. Неисправность может проявить себя сохранением прежнего состояния или изменением другой ячейки. Наведенное в результате ошибочное значение считывается и модифицируется последующими операциями до тех пор, пока повторная активация неисправности не установит в зависимой ячейке такое значение, какое бы она имела в отсутствие неисправности, т. е. произойдет скрытие ошибки.
Введем условные обозначения, описывающие процессы инвертирования и чтения. Символом I обозначим операцию инвертирования значения ячейки. Эту операцию составляют чтение текущего значения ячейки и последовательность записей противоположных значений в ту же ячейку. Количество инвертирований ячейки k задается индексом символа I (при k=1
0) //\\/ b) V/IW
Рис. 4. Схема чтения данных тестом March C-: а) до добавления операции чтения; b) после добавления
его можно опустить). Префиксы А, - или $ используются для обозначения направления выполнения процесса инвертирования (А — от младших адресов к старшим, - — наоборот, ф — не имеет значения). Наличие префикса i говорит о том, что содержимое памяти перед началом выполнения текущего маршевого элемента должно быть проинвертировано по отношению к содержимому перед началом выполнения теста. Символом Я обозначим следующую за инвертированием операцию чтения. Префикс л, V или = задает порядок взаимного расположения проинвертированной и читаемой ячеек (л — адрес первой ячейки больше адреса второй, V — меньше, = — равен).
Условием обнаруживающего проявления константной неисправности 8АБ неразру-шающим тестом является инверсия неисправной ячейки - следующая операция чтения вернет ошибочное значение. Прочитанное после повторного инвертирования значение совпадет со значением, которое было бы прочитано из исправной памяти. В общем случае, любое четное количество инвертирований наводит ошибку в неисправной ячейке, нечетное — скрывает ошибку. Запишем это утверждение с помощью введенных условных обозначений.
Условия обнаруживающего проявления неисправности 8АБ (Азар):
ф 1к=Я, А^Я, -1клЯ для к = 2i - 1 0 = 1, 2, ...);
i ф 1к=Я, iАIkvR, ^¡клЯ для к = 2i ^ = 1, 2, ...).
Условия скрывающего проявления неисправности 8АБ (ВЗАР): iф 1к=Я, iАIkvR, ^1клЯ для к = 2i - 1 ^ = 1, 2, ...);
для к = 2i 0 = 1, 2, ...).
Рассуждая аналогичным образом, были построены условия проявляющего и скрывающего проявления для всех рассматриваемых классов неисправностей [9]. Следующим этапом исследования стало выделение условий проявления неисправностей в произвольном базовом неразрушающем алгоритме. Для этого были сформулированы следующие правила.
1. Последовательность вида "й(га, ..., о)" удовлетворяет условию й1кЬЯ, где о обозначает операцию записи, й е {А, $ }, Ь е {л, V}. Направление стрелки, обозначаемой Ь, совпадает с направлением стрелки, обозначаемой й.
2. Последовательность вида "й(оь ..., ог, га, ...)" , где о, ^ е 1, ..., I) обозначает операцию чтения или записи, удовлетворяет условию й1ту=Я, где ту — количество инверсий, выполняемых маршевым элементом до рассматриваемой операции чтения.
3. Если текущий маршевый элемент не последний в алгоритме, то он удовлетворяет условию й1кЬЯ, где к - количество выполняемых маршевым элементом инверсий. Направление стрелки й совпадает, а направление стрелки Ь противоположно направлению выполнения маршевого элемента.
4. Если предыдущие маршевые элементы инвертировали содержимое памяти нечетное число раз, то все условия из текущего элемента получают префикс ь
После выделения всех условий проявления неисправностей необходимо выделить пары обнаруживающих и скрывающих ошибку условий для каждой из рассматриваемых неисправностей. Это позволяет определить, какие операции оперируют с ошибочными данными в процессе тестирования. На рис. 5 эти операции подчеркнуты темными линиями. Начало каждой линии расположено под операцией теста, соответствующей символу Я из условия, обнаруживающего проявления неисправности. Заканчивается каждая линия перед операцией, соответствующей символу Я из ближайшего условия, скрывающего проявления рассматриваемой неисправности.
ml m2 m3 m4 m5
, ) ^, ) ^, ) W{ra, w-a) W{ra)
Рис. 5. Карта проявления неисправностей для неразрушающего теста March C-
Рассмотрим для теста March C- в качестве генераторов симметричных последовательностей данных операции чтения из следующих маршевых элементов:
(M1,M2) и (M3,M4) (симметрия типа T2), M4 и M5 (T2);
Ml и M3 (Tl), M2 и M5 (T4);
M2 и M3 (T2), M2 и M5 (T4);
Ml и M2 (T4), M3 и M4 (T4), M4 и M5 (T2).
Анализ рис. 5 показывает, что четвертый вариант обнаруживает не все активизированные неисправности — ошибочные данные, вызванные неисправностями с условием обнаружения UlvR, считываются элементами M3, M4 и M5 и не считываются элементами Ml и M2, а значит, симметрия данных в этом случае не нарушается. Поэтому в дальнейшем он рассматриваться не будет. Для записи оставшихся алгоритмов дополним принятые условные обозначения [2, 4] следующим образом.
1. Верхний индекс операций чтения содержит в квадратных скобках список номеров симметричных элементов, включающих данную операцию.
2. Граница первого и второго симметричного потоков отмечается вертикальной чертой. Нижний индекс задает тип симметрии образованного симметричного элемента, верхний индекс - его порядковый номер.
С помощью предложенных обозначений рассмотренные алгоритмы запишутся так:
1) wa))a[1],Wa);|T2 Wa)Wa^ ^);
2) W[))] W[) W[)%,w3);ft(r™);
3) %,Wa);Wa);|T2|T24] 4ai],W[)%,W[)ftfe2).
Рассмотрим сложность аппаратной реализации этих алгоритмов в виде ВАСТ. Использование симметрии типов T1 и T3 более эффективно при аппаратной реализации. Инвертирование прочитанных данных перед сжатием на сигнатурном анализаторе позволяет изменить считываемые последовательности D на D и D* на D * . Кроме того, для маршевых элементов, допускающих оба направления адресации (ф), считываемые последовательности D и D можно
заменить на D* и D * соответственно. В результате оптимизации можно получить алгоритмы, генерирующие последовательности данных, обладающих симметрией только типов T1 и T3:
1) Wa);Wa)|?1 Wa)Waft(rfl[2]);
2) Wa ); T] Wa ) T Wa ) U(rfl, Wa ); U(rf]);
3) %,^);-) Т! и() Т] %,-а);и^).
Таким образом, для базового неразрушающего теста МагоИС- можно построить несколько вариантов локально симметричных алгоритмов без добавления операций чтения. Покрывающая способность построенных алгоритмов равна покрывающей способности соответствующего классического неразрушающего теста.
Оценка эффективности использования рассмотренных методов
На рис. 6 представлены наиболее популярные алгоритмы неразрушающего тестирования, построенные с помощью рассмотренных выше методов.
Алгоритм
1 {(Та жоШа , -а МЛ
н 2 ^а, -а ) ^(Та )
3 и(а[1] )т! -а )?1 ^а^ )
+ 1 №а ) ЧТа , Тл №а, -а ) ^а , -а , о)
сл н 2 ^(Та,Га> -а ) ^(та > -а, Та )
3 и(га1] )тз ^(та23, -а )т] и(гам, -а, г™)
1 {(Та, Та ) и (Та ^ ) ^ )} {(г. , -а , ^ Ща , -а, ^ Ж^ )}
л ё 2 ^ (Та ^)^(Та,Та, -а , Та ) ^а> Та , -а, Та ЖТа )
2 3 ^ ) Т! ^а , -а , Та ) -а , Т. ) ^ )
1 о л о Й 1 {(Та ) ^а ЖТа ) ^а ) и(Та )}{(Та, -а ) ^ , -а Ж^, -а ) ^ , -а ) ^ (г. )}
2 П (Та Ща , -а ) ^ , -а ) ^, -а ) ^а , -а ) ^ (Та )
2 3 ^ -а ) Т! ^аИ -а ) Т21 и^, -а ) ^а , -а ) и^ )
Рис. 6. Алгоритмы неразрушающего тестирования: 1 — метод Николаидиса; 2 — симметричные; 3 — локально симметричные.
Одним из важнейших параметров создаваемых алгоритмов является их сложность, оцениваемая по суммарному количеству операций в алгоритме (рис. 7, а).
16 14 12 10
МЛТ8 МагоИ У _МЛТ8++_МагоИ С-
25
20
15
10
г.иНУИ
МЛТ8 МагоИ У
МЛТ8++ МагоИ С-
■ Классический разрушающий тест □ Симметричный алгоритм
□ Алгоритм Николаидиса ■ Локально-симметричный алгоритм
Рис. 7. Эффективность неразрушающих алгоритмов: а) сложность алгоритма; Ь) количество обнаруживаемых неисправностей
8
6
4
5
2
0
0
Еще одним критерием оценки эффективности алгоритмов тестирования является их покрывающая способность. В случае неразрушающего тестирования ее можно рассматривать с двух сторон. С одной стороны, следует рассмотреть способность алгоритма активизировать некоторый набор неисправностей - его генерирующую способность, с другой, созданный алгоритм должен однозначно определять ошибочность прочитанного значения, т.е. обладать обнаруживающей способностью.
Поскольку при тестировании по методу Николаидиса активизация неисправностей производится только в процессе работы базового неразрушающего алгоритма, то только он обладает генерирующей способностью. А так как он был получен из разрушающего маршевого алгоритма путем выполнения преобразований, не влияющих на покрывающую способность, то их покрывающие способности совпадают [6]. Это утверждение распространяется также и на алгоритмы с симметричными данными, поскольку в их основу положены базовые алгоритмы Нико-лаидиса.
Обнаружение сгенерированных ошибок при тестировании по алгоритму Николаидиса производится при сравнении эталонной и рабочей сигнатур. Для рассматриваемых неисправностей ошибки гарантированно исказят только вторую из них, и, следовательно, все могут быть обнаружены. На обнаруживающую способность алгоритмов с глобальной симметрией влияет выбор позиций, в которые добавляются корректирующие симметрию операции чтения. Дополнительная операция в самом начале алгоритма более предпочтительна, поскольку она выполняется перед активизацией большинства неисправностей. Однако в некоторых случаях (например, для алгоритма MATS) приведение к симметричному виду требует большого количества дополнительных операций. Этого можно избежать только за счет снижения обнаруживающей способности (рис. 7,6). После добавления операций выполняется проверка, все ли целевые неисправности обнаруживаются созданным алгоритмом. До появления методики анализа поведения неисправностей [13] эта проверка представляла собой трудную задачу, особенно для тестов большой сложности. Указанная методика позволяет выполнить ее автоматически [14]. Способность локально симметричных алгоритмов обнаруживать ошибки проверяется в процессе выбора симметричных стадий, что также может быть автоматизировано.
На обнаруживающую способность неразрушающих алгоритмов влияет также тот факт, что используемые сигнатурные анализаторы, основанные на линейных сдвиговых регистрах с обратной связью, подвержены маскированию ошибок - их скрытию в результате наложения друг на друга. Процесс сжатия потока данных на сигнатурном анализаторе эквивалентен нахождению остатка от деления полинома данных генерирующим полиномом [15]. Маскирование проявляется, если полином ошибок делится на генерирующий без остатка. Для минимизации маскирования во всех трех случаях неразрушающего тестирования применим подход, предложенный в [12]. В его основу положен тот факт, что при выполнении маршевых тестов неисправности проявляют себя в виде детерминированных векторов ошибок, имеющих простое математическое описание.
Сигнатурный анализатор, основанный на сдвиговом линейном регистре с обратной связью, позволяет обнаруживать все одиночные и двойные ошибки в последовательности сжимаемых данных длиной 2m-1 (m - разрядность анализатора), если для его задания используется примитивный полином. Одиночные неисправности в процессе неразрушающего тестирования по алгоритму Николаидиса tMarch C- генерируют ошибку в считываемом потоке длиной 4N < 2m-1 дважды, поэтому для их обнаружения требуется сигнатурный анализатор с задающим полиномом порядка m = |"log2 (N +1) + 2. Поскольку при выполнении симметричного неразру-шающего тестирования неисправности проявляют себя аналогично, то и в этом случае требуется сигнатурный анализатор, задаваемый полиномом указанного порядка. Докажем, что этот же полином позволяет обнаруживать также все двойные константные неисправности для теста tMarch C-. Проявление любых двух константных неисправностей (в ячейках с произвольными адресами i и j, i Ф j) при выполнении данного алгоритма может быть описано с помощью полинома
х3 N-i + х3 N- j + xN+j+ xN+i= xN+i(x2 N-2i+1 + x2 N-i - j+1 + xj-i +1). (5)
Из (5) следует, что полином ошибок может быть разложен на два множителя. Первый из них не делится ни одним полиномом порядка >1, а второй можно представить в виде
хы+г- (х2 /+1 + 1)х;-г + 1)=(хР + 1)хе +1), где Р=2Ы-Н+1<2т-1 и б=Н<2т-1
для т = ((V +1) + 2. Следовательно, все двойные константные неисправности будут
обнаружены.
Ошибки большей кратности на практике встречаются реже. Нахождение точного порядка и вида полиномов, позволяющих их обнаружить, представляет собой сложную задачу. В [12] вычислены нижние границы размерности генерирующих полиномов: т = (2N) для
N
трехкратных ошибок и m =
log21 N + 1 2 | +1
— для четырехкратных. Таким образом, для
обнаружения всех двойных неисправностей требуется сигнатурный анализатор в два раза меньший, чем требуемый для обнаружения неисправностей четвертой кратности.
Заключение
В статье представлен обзор методов периодического неразрушающего тестирования схем памяти маршевыми алгоритмами. Рассмотрены алгоритмы Николаидиса, симметричные и локально симметричные алгоритмы. Проведен сравнительный анализ методов с точки зрения сложности алгоритмов и их покрывающей способности. Показан способ минимизации маскирования ошибок, генерируемых в процессе тестирования.
TRANSPARENT MEMORY TESTING METHODS OVERVIEW
V.N. YARMOLIK, A.P. ZANKOVICH Abstract
Overview of methods for periodical transparent memory testing is presented in the article. Transparent analogues of classical March algorithms receive primary attention. Wildly accepted method of Nicolaidis is considered here, as well as novel methods, that is based on local and global data symmetry. Comparison studies of considered methods are also presented.
Литература
1. Prince B. High-performance memories: new architecture DRAM's and SRAM's, evolution and function. Gr.Britain, John Wiley & Sons, 1996.
2. Goor A.J. van de. Testing Semiconductor Memories, Theory and Practice. Gr.Britain, John Wiley & Sons, 1991.
3. McCluskey E.J. // IEEE Design & Test of Computers. 1985. Vol. 2, No. 2. P. 21-28.
4. Nicolaidis M. // Proc. of Int. Test Conf., USA, 1992. P. 598-606/
5. SukD., Reddy S. // IEEE Trans. on Computers. 1981. Vol. C-30, No. 12. P. 982-985.
6. NicolaidisM. // IEEE Trans. on Computers. 1996. Vol. 45, No. 10. P. 1141-1155.
7. Yarmolik V.N., Hellebrand S., Wundelich H.-J. // Proc. of the DATE'99 Conference. 1999. P. 702-707.
8. Ярмолик В.Н., Калоша Е.П., Быков Ю.В. и др. Проектирование самотестируемых СБИС // Научная монография в двух томах. Мн., 2001. T. 2.
9. Занкович А.П., ЯрмоликВ.Н. // Автоматика и телемеханика. 2003. № 9. С. 141-154.
10. Koneman B. // Oral presentation, DFT Workshop, USA, 1986.
11. Yarmolik V., Klimets Yu., Demidenko S., Piuri V. // 7th Int. Symposium on IC Technology Systems and Applications. Singapore, 1997. P. 192-195.
12. Yarmolik V.N., Nicolaidis M, Kebichi O. // Proc. of Int. Test Conf., 1994. P. 368-377.
13. Yarmolik V.N., Zankovich A.P., IvaniukA.A. // Proc. of Int. Conf. On MixDes. Poland. 2002. P. 545-548.
14. Zankvich A.P, Yarmolik V.N., SokolB. // Proc. of the CADSM. №гате. 2003. P. 226-229.
15. T.W.Williams. // IEEE Trans. CAD. 1988. Vol. 7, No. 1. P. 75-83.