Está en la página 1de 12

FIRE: un algoritmo de identificación de redundancia combinacional independiente

de fallas
FIRE es un nuevo algoritmo independiente de fallas para la identificación combinada de la redundancia.
El algoritmo se basa en un concepto simple de que una falla que requiere un conflicto como condición
necesaria para su detección es indetectable y, por lo tanto, redundante. FIRE no utiliza la búsqueda
exhaustiva basada en backtracking realizada por algoritmos automáticos de generación de pruebas
orientados a fallas, e identifica fallas redundantes sin ninguna búsqueda. Nuestros resultados en
circuitos de referencia y circuitos reales indican que encontramos una gran cantidad de redundancias
(aproximadamente el 80% de las redundancias combinadas en circuitos de referencia), mucho más
rápido que un enfoque basado en la generación de pruebas para la identificación de redundancias. Sin
embargo, no se garantiza que FIRE identifique todas las redundancias en un circuito.
Índice de términos: identificación de redundancia, generación automática de pruebas, síntesis lógica.

Introducción
Un algoritmo de generación de prueba automática (ATG) pasa una gran parte de su tiempo tratando
con fallas indetectables. Una falla es solo detectable cuando el generador de prueba no genera una
prueba para detectarla, después de agotar el espacio de búsqueda. Cualquier algoritmo ATG basado en
una búsqueda exhaustiva puede identificar todas las fallas no detectables, si se les da suficiente tiempo.
Los límites prácticos impuestos para mantener el tiempo de cómputo dentro de límites razonables
pueden dar como resultado el proceso de búsqueda de fallas de destino "difíciles". La mayoría de las
fallas abandonadas son indetectables. Por lo tanto, el generador de prueba exhibe su comportamiento
en caso de fallas no detectables.
En un circuito combinacional, una redundancia siempre causa una falla atascada indetectable. Dicho
circuito se puede simplificar eliminando las asociaciones redundantes de la región con el fallo no
detectable (redundante). Además de complicar el ATG. Los despidos tienen muchos otros efectos
perjudiciales. La presencia de un fallo redundante hace que muchas de las pruebas de detección queden
incompletas [1]. Las redundancias aumentan el área del chip, el consumo de energía y, a menudo, los
retrasos de propagación en el circuito. Las redundancias también pueden reducir innecesariamente el
rendimiento del proceso de fabricación de circuitos integrados [2]. Por ejemplo, muchas fallas
combinadas redundantes se pueden detectar con la prueba I-DDQ. Aunque el circuito permanece
completamente operativo en presencia de una falla redundante, la prueba I-DDQ rechazará ese circuito
defectuoso y dará como resultado una pérdida de rendimiento. Otro problema es que la presencia de
fallas abandonadas puede impedir alcanzar la cobertura de fallas deseada. La identificación de la
rentabilidad (RID) con ATG es indirecta y es un subproducto de la generación de pruebas. En contraste,
una técnica de RID directo encuentra redundancias sin utilizar el proceso de búsqueda exhaustiva de
ATG. Las técnicas RID directas se pueden clasificar como estáticas o dinámicas. Las técnicas RID
estáticas funcionan como preprocesamiento para ATG, mientras que las técnicas RID dinámicas
funcionan durante ATG. Estas técnicas directas de bajo costo pueden reducir significativamente el
tiempo de CPU utilizado en ATG.

Técnicas de RID estáticas basadas en un análisis explícito de reconvergentes. Se han propuesto


estructuras de fanout en [3] y [4]. Estos métodos analizan cada puerta reconvergente de cada vástago
para descubrir el control. Implicaciones de valor que llegan a los dominadores. Por el contrario, el
análisis Nuestro algoritmo es mucho más simple, y los dominadores y las puertas reconvergentes se
analizan solo de manera implícita. La mayoría de los métodos RID indirectos [5] - [10] intentan acelerar
ATG utilizando varias técnicas dinámicas y de preprocesamiento. Más recientemente, otros
generadores de pruebas combinacionales mejorados utilizan poderosos procedimientos de implicación
[11] o formulaciones de satisfacción booleana [12]. Sin embargo, todos estos enfoques están orientados
a la falla y requieren una búsqueda de bifurcaciones para lograr RlD como un subproducto. Una vez que
se elimina una región redundante asociada con una falla redundante, se pueden introducir nuevas
redundancias en el circuito. En un trabajo anterior [13], propusimos una técnica RID dinámica para
identificar un subconjunto de estas redundancias recién creadas. Esta técnica se basó en analizar
combinaciones de valores que se vuelven ilegales como resultado de la eliminación y se usó para evitar
ejecuciones repetidas de ATG y simulación de fallas. Describimos un método general para encontrar
fallas para las cuales una combinación de valores dada (en un conjunto de líneas) es una condición
necesaria para la detección.

En este documento, extendemos este método para RID estático. Algunos resultados de este trabajo se
informaron en [14] y [15]. Nuestro algoritmo independiente de fallas para la identificación de la
redundancia (F.I.R.E) asume los circuitos combinacionales con puertas AND, NAND, OR, NOR y NOT
como primitivas. FIRE identifica fallas redundantes para las cuales es necesario un conflicto en una sola
línea en el circuito para su detección. Este enfoque es radicalmente diferente de cualquier enfoque
basado en ATG para RID que identifica una falla como redundante, si todas las formas posibles de
detectar esa falla terminan en conflictos. En contraste, nuestro enfoque comienza con un posible
conflicto (que siempre es la causa raíz de la indetectabilidad combinatoria) y encuentra fallas para las
cuales ese conflicto es necesario para la detección. Sus principales ventajas son que RID se puede lograr
sin ninguna búsqueda y que se pueden identificar varios fallos redundantes mediante el análisis del
mismo conflicto. F.I.R.E tiene complejidad de tiempo polinomial. Por lo tanto, no se garantiza la
identificación de todas las redundancias en un circuito, ya que el problema RID es NP-completo [16].

FIRE se puede utilizar como un preprocesador para un programa ATG, lo que puede evitar la detección
de fallas identificadas como redundantes y, por lo tanto, ahorrar el gran esfuerzo computacional
asociado con ellas. La identificación de redundancias puede proporcionar información útil para los
diseñadores, ayudándoles a localizar errores de diseño o encontrar formas de simplificar el circuito.
RID también es muy útil en síntesis, ya que proporciona la base para la eliminación de redundancia. El
resto del artículo está organizado de la siguiente manera. La sección II revisa nuestro trabajo anterior
en RlD. La sección III describe nuestro nuevo algoritmo para RID estático. La Sección IV presenta
nuestros resultados y la Sección V concluye el documento.

11. RID UTILIZANDO COMBINACIONES ILEGALES DE VALORES Esta sección revisa nuestra técnica
anterior para identificar fallas redundantes para las cuales es necesaria una combinación ilegal de
valores (en un conjunto de líneas en el circuito) para la detección. Suponga que {X = a, Y = b, Z = c} es
una combinación ilegal (imposible) de valores en el circuito libre de fallas. Las fallas para las cuales esta
combinación de valores es necesaria para la detección son indetectables y, por lo tanto, redundantes.
Descomponemos el problema de encontrar tales fallas, encontrando las fallas para las cuales cada
condición es necesaria individualmente para la detección. Sean Sx, Sy y Sz los conjuntos de fallas que
requieren X = a, Y = b, y Z = c, respectivamente, para la detección. Entonces las faltas que requieren
X = a e Y = b y Z = c para la detección están en el conjunto Sxyz = Sx Ո Sy Ո Sz. La falla s en Sx se vuelve
indetectable cuando X no puede asumir valor a (o cuando X es incontrolable para valor a). Para
encontrar estos fallos, utilizamos una versión mejorada del análisis de incontrolabilidad e
inobservabilidad introducido en [17]. En este análisis, ¬0 (I¬) denota el estado de una línea que no se
puede controlar para el valor 0 (1). Tenga en cuenta que esta falta de control es condicional y se
produce solo cuando X no puede tener un valor a. Por ejemplo, para calcular el conjunto Sx, el El
algoritmo se propaga X = ¬a y determina las fallas que se convierten indetectable si X no puede tener
valor a; es decir, X = a es una condición necesaria para la detección de estas fallas.

La figura 1 ilustra las reglas de propagación de los indicadores de descontrol. La incontrolableidad


puede propagarse hacia adelante y hacia atrás, como lo muestran las flechas. Por ejemplo, la salida de
una puerta NAND es 0¬ si al menos una entrada es 1 ¬ y es 1 ¬ si todas sus entradas son 0 ¬. Similar Las
reglas se aplican a otros tipos de puertas. La propagación de la incontrolabilidad puede hacer que
algunas líneas dejen de ser observables. Si una entrada de puerta no se puede establecer en el valor de
no control de la puerta, todos los demás Las entradas se vuelven inobservables. Por ejemplo, en la Fig.
1, a = 1¬ implica esa b es inobservable (las líneas no observables están marcadas con un "*"). Esto se
debe a que a = 1 es necesario para observar un valor en b. El estado de inobservabilidad se propaga
desde una salida de puerta hacia atrás a todas sus entradas; en la Fig. 1, b son marcas inobservables c
yd inobservables también. El significado de estas implicaciones es que a = 1 es necesario para observar
los efectos de falla de b, c y d. Cuando todas las ramas de fanout (FOB) de un vástago se marcan como
no observables, usamos el siguiente lema para decidir si el vástago también se puede marcar como no
observable.
Lema 1: Un vástago s con todos sus FOB marcados como no observables también puede marcarse como
no observable si para cada FOB f de s, hay
existe al menos un conjunto de líneas {L, f} de modo que se cumplan las siguientes condiciones:
1) f no es observable debido a los indicadores de descontrol en cada línea en {L, f}; y
2) cada línea en {L, f} es inalcanzable desde s.
Prueba: Utilizamos la Fig. 2 para la prueba. Supongamos que un valor v¬ de una línea L implica a = 1¬ y
b = 0¬, y que a y b son inalcanzables desde s. a = 1¬ hace que f 1 no sea observable y b = 0¬ hace que f 2
no sea observable. Para observar la raíz s, al menos una de {a = 1, b = 0}
debe ser alcanzado (Tanto a como b son inalcanzables desde s, y un efecto de falla de s no puede
propagarse en ninguno de ellos). Esto es posible si L = v. Por lo tanto, L = v es necesario para la
detección de s. En general, se puede observar un vástago incluso si ninguno de sus FOB es.
El siguiente ejemplo ilustra cómo un vástago de este tipo no satisface las condiciones del Lema 1.
Ejemplo 1: Considere la puerta AND en la Fig. 3. Suponga que a = 1¬
que causa a1 = a2 = b = 1¬, a1 = 1 es necesario para observar a2
y a2 = 1 es necesario observar a1. Sin embargo, ninguno de estos es necesario para observar a. El lema
1 no está satisfecho porque tanto a1 como a2 son accesibles desde a.
Al determinar líneas incontrolables e inobservables, podemos
También identifica las fallas que se vuelven indetectables. Estas son las fallas que no se pueden activar
(s-a-0 en 1¬ líneas y s-a-1 en 0¬ líneas) y
las fallas que no se pueden propagar (ambas fallas en líneas no observables). Las condiciones para las
que identificamos fallas indetectables que no se pueden activar son obvias. Sin embargo, la
identificación de fallas no detectables en líneas no observables requiere la siguiente justificación. Los
requisitos para observar los efectos de falla pueden estar en el circuito defectuoso o libre de fallas.
Considere, por ejemplo, la compuerta AND en la Fig. 4. Para observar un efecto de falla 0/1 (valor libre
de falla / valor defectuoso) en a en una salida primaria (PO), a 1 debe justificarse en b en la falla
circuito. Sin embargo, para observar un efecto de falla de 1/0 en a, se debe justificar un 1 en
b en el circuito libre de fallos. Si b tenía un 1¬, nuestras reglas de inobservabilidad
la propagación afirma que es necesario un 1/1 en b para observar ambos efectos de falla en a. Esto es
cierto si cualquier vector que justifique un 1 en b (para observar un efecto de falla en a), ya sea en el
circuito libre de fallas o en el defectuoso, impulsará un 1/1 en b. Esta condición se invalidará solo si
varios efectos de falla llegan a las entradas de esta puerta. El lema 1, de hecho, asegura pesimista que
esta situación no ocurra.
Nos referimos al proceso de propagación incontrolable y no observable para determinar fallas
indetectables como implicación. En resumen, el procedimiento para encontrar las fallas redundantes
causadas por una combinación ilegal en {L1 = v 1, L2 = v2,. . .} es

1) Por cada Li; = vi ;, implican Li; = vi¬; para determinar todas las líneas que se vuelven incontrolables o
inobservables. Sea Si el conjunto de las faltas correspondientes. (Tenga en cuenta que las implicaciones
se hacen por separado para cada i.)
2) Las fallas redundantes están en el conjunto S = niSi. Este es un procedimiento general para
encontrar fallas para las cuales una combinación de valores dada es una condición necesaria para la
detección. Si la combinación es ilegal, entonces las fallas encontradas son redundantes. Ejemplo 2:
Considere los dos subcircuitos que se muestran en la Fig. 5. Suponga que la función del subcircuito
CKT1 excluye la combinación de valores a = 1, b = 0 y c = 1. Las implicaciones correspondientes se
resumen en la Tabla I. (A La falla s-a-v en una línea L se representa como Lv, y usamos un conjunto
colapsado de fallas basado en la equivalencia funcional. Las fallas en la serie Sa, por ejemplo, son
aquellas que requieren a = 1 como condición necesaria Para su detección. Tenga en cuenta que cuando
c = 1¬, tanto a1 como a2 son inobservables y, por lo tanto, a tampoco es observable, porque c es
inalcanzable desde a y c = 1 es necesario para observar a. (La información de que e es un dominador
para a se calcula implícitamente.) Por lo tanto, Sa n Sb n Sc = {d1, a2o}, que identifica d s-a-1 y a2 s-a-0
como indetectables. Se puede verificar que a = 1, b = 0, y c = 1 es una condición necesaria para la
detección de estas faltas.

III. UNA EXTENSIÓN DE NOVELA PARA EL RID ESTÁTICO


La sección anterior describió un procedimiento para identificar fallas redundantes al procesar una
combinación ilegal de valores en un conjunto de líneas, {Li = v 1, L2 = v2 ,. . ., Ln = vn} · La nueva
extensión que proponemos.
Aquí es para procesar valores en conflicto en la misma línea, L, considerando L = 0 y L = 1 como un caso
especial de una combinación ilegal. En principio, el análisis podría realizarse para cada señal en el
circuito. Los conflictos solo pueden ocurrir en presencia de estructuras de ventilador de recorvente, y
los cables de señal donde ocurren los conflictos son los vástagos del ventilador. Los siguientes ejemplos
ilustran cómo las fallas redundantes se pueden identificar procesando conflictos en vástagos.

Ejemplo 3: Considere el circuito en la Fig. 6. Procesamos un conflicto en el vástago c al propagar c = 0¬ y


c = 1¬ y determinar las fallas que requieren c = 0 yc = 1, respectivamente, como condiciones necesarias
para la detección . Las implicaciones resultantes se resumen en la Tabla II.
Las fallas redundantes identificadas son {i0, f0, q0, b0, d0, a1}.
En general, una falla puede ser redundante debido a un conflicto en al menos una raíz de un grupo de
tallos. La detección de tal falla no requiere un conflicto en ningún vástago individual como condición
necesaria, y la falla no será identificada por el análisis anterior. Nuestra observación es que tales
conflictos a menudo se mapean como conflictos en entradas reconvergentes de puertas reconvergentes.
Ejemplo 4: Considere el circuito en la Fig. 7 [3] y la falla f s-a-0. Claramente, la activación de esta falla
requiere que c = d = a 1 = b1 = a = b = 1. También, para propagar el efecto de falla de f. e tiene que ser 0,
lo que requiere que a o b tenga un valor 0. Así f
s -a -0 requiere un conflicto en a o en b y procesar un
o b individualmente para conflictos no encontrará este fallo como redundante.
Sin embargo, como se resume en la Tabla III, procesar un conflicto en la línea f
(una entrada reconvergente de una compuerta reconvergente común a ambos vástagos) identifica f s-a-
0 como redundante.

Los ejemplos anteriores muestran que todo el análisis para determinar fallas redundantes es
independiente de la falla y el análisis de un solo conflicto puede identificar varias fallas redundantes.
FI.RE se describe en la Fig. 8. Aunque, en general, los conflictos de procesamiento en las entradas
reconvergentes de las puertas reconvergentes, además de los vástagos del ventilador, pueden
encontrar fallas más redundantes, los conflictos del proceso FI.RE solo en los vástagos del ventilador.
Esto se deduce de nuestra observación empírica de que el procesamiento de conflictos solo en los
vástagos encuentra la mayoría de las redundancias en el circuito y ahorra un Mucho tiempo de
computación. Todos los resultados reportados en la Sección IV fueron
Se obtiene procesando solo los conflictos derivados.

Una nota sobre la complejidad del tiempo de F.IRE


Sea n el número de líneas en el circuito. FIRE analiza todos los tallos, cuyo número es una fracción de n.
El peor de los casos para FI-RE se produciría cuando las implicaciones de descontrol y
La inobservabilidad se propaga por todo el circuito. Las condiciones para marcar la inobservabilidad
del vástago (Lema 1) se verifican solo cuando todos los FOB de un vástago se marcan como
inobservables. Esta situación es bastante rara. Por lo tanto, al ignorar los cálculos necesarios para
verificar las condiciones del Lema 1, la complejidad del caso más desfavorable de FI.RE es O (n ^ 2). Sin
embargo, en la práctica, las implicaciones se propagan sólo a través de
Un pequeño subcircuito que rodea el tallo analizado. Además, el tamaño de este subcircuito permanece
prácticamente igual que n aumenta. Por lo tanto, la situación del peor de los casos nunca ocurre y, en la
práctica, FI.RE identifica redundancias en el tiempo lineal; esto es muy importante,
Teniendo en cuenta que el problema RID es NP-completo [16]. Sin embargo, no se garantiza que FI.RE
encuentre todas las redundancias en el circuito. Los resultados experimentales reportados en la
siguiente sección atestiguan la eficiencia del algoritmo.

IV. RESULTADOS
FIRE se implementó en C en un prototipo de programa. Para comparar FIRE con un enfoque orientado a
fallas para RID, utilizamos el paquete de simulación de fallas / generación de pruebas LTG [6]. Las fallas
probadas como redundantes por FI.RE se pasaron como objetivos a LTG con un límite de retroceso de

100. LTG también tiene la ventaja de las técnicas dinámicas RID [18]. Es cierto que en una ejecución
libre, LTG identificaría, en general, más redundancias que FIRE. Sin embargo, el propósito de estos
experimentos es testificar cuánto tiempo ahorraría LTG al no apuntar a las fallas que el FIRE demostró
ser redundantes. La Tabla IV muestra la comparación para los circuitos de referencia combinacional
ISCAS85 [19] y para las versiones de pantalla completa de los circuitos de referencia secuencial
ISCAS89 [20]. (Estos resultados son para un conjunto colapsado de fallas). Mostramos solo los circuitos
donde FI.RE identificó las redundancias. #Rojo. Representa el número de despidos identificados. Los
tiempos de CPU están en segundos para un SUN sparc2. #Abo. representa el número de objetivos
abortados por LTG. La relación de aceleración representa (tiempo LTG) / (tiempo FI.RE). Para casi
todos los circuitos, FI.RE funcionó mucho mejor que LTG. Para S35932, FI.RE encontró 3984 fallas
redundantes en 236 s. LTG encontré que todos ellos eran redundantes en 2502 s. Por lo tanto, en este
caso, FI.RE es aproximadamente 11 veces más rápido que LTG. Además, para S9234, LTG no pudo
resolver todos los fallos de destino identificados como redundantes por FI.RE.

La tabla V muestra los resultados obtenidos para algunos circuitos reales. Gates, FF's, PI's y PO's se
refieren respectivamente al número de puertas, flip-flops, entradas primarias y salidas primarias. FI.RE
funcionó mucho mejor que LTG para todos los circuitos. Se logró una relación de aceleración de hasta
37 para estos circuitos.
La Tabla VI muestra el porcentaje de redundancias identificadas por FI.RE en los circuitos de referencia.
Como TRAN [12] es un generador de pruebas combinacionales de vanguardia que informa todas las
redundancias de falla única en los circuitos de referencia, lo usamos para nuestras comparaciones. Los
tiempos de CPU TRAN también son para un SUN sparc2 e incluyen tiempos para la generación de
pruebas aleatorias, algoritmo de cierre transitivo y simulación de fallas. Tenga en cuenta que TRAN
puede encontrar más redundancias a costa de más tiempo de CPU. En algunos casos (como S35932),
FI.RE hizo un trabajo completo de encontrar todos los despidos. Sin embargo, en algunos otros casos
(por ejemplo, S1238), FI.RE no funcionó tan bien. Creemos que las razones de tal comportamiento son:
i) Nuestro procedimiento de implicación no está completo; ii) podría haber fallas redundantes que no
requieren un solo conflicto como condición necesaria para la detección, y iii) el Lema 1 para marcar la
inobservabilidad en un vástago es pesimista y proporciona solo una condición suficiente. También
mostramos el porcentaje de tiempo de CPU FI.RE del tiempo total de CPU utilizado por TRAN para
identificar estas redundancias. Por ejemplo, en S38417, FI.RE identificó el 60% de las redundancias
combinadas en el 0.9% del tiempo total utilizado por TRAN para identificar todas las redundancias.
FI.RE encontró 5876 (aproximadamente el 80%) del total de 7313 fallas redundantes en estos circuitos.
En resumen, FI.RE identificó un rango de 8.3 a 100% de las fallas redundantes identificadas por TRAN y
los tiempos de CPU FI.RE oscilaron entre 0.9 y 66.7% de los tiempos de CPU de TRAN. Tenga en cuenta
que en todos los casos en que el tiempo de FUEGO fue más del 15% del tiempo de TRAN, el tiempo de
FUEGO fue inferior a 12 s. Los resultados en la Tabla VI indican que el FIRE puede ser un preprocesador
útil incluso para los generadores de prueba de vanguardia como TRAN.
V. CONCLUSIO
Este documento ha presentado FI.RE, un nuevo algoritmo de identificación de redundancia
combinatoria independiente de fallas. FIRE identifica las fallas para las cuales son necesarios los
conflictos en los vástagos de fanout para la detección. El proceso se basa en implicaciones lógicas, a
diferencia de la búsqueda exhaustiva realizada por los algoritmos ATG. Al procesar un solo conflicto,
FI.RE puede identificar varias fallas redundantes que requerirían una orientación separada por un
enfoque basado en ATG.
Nuestros resultados indican una aceleración de hasta aproximadamente 37 veces en comparación con
un algoritmo ATG convencional orientado a fallas que se enfocó solo en las fallas identificadas por
FI.RE. Aunque no se garantiza que FIRE identifique todas las redundancias en un circuito, sí identificó el
80% de las fallas redundantes en los circuitos de referencia. Por lo tanto, FI.RE podría utilizarse como
un preprocesador rápido para ATG y para obtener ahorros significativos en los cálculos. Dado que FI.RE
se basa en implicaciones lógicas, se espera que cualquier procedimiento mejorado para calcular las
asignaciones de valores globales [11], [12] mejore el rendimiento de FI.RE.

Los procedimientos de síntesis de lógica para la eliminación de la redundancia consumen mucho


tiempo si se basan en ATG para RID, debido a que muchas fallas tienen que dirigirse repetidamente.
FI.RE puede proporcionar ventajas significativas sobre ATG en esta aplicación, ya que el uso repetido de
FI.RE para RID es mucho más eficiente que el uso repetido de ATG. Si bien la combinación ATG es un
problema en el que los algoritmos actuales de última generación pueden manejar de manera eficiente
los circuitos VLSI, no se puede decir lo mismo sobre el problema ATG secuencial mucho más complejo,
que puede requerir tiempos de ejecución extremadamente largos. Las extensiones recientes de las
técnicas presentadas en este documento a circuitos secuenciales produjeron algoritmos eficientes para
identificar fallas secuenciales no probables y redundantes [15], [21] - [23] hasta varios órdenes de
magnitud más rápido que un generador convencional de pruebas secuenciales. RECONOCIMIENTO Los
autores agradecen a V. D. Agrawal, W. T. Cheng, D. E. Long, y D. T. Miller para discusiones y comentarios
útiles. También agradecen a los revisores anónimos por sus útiles sugerencias. El apoyo proporcionado
por S. Davidson, A. Dunlop, J. Dussault, H. Nham y S. Wu hicieron posible este trabajo y se lo
agradecemos.

También podría gustarte