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.
- El fallo se define en términos de flip-flops (células de exploración):
- Patrón de prueba Un vector estimula múltiples nodos simultáneamente.
- 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.

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.
- Hacer que cada celda experimente tanto 0 como 1 múltiples veces
- realice tanto transiciones 0→1 como 1→0
- 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:
- Inicializar todas las celdas a 0 (
↑(w0)) - En la vuelta
- leer si es 0 y escribir (
r0) - 1. (
w1)
- leer si es 0 y escribir (
- Al volver a subir,
- lee si es 1 y escribe (
r1) - escribe 0 (
w0)
- lee si es 1 y escribe (
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:
- Escribir 0 en cada celda. (Inicializar)
- con la dirección arriba
- leer si es 0 (
r0) - escribir 1 (
w1)
- leer si es 0 (
- arriba otra vez. y lea (
r0) - escriba 1 (
w1) - Desplácese de nuevo hacia abajo y lea
- 1 y escriba (
r1) - 0 (
w0)
- 1 y escriba (
- Por último, recorre todo el conjunto una última vez y lee
- 0 (
r0)
- 0 (
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-)
.