DFT: Мартовский алгоритм? #Чекерборд #1

DFT: Мартовский алгоритм? #Чекерборд #1
Photo by KC Shum on Unsplash

Когда вы впервые приходите в лабораторию DFT после работы в области логического проектирования, наступает момент, когда вы больше всего растеряны.
Сканирование, ATPG, паттерн "застрял-ат", паттерн перехода и т. д. знакомы, но как только вы переходите на сторону памяти, вы вдруг начинаете говорить об алгоритме Марча, MBIST, модели ошибок.

И даже старшие инженеры DFT иногда путаются в этом:

"Какие именно неисправности покрывает March C-? Какие у него недостатки?"
"Почему он должен дважды подниматься и опускаться?"

Цель этой статьи проста.

  • Для людей, которые уже знакомы с DFT/ATPG, но тесты памяти неудобны, я хочу объяснить, что такое алгоритм Марча и почему он работает именно в таком порядке,
  • Чем он принципиально отличается от паттерна логических тестов
  • И какую роль играет шаблон шахматной доски, который часто можно услышать на практике

1. Тест на логику против теста на память: почему паттерны отличаются?"

1.1 Логическая сторона: мир Scan + ATPG

Типичный логический блок тестируется следующим образом.

  • Вставка сканирующей цепочки
  • ATPG-инструмента в флип-флопы в месте неисправности stuck-at, Создание вектора тестирования, нацеленного на неисправность перехода
  • На оборудовании ATE или плате
    • ввод значений во входной порт + сканирование внутрь (сдвиг сканирования)
    • захват
    • наблюдение значений с помощью сканирования наружу

Есть три ключевых момента.

  1. Неисправность определяется в терминах флип-флопов (сканирующих ячеек):
  2. Тест-шаблон Вектор стимулирует множество узлов одновременно.
  3. Активация неисправности → распространение → наблюдение протекает по комбинаторному логическому пути.

Таким образом, философия логического тестирования такова:

"Охватите как можно больше неисправностей с помощью одного паттерна."

То, что мы делаем в ATPG, является скорее математической/алгоритмической реализацией этой философии:


1.2 Сторона памяти: структура совершенно другая

Напротив, структура SRAM типа памяти выглядит следующим образом:

  • Декодер адреса: активирует словесную линию выбранного адреса
  • Пара битов + ячейка: читает или записывает данные выбранной ячейки
  • обычно одновременно можно обращаться только к одной адресной линии

Эта структура обусловливает некоторые важные особенности тестов памяти.

(1) Гранулярность доступа

  • Логика: тестирование нескольких флип-флопов/узлов одновременно
  • Память: Обычно "по одному адресу за раз" доступ

(2) Сама модель отказов отличается

  • Логика: gate/net-centric
  • Память:
    • Неисправность в самой ячейке
    • Взаимодействие между ячейками
    • Ненормальность декодера адреса
    • Чувствительность к окружающим моделям ячеек

Если даже посмотреть на репрезентативную модель неисправности памяти, то она уже отличается.

  • Неисправность сопряжения (CF)
  • Неисправность дешифратора адреса (AF)
  • Неисправность, чувствительная к шаблону соседства (NPSF)
  • Неисправность, разрушающая чтение/запись, и т. д.

(3) Зависимость от последовательности

Некоторые неисправности проявляются только в следующей последовательности, например.

Запись 1 в эту ячейку → запись 0 в соседнюю ячейку → повторное чтение исходной ячейки для ее разрушения.

Иными словами, важно, "в каком порядке и когда соседние ячейки имеют какие данные".

Поэтому память гораздо лучше подходит для алгоритма, который повторяет последовательность чтения/записи, проходя все ячейки в определенном порядке, а не для вектора ATPG, открывающего сразу несколько узлов.

В этом и заключается мартовский алгоритм, буквально, идея марша по адресному пространству в одной файловой строке.


2. March Algorithm의 핵심 아이디어

2.1 Определение: проверка при "маршировании" по адресам

Алгоритм March можно кратко описать в одной строке.

Алгоритм тестирования, который "марширует" по всем адресам в памяти в определенном направлении (↑, ↓ или оба), выполняя предопределенную последовательность операций чтения/записи по каждому адресу

Обычно нотация выглядит следующим образом

  • : возрастающая последовательность адресации
  • : убывающая последовательность адресации
  • : возрастающая или убывающая, независимая от направления (каждый адрес один раз)
  • wx : записать значение x (w0, w1)
  • rx : прочитать & проверить значение x (r0, r1)

Например:

↑ (w0) : записать 0 в каждую ячейку с адреса 0 по MAX
↑ (r0, w1): снова от адреса 0 до MAX, читаем, если 0 (r0) и записываем 1

Такая последовательность "направление + операция" называется элементом марша.
Последовательность из нескольких элементов называется тестом марша.

Jin-Fu Li Advanced Reliable Systems (ARES) Lab. Dept. электротехники Национального центрального университета Jhongli, Taiwan

2.2 "А нельзя ли просто w0→r0, w1→r1 дважды?"

На всю память

w0→r0 → w1→r1

Это все, что нам нужно проверить?"

Проблема заключается в модели ошибок памяти:

  • Некоторые ошибки выявляются только переходом 0→1, некоторые ошибки выявляются по состоянию соседней ячейки.
  • Некоторые неисправности хорошо проявляются при обходе адреса в направлении вверх, но вызывают проблемы в направлении вниз.
    • Например, некоторые пути декодера, структуры сопряжения и т. д.

Таким образом, алгоритм March обеспечивает следующее.

  1. Заставьте каждую ячейку пережить 0 и 1 несколько раз
  2. выполнить переходы 0→1 и 1→0
  3. пройти как вверх, так и вниз и изменить относительный порядок со своими соседями.

Существует множество алгоритмов, которые могут сделать это за один проход и при этом сохранить время тестирования на уровне O(N).

  • Одноклеточные неисправности
  • 2-клеточные неисправности сопряжения
  • неисправности декодера адреса

Так какие же алгоритмы марта популярны на практике?

3. Если мы вспомним только два: March X & March C-

3.1 марта X - простейший базовый в образовательных целях

Март X - один из самых базовых мартовских алгоритмов. Обычно он записывается так:

1) ↑ (w0)
2) ↑ (r0, w1)
3) ↑ (r1, w0)

Что это значит:

  1. Инициализируем все ячейки в 0 (↑(w0))
  2. На обратном пути
    • читаем, если это 0, и записываем (r0)
    • 1. (w1)
  3. После очередного подъема
    • прочитайте, если это 1, и запишите (r1)
    • запишите 0 (w0)

Вот и все:

  • Каждая ячейка хранит 0 и 1 хотя бы один раз
  • Каждый переход 0→1 и 1→0 выполняется
  • Основные Stuck-at fault и Transition fault более или менее обнаружимы

Ограничения очевидны.

  • нет направленного обхода
  • Неисправность сопряжения, Неисправность дешифратора адреса охват ограничен.

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


3.2 March C- - наиболее распространенный на практике стандарт

March C- - это стандарт, который чаще всего встречается в MBIST на практике.

В действительности разработчики SRAM разработали гораздо больше алгоритмов, чем этот, и существует множество различных названий March, но значительное число семейств являются производными от March C-.

March C- обычно определяется следующим образом:

1) ↕ (w0)
2) ↑ (r0, w1)
3) ↑ (r1, w0)
4) ↓ (r0, w1)
5) ↓ (r1, w0)
6) ↕ (r0)

Здесь может означать "каждый адрес один раз", независимо от направления.

Разберем это еще немного подробнее:

  1. Запишем 0 в каждую ячейку. (Инициализация)
  2. с адресом up
    • прочитать, если он равен 0 (r0)
    • записать 1 (w1)
  3. снова вверх. и читаем (r0)
  4. записываем 1 (w1)
  5. Снова прокручиваем вниз и читаем
    • 1 и записываем (r1)
    • 0 (w0)
  6. И наконец, пролистайте весь набор в последний раз и прочитайте
    • 0 (r0)

В этом одном наборе содержится все следующее

  • Каждая ячейка испытывает 0 и 1 много раз
  • повторяет 0→1, 1→0 переход
  • выполняет обход как вверх, так и вниз
  • умышленно создает ситуации, когда состояние соседних ячеек меняется сразу после чтения или когда остаются следы предыдущего образца

Поэтому March C- может достаточно хорошо обнаружить следующее.

  • Неисправность засорения (SAF)
  • Неисправность перехода (TF)
  • Наиболее Неисправность дешифратора адреса (AF)
  • Типичная 2.Ячейка Ошибка сопряжения (CF)

В реальном BIST памяти на уровне продукта комбинация "March C- (или производный вариант)" + дополнительный фон является практически стандартной.


4. March X vs March C- с точки зрения модели неисправностей

Чтобы разобраться в этом, давайте сравним эти два варианта с точки зрения модели неисправностей.Практический итог прост:

  • Базовые концепции, объясненные в лаборатории → March X
  • Реальный BIST памяти на уровне продукта → почти March C- (или вариант, производный от C-)

.

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support