Диагностика неисправностей встроенных ПЗУ
Введение
Исследовательский документ [13] предсказывает, что в обозримом будущем более 90% площади кремния, на которой выращиваются интегральные микросхемы, будет занимать память различных типов. Ввиду их крайне высокой степени интеграции и весьма сложной структуры, массивы памяти в гораздо большей степени уязвимы для разного рода неисправностей, чем остальные модули интегральных микросхем (ИС). Сейчас происходит интенсивное внедрение во встроенные структуры памяти новых механизмов для предупреждения снижения выхода исправных чипов в соответствии с новыми требованиями, возникающими в процессе тестирования. Дело в том, что в областях полупроводниковых устройств со сверхвысокой плотностью размещения выращиваемых структур из-за диффузии на этапах полисиликона, металлизации и прочих возникают неисправности неизвестных ранее типов. Невозможность надлежащим образом проверить все структурные характеристики встроенной памяти может привести к ухудшению качества тестирования и, в конечном счете, — к понижению процента выхода исправных чипов.
Встроенная память, несомненно, более сложна с точки зрения тестирования и диагностики, чем аналогичные ИС ЗУ. Сложность структур встроенной памяти наряду с невысокой пропускной способностью тестовых каналов обуславливает как ограниченность тестового доступа, так и ограничения в управляемости при проведении тестирования. Естественно, что структуры встроенного самотестирования памяти (ВСТП) быстро зарекомендовали себя в качестве основных методологий тестопригодного проектирования (DFT), поскольку их применение позволяет с помощью сравнительно простой логики тестирования сгенерировать, сжать и сохранить на самом чипе несложные тестовые воздействия наряду с ожидаемыми реакциями. Кроме того, каналы ввода/вывода структур памяти, как правило, вполне доступны и их достаточно для управления структурами ВСТП, включая тестирование ИС на их рабочих частотах и обнаружение неисправностей, связанных с параметрами времени.
Несмотря на то, что энергонезависимые ЗУ относятся к числу старейших программируемых устройств, они по-прежнему имеют множество областей применения. ПЗУ, ППЗУ, СППЗУ, ЭСППЗУ и флэш-память оказались весьма полезными для целого ряда разнообразных приложений. Традиционно ЗУ этого типа использовались главным образом для долговременного хранения данных, таких как просмотровые таблицы для мультимедийных процессоров, или для постоянного хранения кодов микропроцессоров. Благодаря высокой плотности размещения информации и новым субмикронным технологиям с применением многих металлизированных слоев, ПЗУ также завоевали популярность в качестве удобного средства хранения информации в схемах с низким напряжением и невысоким энергопотреблением. Более того, существует ряд методов, применяемых для уменьшения влияния на цепи отдельных запоминаемых битов и/или слов различных эффектов, обусловленных емкостными нагрузками и переключениями логических сигналов. К таким методам относятся селективная предзарядка, минимизация количества ненулевых битов, инверсия строк, кодирование знака битовых наборов (когда два набора +n и –n отличаются только одним битом, кодирующим знак) и кодирование отличий наборов (метод сжатия данных, когда каждый следующий набор данных представляется только его отличием, как правило небольшим, от предыдущего набора). Такое разнообразие технических решений и технологий привело к заметному росту использования ПЗУ при проектировании ИС. Новые виды энергонезависимой памяти, такие как сегнетоэлектрическая (ferroelectric), магниторезистивная (magnetoresistive) и ОЗУ с изменяемой фазой состояния вещества (phase change RAM), способны сохранять данные при выключенном питании и не ограничены в количестве операционных циклов [1, 12]. Благодаря своим огромным преимуществам, например пониженному энергопотреблению в режиме ожидания и повышенной плотности, такие структуры памяти вскоре могут полностью заменить другие формы энергонезависимых ЗУ.
Сейчас существует острая необходимость в эффективных средствах тестирования и диагностики неисправностей в энергонезависимой памяти, поскольку недостаточно просто указать на исправность или неисправность того или иного вида памяти [3, 23]. В процессе производства ПЗУ, при анализе их неисправностей и соответствующей корректировке процесса изготовления возможность диагностировать причины появления неисправностей приобретает первоочередное значение. В частности, новые типы неисправностей должны быть точно идентифицированы и хорошо объяснены. С этим же связана и другая насущная задача — проверка исправности микросхемы, записывающей данные в ПЗУ. Таким образом, метод обнаружения и точность диагностирования неисправностей являются решающими факторами при локализации неисправностей массивов памяти. Такая диагностика может быть выполнена или непосредственно на чипе, или же в режиме off-line после копирования из него архивированных результатов встроенного тестирования.
До сравнительно недавнего времени основная стратегия диагностирования ПЗУ состояла в том, что пользователям поставлялся файл инициализации, описывающий содержимое ПЗУ. Последовательность инициализации может при этом быть любой и зависит от условий выполнения теста. В ходе процесса тестирования с помощью ВСТП содержимое ПЗУ считывается несколько раз (при этом используются различные адресные схемы) и сворачивается в сигнатуру, которая затем копируется в самом конце алгоритма тестирования. Несмотря на то, что объем данных, передаваемых в тестируемую память, сравнительно невелик, диагностические процедуры, используемые для тестирования ПЗУ, весьма громоздки. В некоторых современных методах диагностическая сигнатура копируется в наружный тестер через определенные промежутки времени (на основе методов двоичного поиска) таким образом, что всегда можно сократить процедуру тестирования, если обнаружено повреждение многоканального сигнатурного анализатора (MISR). Другие методы предусматривают откачку (копирование) содержимого всего ПЗУ при возникновении сбоя. Подобные методы позволяют обнаружить неисправности на шинах адреса и данных, однако все они сложны, занимают много времени и зачастую чрезмерно дорого стоят для реального применения. Так, например, для копирования содержимого всего ПЗУ необходимо применять ту или иную дополнительную аппаратуру. Кроме того, после каждой операции чтения ПЗУ процесс останавливается, что также заметно увеличивает время диагностики неисправностей.
Различие в чувствительности к разнообразным видам неисправностей привело к разработке ряда новых алгоритмов диагностирования памяти. Как правило, все эти алгоритмы предназначены для диагностирования ЗУ с произвольной выборкой (ЗУПВ) путем модификации контроллера ВСТП, как это выполнено в [5, 17], для проведения дополнительных тестов, предназначенных для локализации всех неисправных ячеек. В статье [14] приведена схема сжатия совокупности симптомов, требующая знания содержимого адресуемой памяти для выполнения накопления данных. Различные методы, приведенные в [2, 7, 9], являются, в сущности, процедурами подготовки к воспроизведению побитового отображения неисправностей, выполняемого в режиме off-line. Последний из упомянутых методов [16] предлагает для достижения аналогичных целей использовать гибкую логику диагностики для записи тестовых реакций синхронно с работой системы без прерываний со стороны контроллера ВСТП.
В настоящее время существуют несколько запатентованных схем диагностики ЗУ. Методы, описанные в [6, 22], предполагают использование специальных схем, предназначенных для свертки (сжатия) диагностических данных с высокой скоростью и последующего их скачивания в тестер. Аналогичным образом в схеме, описанной в [7, 8], производится свертка тестовых реакций памяти с помощью комбинаторной логики и их сканирование за пределами чипа. В статье [24] описывается схема свертки типа «синдром неисправности» (fault syndrome), применяемая для обнаружения реакций системы указывающих на наличие неисправности системы с помощью свертки координат. Аналогичные методики приведены в [11, 25]. В работе [21] описан метод, предлагающий динамическое переключение между режимами ВСТП и ВСД (встроенная самодиагностика, Built-In Self-Diagnosis, BISD), что позволяет обнаружить неправильную реакцию на некоторые тестовые векторы и кодировать их в определенные битовые последовательности.
В предлагаемой статье описана процедура тестирования, не требующая каких-либо значительных затрат, а также диагностическая схема, с помощью которой обеспечивается непрерывный сбор откликов схемы на подаваемые тестовые воздействия с целью точного обнаружения неисправных строк, столбцов и ячеек в ПЗУ [20]. В этом методе использован принцип разделения, предложенный первоначально в [18] для диагностики неисправностей на основе цепочек сканирования в среде ВСТП и далее расширенный в [4]. Предлагаемая схема разделяет строки и столбцы заданного массива ПЗУ и записывает результирующие сигнатуры, каждый раз сужая место возможного нахождения неисправности до тех пор, пока неисправные строки и столбцы не будут найдены. Такой подход не требует взаимодействия между ВСТП и автоматизированным тестовым оборудованием и, кроме того, не предполагает прерываний тестовой последовательности.
Архитектура схемы тестирования
Организация массива памяти
На рис. 1 показаны основные архитектурные особенности ПЗУ. Каждая строка состоит из М слов, каждое из которых имеет длину B бит. Биты в одном слове могут следовать один за другим или чередоваться, образуя сегменты, как показано на рис. 1. Декодеры обеспечивают доступ к соответствующим ячейкам памяти в быстром режиме адресации строки или быстром режиме адресации столбца (то есть когда номера строк меняются быстрее, чем номера столбцов, или наоборот). В таблице 1 приведены основные параметры памяти, которые мы будем использовать в последующих разделах этой статьи. Стоит отметить, что алгоритмы, описанные в статье, не накладывают каких-либо ограничений на схему адресации. Таким образом, массив памяти можно читать либо в порядке нарастания адресов, либо в порядке их убывания.
Таблица 1. Параметры массива ПЗУ
R | Число строк |
B | Длина слова данных (число битов) |
M | Число слов в строке (коэффициент мультипликации) |
C | Число столбцов (C = B×M) |
Сбор диагностических данных
Здесь предполагается, что в тестируемой памяти имеются постоянные адресно-независимые неисправности. На рис. 2 представлена архитектура структуры тестирования, необходимой для сбора диагностических данных из массивов ПЗУ. Кроме собственно контроллера ВСТП, такая структура тестирования содержит два селектора (строк и столбцов) и простую вентильную схему, позволяющую наблюдать за состояниями как строк, так и столбцов. Контроллер ВСТП непрерывно сканирует адреса ПЗУ, тогда как селекторы строки и столбца распознают, какие данные, переданные из строки или столбца памяти, на самом деле содержатся в сигнатурном регистре. В зависимости от цели теста сбор реакций системы происходит в одном из следующих режимов:
- В цепи выборки строк «лог. 0», а в цепи выборки столбцов «лог. 1»: слово в строке полностью доступно для чтения. Этот режим используется для диагностики строк и отдельных ячеек памяти.
- В цепи выборки строк «лог. 1», а в цепи выборки столбцов «лог. 0»: селектор строк блокирован, а селектор столбцов активен, что обеспечивает наблюдение за состояниями разрядов выбираемых столбцов.
- В цепи выборки строк «лог. 0» и в цепи выборки столбцов «лог. 0»: разрешена выборка как строк, так и столбцов, что приводит к возможности считывания содержимого ячеек, находящихся на пересечении выбранных строк и столбцов.
Процесс диагностики достаточно прост: путем последовательного считывания и анализа данных определяется сигнатура, соответствующая выбранным строке и столбцу, которая затем пересылается в автоматизированное тестовое оборудование (АТО) через дополнительный теневой регистр (shadow register). Если полученная сигнатура соответствует ожидаемому значению (исправная сигнатура), то утверждается, что выделенные строки или столбцы исправны. Время, необходимое для диагностирования, зависит от того, каким образом осуществляется выбор наблюдаемых строк и столбцов. В приведенной схеме используется расширенная версия детерминированного разделения, первоначально предложенного для диагностики с помощью сканирования [4]. Этот принцип гарантирует максимально быстрое обнаружение источников неисправности с разрешением на уровне узла массива. Подробная информация о процедуре разделения будет представлена далее.
Сигнатурный регистр
Сигнатурный регистр используется для сбора всех тестовых реакций, полученных от выбранных ячеек памяти. Регистр обнуляется в начале каждого запуска сканирования адресного пространства. Подобным же образом содержимое регистра копируется один раз в течение одного запуска. Для реализации сигнатурного регистра используется многовходовый кольцевой генератор [15] (МКГ, ring generator with multiple inputs, MIRG), вход которого соединен с выходом некоторой вентильной схемы. На рис. 3 показана так называемая «схема впрыскивания» (injector network), обрабатывающая увеличивающееся количество входных каналов. Стоит отметить, что подключение каждого входа к отдельной точке в схеме сжатия тестовых реакций позволяет обнаруживать и различать ошибки в различных входных каналах. Этот метод явно улучшает резолюцию диагностики, как это будет показано в следующих разделах статьи.
Детерминированное разделение
В принципе, выбор строк и столбцов, активизируемых за время одного диагностического тестового прогона, выполняется в соответствии с детерминированной схемой, набросок которой приведен в [4]. Набор строк или столбцов памяти разлагается в группу из 2n не связанных между собой разделов примерно одного размера, где n = [0,5log2v], а v — общее число слов или столбцов тестируемой памяти. В дальнейшем различные группы разделов формируются таким образом, чтобы каждый раздел данной группы имел не более одного общего элемента с каждым из разделов остальных групп. Такая методика гарантирует наиболее эффективное время отслеживания появления неисправных строк или столбцов. В самом деле, если массив имеет x неисправных элементов, то достаточно выполнить тестирование x+1 групп для однозначного определения неисправного элемента.
Пример 1
Рассмотрим массив памяти, состоящий из 16 строк. В таблице на рис. 4б показаны четыре группы, каждая из которых состоит из четырех уникальных секций. Предположим, что в строке 7 имеется неисправность. После получения четырех сигнатур в соответствии со схемой, заданной первой группой (0), выяснилось, что сигнатуры, представляющие разделы 0, 1 и 2, не содержат ошибок. Таким образом, строки, принадлежащие этим секциям, могут быть убраны из таблицы (нижняя таблица на рис. 4а). Так как сигнатуры, полученные путем обработки данных из строк 3, 7, 11 и 15 (раздел 3), содержат ошибки, эти строки становятся теперь подозреваемыми (отмечены на рис. 4а). Подозреваемые строки принадлежат к разным секциям в последующих группах, поэтому после прогона четырех тестов для группы 1 легко можно обнаружить строку, содержащую неисправность.
Рис. 4. Группы разбиения памяти из 16 строк: a) одиночная неисправная строка; б) три неисправные строки
Пример 2
Предположим теперь, что x = 3, то есть три строки (5, 10, 11) в том же массиве памяти неисправны. Как можно видеть на рис. 4б, после чтения x+1 = 4 групп секций строки можно однозначно определить, какие строки содержат неисправность. Как и в других схемах, диагностика ПЗУ может быть выполнена в режиме без адаптации, когда выбор количества тестов происходит до начала фактической диагностики, или в адаптивном режиме, когда учитываются результаты предыдущих прогонов. В первом случае планируется обнаружить некоторое предварительно установленное число x отказавших элементов. Не требуется какого-либо взаимодействия с тестером, поскольку достаточно собрать сигнатуры для x+1 секций группы. В рамках второго подхода, если текущее проверяемое количество подозрительных строк или столбцов больше не удается сузить, предполагается, что все они содержат неисправности, и тест тем самым завершается.
Выбор строк и столбцов
Выбор строк
В этом разделе представлены аппаратные решения, реализующие селекторы строк и столбцов. Начнем с описания общей структуры селектора строки, показанного на рис. 5. По сути, он состоит из четырех регистров. Суммирующие счетчики секции и группы, каждый из которых имеет размер n = [0,5log2R], служат для хранения индексов текущей секции и текущей группы соответственно. Можно сказать, что эти регистры расширяют регистр адреса строки, входящий в состав контроллера ВСТП (левая часть счетчика, изображенного на рис. 5). Cдвиговый регистр с линейными обратными связями (СРЛОС, Linear feedback shift register, LFSR), выполняющий функцию простого характеристического полинома, реализует так называемый дифрактор, обеспечивающий получение последовательных степеней элементов типа GF (2n), которые впоследствии используются для выборочного инвертирования данных, пересылаемых из регистра секции. Этот же регистр имеет возможность параллельной загрузки данных, если его вход не выбран. Регистр смещения представляет собой, в сущности, вычитающий счетчик, который инициируется каждый раз, когда его вход выбран.
В принципе, схема на рис. 5 реализует следующую формулу, используемую для обозначения членов r последовательных секций p в рамках данной группы g:
где S — это размер секции; p — число секций; (+) — это поразрядное сложение по модулю 2, а g ⊗ k — это состояние сдвигового регистра с линейными обратными связями (СРЛОС), доступное через k–1 шагов после его инициализации значением g. Если k = 0, то и g ⊗ k = 0. Нетрудно убедиться, что приведенное выше уравнение дает последовательные разбиения, показанные на рис. 4 для значений S = 4 и k = 0, 1, 2, 3 при условии, что последовательность состояний дифрактора следующая: 1→2→3→1. К примеру, для значений g = 2 и p = 1 получаем следующую систему уравнений:
По мере возрастания адреса строки выбор строк в секции, в группе и, наконец, во всем тесте осуществляется следующим образом. Счетчик смещения перезагружается периодически всякий раз, когда n (число младших двоичных разрядов регистра адреса строки) становится равным нулю (это обнаруживается левым логическим вентилем ИЛИ-НЕ на рис. 5). После загрузки значение счетчика уменьшается на единицу таким образом, что в итоге счетчик обнуляется после p(+)(g ⊗ k) циклов, что обнаруживается верхним логическим вентилем ИЛИ-НЕ на рис. 5.
Таким образом, показанный на рис. 5 выход схемы обеспечивает наблюдение за одной строкой в течение каждых S последовательных циклов. Как следует из уравнения (1), начальные значения счетчика (регистра) смещения получаются путем сложения фактического номера секции и значения текущего состояния дифрактора. Последний регистр инициализируется номером группы в начале прогона каждого теста, то есть когда сбрасывается адрес строки. Впоследствии дифрактор меняет свое состояние каждый раз, когда перезагружается регистр смещения. Поскольку период дифрактора, реализованного на основе СРЛОС, равен 2n–1, а регистр смещения перезагружается 2n раз, недостающее состояние «все нули» всегда генерируется в начале теста при помощи вентилей ИЛИ на выходах дифрактора.
Пример 3
В таблице 2 моделируется функция селектора строк памяти (рис. 4) для 16 строк, образующих 4 секции (n = 2). Последовательные записи в таблице 2 соответствуют содержимому регистров селектора при обработке секции № 2 из группы № 3. Выделенные жирным шрифтом цифры указывают на промежутки времени, когда дифрактор и регистр смещения подгружаются новыми значениями. Судя по таблице 2, дифрактор загружается в начале теста содержимым группы № 3 (112), а затем он изменяет свое состояние каждые 4 цикла, следуя траектории 1→2→3. В течение этих же циклов регистр смещения загружается значением, равным сумме содержимого секции № 2 (102) и предыдущего состояния дифрактора, за исключением первой загрузки, когда в регистр загружается только содержимое секции. После инициализации счетчик выполняет вычитания и достигает нуля на циклах 2, 5, 11 и 12, что приводит к сжатию содержимого строк памяти, имеющих адреса 2, 5, 11 и 12 соответственно.
Таблица 2. Моделирование селектора строк
Адрес строки | Секция | Группа | Дифрактор | Смещение | Сжатая строка |
0 | 10 | 11 |
11 |
10 |
0 |
1 | 10 | 11 | 11 | 01 | 0 |
2 | 10 | 11 | 11 | 00 | 1 |
3 | 10 | 11 | 11 | 11 | 0 |
4 | 10 | 11 | 01 |
01 |
0 |
5 | 10 | 11 | 01 | 00 | 1 |
6 | 10 | 11 | 01 | 11 | 0 |
7 | 10 | 11 | 01 | 10 | 0 |
8 | 10 | 11 | 10 |
11 |
0 |
9 | 10 | 11 | 10 | 10 | 0 |
10 | 10 | 11 | 10 | 01 | 0 |
11 | 10 | 11 | 10 | 00 | 1 |
12 | 10 | 11 | 11 |
00 |
1 |
13 | 10 | 11 | 11 | 11 | 0 |
14 | 10 | 11 | 11 | 10 | 0 |
15 | 10 | 11 | 11 | 01 | 0 |
Выбор столбцов
На рис. 6 показан селектор, используемый для детерминированного выбора искомых столбцов. Его архитектура похожа на архитектуру селектора строк, так как в обеих схемах использованы одни и те же принципы отбора. Основные отличия между схемами состоят в использовании встроенного самотестирования (ВСТ) регистра адреса столбца и новой схемы стробирования дифрактора. Кроме того, счетчик смещения здесь заменен комбинаторным декодером столбца, который позволяет выбрать один из B выходов декодера столбца (рис. 2). Следует также отметить, что дифрактор увеличивает каждый раз адрес столбца на единицу. Его содержимое складывается с содержимым секции, что дает в результате следующий адрес столбца в рамках того же алгоритма, который применялся для выбора строк.
Если размер В слова памяти равен М (количество слов в строке), то достаточно выбрать один из В столбцов в единицу времени, чтобы обеспечить покрытие всех столбцов в массиве памяти для одной секции группы. Однако, как правило, В > М. Это обстоятельство требует выбора более одного столбца для каждого слова в единицу времени, если для каждой секции разрабатывается отдельный тест. Число одновременно сжатых столбцов (t) может быть определено путем деления максимального числа столбцов в секции, равного 2n, на число М, равное количеству слов памяти в строке:
Важно отметить, что столбцы, сжатые параллельно, не могут быть обработаны с помощью одиночного селектора «t из B», так как в этом случае некоторые столбцы будут рассматриваться всегда вместе, тем самым исключается их эффективное разбиение. В таком случае декодер выходного столбца трансформируется в t < «1 из B» декодеров, которые загружаются данными из фазовращателей (ФВ), которые затем поступают в дифрактор, как показано на рис. 7.
Фазовращатели преобразуют данные на входе таким образом, что результирующие выходные значения распространяются через регулярные интервалы по траектории дифрактора. На рис. 8 приведен подобный сценарий для 3-разрядного дифрактора, управляющего тремя фазовращателями с помощью простого полинома x3+x+1. Допустим, что дифрактор инициализирован значением «1». Тогда фазовращатели ФВ1, ФВ2 и ФВ3 находятся в выходном состоянии своих траекторий, которые начинаются, соответственно, с величин 4, 6 и 5. При рассмотрении различных секций внутри групп дифрактор пересекает соответствующие части ее пространства состояний, тогда как фазовращатели вырабатывают соответствующие значения, обеспечивающие генерацию всех возможных 2n–1 комбинаций. Отсутствующие состояния «все нули» обеспечиваются логическими вентилями И. Структура фазовращателей описана в работе [19].
Пример 4
Предположим, строка памяти состоит из двух 8-разрядных «прослоенных» слов, как показано в верхней части рис. 9. Из уравнения (2) следует, что t = 4/2 = 2, поэтому для тестирования необходимы два «1 из 4» декодера столбца и один фазовращатель, подключенный к выборке битов декодера от b4 до b7. Таблица на рис. 9 показывает, каким образом столбцы выбраны для разделения на группу 1 (012) и группу 2 (102). Первые две строки этой таблицы содержат значения, сгенерированные дифрактором (он инициализирован номером группы 1) и фазовращателем для секции 0. Как можно видеть, независимо от начального значения дифрактора адрес «0» рассматривается первым на входе нулевого декодера столбца, благодаря тому, что на вентиль И поступает ноль.
Следующим номером, присвоенным декодеру столбца, является «2», что соответствует второму состоянию, которое принимает дифрактор. Эти два адреса в нулевом столбце декодера имеют такие параметры: столбец 0 из слова 0 и столбец 5, который, по сути, является столбцом 2 из слова 1. Кроме того, декодер столбца 1 получает состояния 3 и 1, вырабатываемые фазовращателем (см. соответствующие траектории дифрактора). Они облегчают выбор столбцов 14 и 11 соответственно. Что касается остальных секций группы 1, то на выходах вентилей И и фазовращателя возникают те же состояния, но в дальнейшем они меняются путем добавления номеров последовательных секций. Такой подход позволяет эффективно проводить отбор оставшихся столбцов. Выбор столбцов для следующего раздела групп осуществляется аналогичным образом, за исключением инициализации дифрактора. Траектория дифрактора и выбор столбцов для раздела группы 2 представлены на рис. 9.
Комбинированный выбор строк и столбцов
Для минимизации теста некоторые компоненты селекторов строк и столбцов можно использовать совместно. Схема, в которой осуществлен такой подход, приведена на рис. 10, где регистры секции и группы используются обоими селекторами. Поскольку приращение адреса столбца происходит раньше приращения адреса строки, массив памяти читается в режиме быстрой адресации столбца. Благодаря тому что не требуется взаимодействия между управлением сигналами, поступающими из регистров адреса столбцов и строк, схема позволяет выполнять чтение массива памяти также в режиме быстрой адресации строки, после обмена регистрами адреса строки и столбца. Кроме того, объединенный селектор строки и столбца разработан таким образом, что ни один из компонентов не требует частоты синхронизации выше, чем та, которая используется для приращения регистров адресов столбца или строки. В результате предлагаемая схема позволяет выполнять чтение памяти на ее рабочей частоте и, таким образом, обнаруживать неисправности, связанные с параметрами времени. И наконец, поскольку комбинированный селектор позволяет собирать одновременно сигнатуры строк и столбцов, такой подход позволяет сократить время диагностики на 50%. В этом режиме, однако, необходимо использовать два сигнатурных регистра.
Выбор в режиме «решетки»
Предположим, имеется (x+1) групп сигнатур. Схемы выбора, приведенные ранее, позволяют обнаружить x неисправных строк или х неисправных столбцов. Однако фактическая неисправность может включать в себя неисправности, возникшие в строках и столбцах одновременно. На рис. 11а показана неисправность, состоящая из единичной константной неисправности столбца и единичной константной неисправности строки. Черные точки обозначают неисправные ячейки памяти (здесь предполагается случайное распределение неисправностей). Обратите внимание, что некоторые ячейки в неисправных строке и столбце содержат такие же логические значения, как и неисправные ячейки. Если использовать для диагностики метод раздельного выбора строк и столбцов, такой тип неисправности повлияет на вычисление большинства сигнатур, поскольку ячейки, относящиеся к неисправному столбцу, делают почти все сигнатуры строки ошибочными, а ячейки в неисправной строке аналогичным образом сделают ошибочными почти все сигнатуры столбцов.
Накопление сигнатур в режиме так называемой решетки (trellis) обеспечивает решение этой проблемы путем одновременного разделения строк и столбцов. Таким образом, количество рассматриваемых ячеек существенно снижается, тем самым увеличивается шанс для записи исправных сигнатур, что позволяет эффективно отсеять неисправные строки и столбцы. На рис. 11б,в приведены примеры уплотнения «решетки» в случае, когда имеется единственная неисправная строка и единственный неисправный столбец. Анализируются только ячейки, расположенные на пересечениях строк и столбцов. Таким образом, полученные сигнатуры, по-видимому, не содержат ошибок, как показано на рис. 11б. Следовательно, выбранные строки и столбцы можно объявить исправными. Когда выбранные ячейки пересекаются с неисправными строкой или столбцом, можно ожидать появления по крайней мере одной ошибки, как это показано на рис. 11в.
При выборе по схеме «решетки» существует определенная внутренняя корреляция между строками и столбцами. В частности, использование одного и того же характеристического полинома для обоих дифракторов, изображенных на рис. 10, и инициализация их одним и тем же номером группы позволяют предсказать изменения, вызванные этой зависимостью: множество пар строка-столбец обрываются (оканчиваются) всегда в одних и тех же разделах. В результате этого алгоритм диагностики не может отличить исправные строки и столбцы от дефектных, так как они постоянно объединяются в пары схемой выбора. В левой части таблицы 3 приведено возможное воздействие этого эффекта на качество диагностики. Эти результаты были получены для массива памяти, состоящего из 1024 строк и 1024 столбцов. Селекторы строк и столбцов содержат идентичные дифракторы, в которых использован простой полином x5+x2+1. Каждая запись в таблице 3 содержит число пар строка-столбец (из общего числа 10242), которые повторяются k раз в одних и тех же разделах для произвольно выбранных 3-й, 4-й, 5-й и 32-й групп раздела. Как показано в таблице 3, 1024 строки и столбца всегда попадают в один и тот же раздел независимо от количества групп разделов. Тщательный анализ этих результатов показал, что благодаря именно такому механизму выбора каждая строка постоянно связана с определенным столбцом.
Таблица 3. Корреляция в режиме «решетки»
k | Дифрактор столбца инициализирован номером группы | Дифрактор столбца инициализирован номером группы — 1 | ||||||
0 | 952 320 | 920 576 | 888 832 | 31 744 | 953 312 | 922 560 | 892 800 | 297 600 |
1 | 95 232 | 126 976 | 158 720 | 1 015 808 | 92 256 | 122 016 | 149 792 | 827 744 |
2 | 0 | 0 | 0 | 0 | 2976 | 2976 | 3968 | 180 544 |
3 | 1024 | 0 | 0 | 0 | 32 | 922 | 1984 | 31 744 |
4 | 1024 | 0 | 0 | 32 | 0 | 4960 | ||
5 | 1024 | 0 | 32 | 3968 | ||||
8 | 0 | 992 | ||||||
16 | 0 | 992 | ||||||
32 | 1024 | 32 |
Представляется, однако, что простой n-битный инкрементирующий счетчик (модуль с меткой “+1” на рис. 10), размещенный между регистром группы и одним из дифракторов, изменяет эту базовую связь строка-столбец таким образом, что результирующая корреляция между строкой и столбцом существенно уменьшается. Это подтверждается экспериментальными данными, приведенными в правой части таблицы 3. Здесь мы полагаем, что дифрактор столбца, приведенный на рис. 10, инициализируется номером группы, который будет увеличиваться на 1. Как можно видеть, усовершенствованная методика выбора, очевидно, уменьшает количество пар строка-столбец, которые всегда оканчиваются в одних и тех же разделах. Интересно, что количество таких пар равно количеству разделов в группе (32). Это происходит благодаря нулевому состоянию, которое вносят логические вентили И в начале каждого из разделов.
Неисправности одиночных ячеек памяти
Методы отбора, описанные в предыдущем разделе, позволяют локализовать неисправные участки памяти с точностью до одной строки или одного столбца. Это также дает возможность на следующем этапе диагностики определить местонахождение одной неисправной ячейки внутри строки или столбца. В этом разделе кратко излагаются основные моменты такого подхода.
Поскольку уплотнитель (сигнатурный регистр) является линейной схемой, можно использовать так называемую сигнатуру ошибки E вместо реально полученной сигнатуры A, которая может быть получена путем сложения по модулю 2 так называемой эталонной сигнатуры G с сигнатурой A, то есть E = А(+)G. С точки зрения «неисправной сигнатуры» уплотнитель находится в состоянии «все нули» (рис. 12) до внесения (инжекции) некоторой неисправности, после чего уплотнитель принимает определенное состояние x, задаваемое его схемой инжекции. Далее состояние уплотнителя продвигается на d шагов вперед и достигает состояния у. Обычно d соответствует числу шагов, необходимых для выполнения прогона теста памяти. Значение d, которое определяет местонахождение неисправности, является расстоянием между состояниями x и y, записанными в компараторе.
Значение d, а следовательно, местонахождение неисправности, могут быть найдены с помощью дискретного логарифмического подсчета, описанного в статьях [10, 16]. Имея сдвиговый регистр с линейными обратными связями (LFSR) и зная его конкретное состояние, инженер может на основе этого метода определить количество синхроциклов, необходимых для достижения этого состояния при условии, что уплотнитель изначально установлен в состояние 0…001. Поскольку участок внесения неисправностей (вход уплотнителя) неизвестен, величина d должна быть вычислена В раз по следующей рекуррентной формуле:
где dy и dx являются, соответственно, расстояниями между состоянием 0…001 и состояниями x и y. Напомним, что расстояние x зависит от того, где введена неисправность, так же как и dx. Только значения d < M×R считаются приемлемым решением. Следует отметить, что после нахождения решения соответствующее состояние x в однозначной форме идентифицирует сегмент памяти, из которого поступила неисправность.
Информация, касающаяся неисправных строк (или столбцов), полученная так, как это описано в предыдущих разделах, используется в дальнейшем для повышения точности диагностики. Зная расстояние d, можно легко определить строку R, к которой принадлежит подозреваемая ячейка памяти. Если величина R не соответствует номеру строки, на которую указывает механизм отбора, алгоритм поиска продолжает выбирать следующие сегменты памяти. Такой метод позволяет уменьшить размеры самого уплотнителя. Фактически цикл уплотнителя может быть уменьшен до масштабов отдельного сегмента памяти. Возможный «переход на новую строку» компенсируется здесь информацией о неисправной строке, которая используется для устранения несогласованных результатов.
Дополнительные схемные структуры
Дополнительные схемные структуры, необходимые для построения рассмотренных логических схем, можно оценить числом D, равным количеству необходимых D-триггеров, и эквивалентной площадью 2-входовых вентилей И-НЕ (G2). Обе эти величины приведены в соответствующих строках таблицы 4, где представлены результаты для четырех массивов памяти различной емкости и архитектуры. Количество вентилей и триггеров вычислено при соблюдении следующих условий:
- Двувходовый вентиль «исключающее ИЛИ» является эквивалентным по площади четырем двувходовым вентилям И-НЕ, тогда как инвертор занимает 0,6 площади двувходовых вентилей И-НЕ.
- Для построения фазовращателя в среднем требуется 2n схем «исключающее ИЛИ».
Таблица 4. Аппаратные затраты
Объем памяти, кбайт | 8 | 64 | 128 | 2048 |
Архитектура R×(M×B) | 256×(4×64) | 1024×(4×128) | 1024×(32×32) | 4096×(32×128) |
n | 4 | 5 | 5 | 6 |
τ | 4 | 8 | 1 | 2 |
Селекторы | 20 DFF | 25 DFF | 25 DFF | 30 DFF |
520 G2 | 1468 G2 | 336 G2 | 761 G2 | |
Уплотнитель логической схемы | 16 DFF | 16 DFF | 16 DFF | 16 DFF |
1050 G2 | 2087 G2 | 532 G2 | 2087 G2 | |
Всего | 36 DFF | 41 DFF | 41 DFF | 46 DFF |
1571 G2 | 3555 G2 | 868 G2 | 2848 G2 |
Описанные здесь средства тестирования требуют совсем небольшого количества последовательной логики. Число вентилей зависит от размерности слов памяти, а эта размерность, в свою очередь, влияет на количество входов сигнатурного регистра и размер схемы инжекции, состоящей из вентилей «исключающее ИЛИ». Кроме того, число вентилей определяет значение коэффициента мультипликации М, поскольку соотношение величин М и В определяет число C столбцов, рассматриваемых в единицу времени, и, значит, необходимое количество фазовращателей и вентилей типа «исключающее ИЛИ». Это замечание может быть легко проверено путем сравнения столбцов, соответствующих памяти с размерами 64 и 128 кбайт. В каждом из этих случаев общее количество вентилей и триггеров, используемых в схеме тестирования, невелико, что делает предлагаемую схему весьма привлекательной с точки зрения дополнительных схемных структур.
Результаты экспериментов
В этом разделе приведены результаты экспериментов, подтверждающие работоспособность описанной выше диагностической схемы. В качестве основного критерия был принят уровень диагностического покрытия. Первая группа экспериментов предназначена для проверки соотношения между размерами уплотнителя и уровнем диагностического покрытия при поставленной задаче — поиск одиночных неисправных ячеек памяти. В таблице 5 приведены значения диагностического покрытия в процентах как функция размеров памяти и уплотнителя. Каждая запись в таблице 5 обозначает процент неисправностей, которые были правильно диагностированы из 100 000 случайно сгенерированных неисправностей одиночных ячеек памяти. Для того чтобы увеличить статистическую достоверность экспериментов, схему инжекции уплотнителя постоянно меняли после введения каждой тысячи неисправностей.
Таблица 5. Степень диагностического покрытия (в%) как функция размера уплотнителя
Размер сегмента | Размер памяти, кбайт | Размер уплотнителя | |||
20 | 24 | 28 | 32 | ||
B = 32 | |||||
256 | 8 | 98,49 | 99,22 | 99,43 | 99,74 |
1К | 32 | 97,43 | 98,5 | 98,86 | 99,44 |
4К | 128 | 96,67 | 97,9 | 98,41 | 99,13 |
16К | 512 | 96,19 | 97,57 | 98,15 | 98,97 |
64К | 2048 | 95,81 | 97,42 | 98,04 | 98,88 |
B = 128 | |||||
64 | 8 | 99,01 | 99,49 | 99,83 | 99,85 |
256 | 32 | 96,76 | 98,59 | 99,27 | 99,47 |
1К | 128 | 92,45 | 97,01 | 97,95 | 98,75 |
4К | 512 | 88,02 | 94,79 | 96,2 | 97,67 |
16К | 2048 | 85,27 | 93,01 | 94,6 | 96,77 |
Необходимо отметить, что в качестве отправной точки для отслеживания неисправных ячеек рассматривались только сигнатуры неисправных строк. Этот эксперимент является анализом худшего случая, поскольку за основу принято логарифмическое распределение неисправностей. Обычно результаты могут быть гораздо лучше, если имеются также сигнатуры неисправных столбцов. Как следует из таблицы 5, размер сигнатурного регистра критичен для достижения требуемого диагностического разрешения и покрытия неисправностей. Интересно отметить значительное уменьшение диагностического покрытия при сравнении с памятью того же объема, но имеющей другое число сегментов. По-видимому, увеличение количества сегментов отрицательно влияет на уровень диагностического покрытия. К счастью, этот фактор постепенно уменьшается при возрастании размеров самого уплотнителя.
Нам представляется также, что метод дискретных логарифмов отлично работает, даже если размер памяти превышает период уплотнителя. В качестве примера рассмотрим массив памяти в 2 Мбайт, включающий свыше 16 800 ячеек памяти, которые теоретически могут содержать 16 800 неисправностей. Тем не менее 32-входовый 20-битный уплотнитель с периодом 1 048 575 обеспечивает почти 96% покрытия неисправностей. Это обеспечивается за счет того, что алгоритм диагностики рассматривает в качестве целевых только те ячейки памяти, которые принадлежат к указанным (выбранным) неисправным строкам.
Схемы, предложенные в статье, были проверены на памяти объемом 128 кбайт и 2 Мбайт, работающей с 16-битным и 32-битным уплотнителями соответственно. Эта экспериментальная группа памяти предназначалась для определения полного диагностического покрытия неисправностей, типичных для полупроводниковой памяти и перечисленных в первом столбце таблицы 6. Каждая запись в этой таблице состоит из двух чисел. Первое из них — это процент неисправностей данного типа, которые были правильно идентифицированы. Второе число означает процент тестовых случаев, в которых по крайней мере строки или столбцы, содержащие реальную неисправность, были частью решения задачи. Очевидно, что если первое число равно 100%, то второе число будет иметь то же значение. Второе число опущено в таблице, если полное тестовое покрытие было достигнуто во всех тестах подряд. Обратите внимание, что все данные, представленные в таблице, были получены путем инжекции 10 000 и 5000 случайно сгенерированных неисправностей для памяти размером 128 кбайт и 2 Мбайт соответственно.
Таблица 6. Степень диагностического покрытия (в%) для двух массивов памяти
Объем памяти | 128 кбайт | 2 Мбайт | ||||
Архитектура | 1024×(32×32) | 4096×(32×128) | ||||
Размер уплотнителя | 16 | 32 | ||||
Группы разделов | 3 | 4 | 5 | 3 | 4 | 5 |
Количество тестовых прогонов | 96 | 128 | 160 | 192 | 256 | 320 |
Одиночная ячейка памяти | 100 | 100 | ||||
2 ячейки памяти | 100 | 100 | ||||
3 ячейки памяти | 70,48 | 100 | 100 | 83,08 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночная строка | 100 | 100 | ||||
2 строки | 100 | 100 | ||||
3 строки | 83,77 | 99,98 | 99,98 | 91,16 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночный столбец | 100 | 1000 | ||||
2 столбца | 99,98 | 99,98 | 99,98 | 100 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
3 столбца | 83,98 | 99,99 | 99,99 | 91,42 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночная строка и одиночная ячейка | 99,99 | 99,99 | 99,99 | 98,02 | 98,02 | 98,02 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночная строка и 2 одиночные ячейки | 84,42 | 99,98 | 99,98 | 87,16 | 95,26 | 95,26 |
100 | 100 | 100 | 100 | 100 | 100 | |
2 строки и одиночная ячейка | 83,85 | 99,99 | 99,99 | 89,46 | 97,26 | 97,26 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночный столбец и одиночная ячейка | 99,99 | 99,99 | 99,99 | 100 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночный столбец и 2 ячейки | 84,31 | 100 | 100 | 91,36 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
2 столбца и одиночная ячейка | 84,11 | 100 | 100 | 91,46 | 100 | 100 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночная строка и одиночный столбец |
77,55 | 87,91 | 93,83 | 88,18 | 93,66 | 95,68 |
100 | 100 | 100 | 100 | 100 | 100 | |
2 строки и одиночный столбец |
35,93 | 73,23 | 88,91 | 60,7 | 87,24 | 95,24 |
100 | 100 | 100 | 100 | 100 | 100 | |
Одиночная строка и 2 столбца |
35,81 | 73,25 | 89,18 | 59,16 | 87,14 | 95,04 |
100 | 100 | 100 | 100 | 100 | 100 | |
2 строки и 2 столбца | 7,43 | 54,01 | 83,81 | 24,24 | 74,38 | 92,42 |
100 | 100 | 100 | 100 | 100 | 100 |
Как можно заметить, в таблице 6 представлена некая ожидаемая зависимость между уровнем диагностики и временем прогона тестовой программы (измеряется в прогонах памяти — см. заголовок третьей строки). В частности, возрастание числа прогонов памяти увеличивает также уровень диагностического покрытия. Наилучшие результаты наблюдаются в наиболее крупных группах разделов, для них в основном достигается полное покрытие. Предлагаемая схема всегда дает решение, которое включает в себя все столбцы и строки, содержащие неисправные ячейки памяти, что подтверждается частым появлением числа 100% в таблице 6. Анализ остальных результатов тестирования показывает, что некоторые диагностические сбои могут быть обусловлены одной из следующих причин:
- Недостаточное количество разделов групп (главным образом столбцы, обозначенные в таблице 6 номером 3). Этот недостаток может быть устранен за счет сбора большего числа сигнатур (естественно, время теста при этом удлиняется).
- Низкий уровень диагностического разрешения, обусловленный небольшим объемом уплотнителя. Проблема проявляется при рассмотрении неисправностей одиночных ячеек. Диагностический алгоритм вычисляет неверное местонахождение неисправностей, которые находятся в тех же самых неисправных строке/столбце, что и фактически неисправные ячейки. Как было показано ранее, имея уплотнитель большего объема, эту проблему можно легко устранить.
- Корреляция между строками и столбцами, которая соблюдается главным образом при использовании метода «решетки». Для более крупных объемов памяти этот эффект незначителен. Например, в памяти объемом 128 кбайт имеется 32 из 1024 (~3,1%) взаимосвязанных строк и столбцов, в то время как в массиве памяти 2 Мбайт этот показатель равен 1,6% (64 из 4096).
Заключение
В статье рассмотрена новая схема диагностики неисправностей для встроенных ПЗУ. Такая схема позволяет сократить количество диагностических данных, подлежащих сканированию в ходе тестирования ПЗУ, при сохранении минимального количества данных, необходимых для восстановления данных о неисправности, а также минимизирует время выгрузки данных.
Предлагаемый подход позволяет осуществлять непрерывный сбор и обработку тестовых реакций в реальном режиме работы системы. Это достигается с помощью недорогих встроенных механизмов выбора, которые позволяют точно и эффективно идентифицировать неисправности строк, столбцов и отдельных ячеек памяти. В схеме использованы специальные селекторы строк и столбцов, а также фазовращатели, управляющие перемещениями в адресном пространстве памяти. Использование предлагаемой логики выбора позволяет сократить время теста без какого-либо ущерба для качества диагностики.
Результаты экспериментов, проведенных на нескольких массивах памяти при генерации случайных неисправностей, наглядно подтверждают высокую точность предложенной диагностики, обусловленной применением сигнатурных регистров, а предлагаемая логика выбора обеспечивает получение желаемого диагностического разрешения.
Литература
- Adams R. D. High performance memory testing: design principles, fault modeling and self-test. New York: Kluwer Academic Publishers, 2003.
- Appello D., Tancorre V., Bernardi P., Grosso M., Rebaudengo M., Sonza Reorda M. Embedded memory diagnosis: an industrial workflow. Proc. ITC, paper 26.2, 2006.
- Barbagallo S., Burri A., Medina D., Camurati P., Prinetto P., Sonza Reorda M. An experimental comparison of different approaches to ROM BIST. Proc. European Computer Conf., 1991.
- Bayraktaroglu I., Orailoglu A. The construction of optimal deterministic partitioning in scan-based BIST fault diagnosis: mathematical foundations and cost-effective implementations // IEEE Trans. Comput., vol. 54. Jan. 2005.
- Bergfeld T. J., Niggemeyer D., Rudnick E. M. Diagnostic testing of embedded memories using BIST. Proc. DATE, 2000.
- Boehler T., Lehmann G. Using data compression for faster testing of embedded memory. US Patent No. 6,950,971. Sept. 27, 2005.
- Chen J. T., Rajski J. Method and apparatus for diagnosing memory using self-testing circuits. US Patent No. 6,421,794. July 16, 2002.
- Chen J. T., Rajski J., Khare J., Kebichi O., Maly W. Enabling embedded memory diagnosis via test response compression. Proc. VTS, 2001.
- Chen J. T., Khare J., Walker K., Shaikh S., Rajski J., Maly W. Test response compression and bitmap encoding for embedded memories in manufacturing process monitoring. Proc. ITC, 2001.
- Clark D. W., Weng L.-J. Maximal and near-maximal shift register sequences: efficient event counters and easy discrete logarithms // IEEE Trans. Comput., vol. 43. May 1994.
- Du X., Mukherjee N., Cheng W.-T., Reddy S. M. Full-speed field-programmable memory BIST architecture. Proc. ITC, paper 45.3, 2005.
- Gizopoulos D. [ed.]. Advances in electronic testing — challenges and methodologies. Dordrecht; Springer, 2006.
- International Technology Roadmap for Semiconductors, 2007 Edition: http://www.itrs.net
- Li J.-F., Wu C.-W. Memory fault diagnosis by syndrome compression. Proc. DATE, 2001.
- Mrugalski G., Rajski J., Tyszer J. Ring generators — new devices for embedded deterministic test // IEEE Trans. CAD, vol. 23. Sept. 2004.
- Mukherjee N., Pogiel A., Rajski J., Tyszer J. High throughput diagnosis via compression of failure data in embedded memory BIST. Proc. ITC, paper 3.1, 2008.
- Niggemeyer D., Rudnick E. M. Automatic generation of diagnostic memory tests based on fault decomposition and output tracing // IEEE Trans. Comput., vol. 53. Sept. 2004.
- Rajski J., Tyszer J. Diagnosis of scan cells in BIST environment // IEEE Trans. Comput., vol. 48. July 1999.
- Rajski J., Tamarapalli N., Tyszer J. Automated synthesis of phase shifters for built-in self-test applications // IEEE Trans. CAD, vol. 19. Oct. 2000.
- Rajski J., Mukherjee N., Tyszer J., Pogiel A. Fault diagnosis in memory BIST environment. US Patent Application, 2009.
- Selva C. et al. Built-in self diagnosis device for a random access memory and method of diagnosing a random access memory. US Patent Application No. 20060028891. Feb. 9, 2006.
- Volrath J., White K., Eubanks M. On-chip circuits for high speed memory testing with a slow memory tester. US Patent No. 6,404,250. June 11, 2002.
- Wang L.-T., Wu C.-W., Wen X. VLSI Test Principles and Architectures. Design for Testability. New York: Morgan Kaufmann Publishers, 2006.
- Wu C.-W. et al. Method and apparatus of build-in self-diagnosis and repair in a memory with syndrome identification. US Patent Application No. 20060064618. March 23, 2006.
- Yamauchi H. Semiconductor memory device for build-in fault diagnosis. US Patent Application No. 20050262422. Nov. 24, 2005.