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

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

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-)

.

글 참여 도구

Share Join discussion
How did this article help? Used only as a private quality signal.

Private note

Spot an error or need clarification?

Send a private correction, question, or topic request directly to the editor.

VLSI Korea

Send a private note

Your message will be delivered to [email protected].

How should we receive it?

Anonymous mode omits your name and email. The delivery provider may still process technical data such as an IP address, so absolute anonymity cannot be guaranteed.

ENGINEER DISCUSSION

What are you seeing in practice?

Add evidence, a counterpoint, or experience from the field. Reply notifications keep the thread moving.

VLSI KOREA BRIEFING

Keep the signal. Lose the noise.

Semiconductor engineering and industry intelligence from a practicing engineer. Free, with no paywall.

FOR BUSINESS

Need this level of technical content?

Technical content, sponsored deep-dives and private team briefings—with clear scope and pricing.

Work with VLSI Korea →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
MY VLSI

내 읽기 보관함

저장한 글과 읽던 글을 한곳에서 이어보세요.