DFT: March Algorithm? #Checkerboard #1

DFT: March Algorithm? #Checkerboard #1
Photo by Diocese of Spokane on Unsplash

Cuando llegas al laboratorio de DFT por primera vez después de trabajar en diseño lógico, hay un punto en el que te sientes más confuso.
Scan, ATPG, patrón stuck-at, patrón de transición, etc. son familiares, pero en el momento en que pasas al lado de la memoria, de repente hablas de algoritmo March, MBIST, modelo de fallos.

Y esto a veces confunde incluso a los ingenieros senior de DFT:

"¿Qué fallos cubre March C- exactamente?"
"¿Cuáles son sus inconvenientes?"
"¿Por qué tiene que subir y bajar dos veces?"

El objetivo de este artículo es sencillo.

  • Para la gente que ya está familiarizada con DFT/ATPG, pero las pruebas de memoria son incómodas, quiero explicar qué es el algoritmo de March y por qué funciona en ese orden,
  • Qué lo hace fundamentalmente diferente del patrón de pruebas lógicas
  • Y qué papel juega el patrón de tablero de comprobación, que se oye a menudo en la práctica

1.

1.1 Lógica: El mundo de Scan + ATPG

Un bloque lógico típico se prueba así.

  • Insertar una cadena de exploración
  • herramienta ATPG en los flip-flops en el fallo stuck-at, Crear un vector de prueba dirigido al fallo de transición
  • En el equipo ATE o placa
  • inyectar valores en el puerto de entrada + scan-in (desplazamiento de scan)
  • captura
  • observar valores con scan-out

Hay tres puntos clave.

  1. El fallo se define en términos de flip-flops (células de exploración):
  2. Patrón de prueba Un vector estimula múltiples nodos simultáneamente.
  3. La activación → propagación → observación del fallo fluye a través de una vía lógica combinatoria.

Así que la filosofía de las pruebas lógicas es:

"Cubrir tantos fallos como sea posible con un patrón."

Lo que hacemos en ATPG es más bien una implementación matemática/algorítmica de esta filosofía:


1.-Lado de la memoria.2 Lado de la memoria: La estructura es completamente diferente

Por el contrario, la estructura de SRAM como memoria es la siguiente:

  • Descodificador de dirección: activa la línea de palabra de la dirección seleccionada
  • Par de línea de palabra + celda: lee o escribe los datos de la celda seleccionada
  • Normalmente sólo se puede acceder a una línea de dirección a la vez

Esta estructura conduce a algunas características importantes de las pruebas de memoria.

(1) Granularidad de acceso

  • Lógica: Prueba múltiples flip-flops / nodos a la vez
  • Memoria: Normalmente "una dirección cada vez" acceso

(2) El modelo de fallo en sí es diferente

  • Lógica: gate/net-centric
  • Memoria:
    • Fallo en la propia célula
    • Inter-cell interaction
    • Address decoder abnormality
    • Sensitive to surrounding cell patterns

Incluso si nos fijamos en un modelo de fallo de memoria representativo, ya es diferente.

  • Fallo de acoplamiento (CF)
  • Fallo del decodificador de direcciones (AF)
  • Fallo sensible al patrón de vecindad (NPSF)
  • Fallo destructivo de lectura/escritura, etc

(3) Dependencia de secuencia

Algunos fallos sólo se revelan en la siguiente secuencia, por ejemplo.

Escribir un 1 en esta celda → escribir un 0 en una celda vecina → volver a leer la celda original para romperla.

En otras palabras, "en qué orden, y cuándo las celdas vecinas tienen qué datos" es importante.

Así que la memoria se adapta mucho mejor a un algoritmo que repite una secuencia de lectura/escritura, pasando por todas las celdas en algún orden, en lugar de un vector ATPG que salta múltiples nodos a la vez.

Ese es el algoritmo de marcha, literalmente, la idea de marchar a través del espacio de direcciones en una sola línea de archivo.


2. Algoritmo de marcha. March Algorithm의 핵심 아이디어

2.1 Definición: Prueba mientras "marcha" a través de direcciones

El algoritmo March se puede resumir en una línea.

Un algoritmo de prueba que "marcha" a través de todas las direcciones de la memoria en una dirección determinada (↑, ↓, o ambas), realizando una secuencia predefinida de operaciones de lectura/escritura en cada dirección

La notación suele tener este aspecto

  • : secuencia de direccionamiento creciente
  • : secuencia de direccionamiento decreciente
  • : creciente o decreciente, independiente de la dirección (cada dirección una vez)
  • wx : escribe el valor x (w0,w1)
  • rx: lee & comprueba el valor x (r0,r1)

Por ejemplo:

↑ (w0) : escribe 0 en cada celda desde la dirección 0 hasta MAX.
↑ (r0, w1): de nuevo de la dirección 0 a MAX, leer si 0 (r0) y escribir 1.

Esta "secuencia de dirección + operación" se denomina elemento March.
Una secuencia de múltiples elementos se denomina prueba March.

Jin-Fu Li Laboratorio de Sistemas Avanzados Fiables (ARES) Dpto. of Electrical Engineering National Central University Jhongli, Taiwan

2.2 "¿No puede ser simplemente w0→r0, w1→r1 dos veces?"

Para toda la memoria

w0→r0 → w1→r1

¿Es esto todo lo que necesitamos probar?"

El problema es el modelo de fallos de memoria:

  • Algunos fallos sólo se revelan por la transición 0→1, algunos fallos se revelan por el estado de la celda vecina.
  • Algunos fallos están bien en el recorrido de direcciones en dirección ascendente pero causan problemas en la dirección descendente.
    • Por ejemplo, ciertas rutas de decodificadores, estructuras de acoplamiento, etc.

Así que el algoritmo de March impone lo siguiente.

  1. Hacer que cada celda experimente tanto 0 como 1 múltiples veces
  2. realice tanto transiciones 0→1 como 1→0
  3. pasar por ambas direcciones arriba y abajo y cambiar su ordenación relativa con sus vecinas.

Hay muchos algoritmos en uso que hacen esto en una sola pasada y aún así mantienen el tiempo de prueba en O(N).

  • Fallos de una celda
  • Fallos de acoplamiento de dos celdas
  • Fallos del decodificador de direcciones

Entonces, ¿qué algoritmos de March son populares en la práctica?

3. Si recordamos sólo dos: March X & March C-

3.1 Marzo X - El básico más sencillo con fines didácticos

El marzo X es uno de los algoritmos de marzo más básicos. Se suele escribir así:

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

Qué significa esto:

  1. Inicializar todas las celdas a 0 (↑(w0))
  2. En la vuelta
    • leer si es 0 y escribir (r0)
    • 1. (w1)
  3. Al volver a subir,
    • lee si es 1 y escribe (r1)
    • escribe 0 (w0)

Eso es:

  • Cada celda almacena 0 y 1 al menos una vez
  • Cada transición 0→1 y 1→0 se realiza
  • Los fallos Stuck-at y Transition fault básicos son más o menos detectables

Las limitaciones son obvias.

  • no directional traversal
  • Fallos de acoplamiento, Fallos de decodificador de dirección tienen una cobertura limitada.

Como resultado, se suele utilizar para ilustración conceptual, entrenamiento y SRAMs muy simples, mientras que los MBISTs reales utilizan algoritmos más potentes.


3.2 March C- - El estándar más común en la práctica

March C- es el que aparece con más frecuencia en los MBIST en la práctica.

En realidad, los diseñadores de SRAM han diseñado muchos más algoritmos que éste, y existen muchos nombres de March diferentes, pero un número significativo son familias derivadas de March C-.

March C- se define normalmente como sigue:

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

Aquí, puede entenderse como "cada dirección una vez", independientemente de la dirección.

Para desglosarlo un poco más:

  1. Escribir 0 en cada celda. (Inicializar)
  2. con la dirección arriba
    • leer si es 0 (r0)
    • escribir 1 (w1)
  3. arriba otra vez. y lea (r0)
  4. escriba 1 (w1)
  5. Desplácese de nuevo hacia abajo y lea
    • 1 y escriba (r1)
    • 0 (w0)
  6. Por último, recorre todo el conjunto una última vez y lee
    • 0 (r0)

Este conjunto contiene todo lo siguiente

  • Cada celda experimenta 0 y 1 múltiples veces
  • repite la transición 0→1, 1→0 transición
  • realiza tanto recorridos ascendentes como descendentes
  • crea deliberadamente situaciones en las que el estado de las celdas vecinas cambia inmediatamente después de la lectura, o en las que permanecen trazas del patrón anterior

Es por ello que la Marcha C- puede detectar bastante bien lo siguiente.

  • Error de atascamiento (SAF)
  • Error de transición (TF)
  • Mayor Error de decodificador de dirección (AF)
  • Un típico 2.célula Fallo de acoplamiento (CF)

En el BIST de memoria a nivel de producto real, la combinación "Marcha C- (o variante derivada)" + fondo adicional es casi la predeterminada.


4. March X vs March C- desde la perspectiva del modelo de fallos

Para hacernos una idea, comparemos los dos desde la perspectiva del modelo de fallos.)

El resumen práctico es sencillo:

  • Conceptos básicos explicados en el laboratorio → March X
  • BIST de memoria a nivel de producto en el mundo real → casi March C- (o una variante derivada de 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