Peligros estáticos frente a dinámicos en lógica combinacional
Cómo los retardos desiguales de los caminos crean peligros estáticos, dinámicos y funcionales; cómo los términos de consenso eliminan los peligros estáticos de dos niveles; y cómo verificar la implementación física.
En resumen: un peligro estático es un posible pulso en una salida que debería permanecer constante durante una transición de entrada; un peligro dinámico produce varias transiciones de salida cuando solo se esperaba una. Para una red SOP de dos niveles bajo la hipótesis de cambio de una sola entrada, cubre cada par adyacente de celdas con valor 1 mediante un implicante común; el término de consenso añadido conserva la función booleana a la vez que cierra la transferencia peligrosa. Esa demostración no cubre automáticamente cambios de varias entradas, mapeo multinivel, realimentación asíncrona ni síntesis que elimine la lógica redundante.
Una tabla de verdad especifica los valores estables de entrada y salida. No especifica qué sucede mientras las señales viajan por puertas con distintos retardos. Por tanto, dos implementaciones de la misma función booleana pueden coincidir en todas las filas estables y comportarse de forma diferente durante unos nanosegundos después de un cambio de entrada.
Ese comportamiento transitorio importa cuando alcanza un control asíncrono, una entrada de reloj o de reinicio, un pin externo, un elemento de estado sensible al nivel o un flanco de muestreo.
Peligro, pulso espurio y carrera
Existe una carrera cuando dos o más caminos de señal relevantes compiten en el tiempo. Un peligro es una estructura de circuito y una transición para las cuales algún orden permitido de retardos de camino puede producir una transición de salida no deseada. Un pulso espurio es el pulso observado en un caso real de temporización.
La distinción es útil:
- la simulación con retardo cero puede ocultar un peligro;
- un conjunto de retardos puede contener el peligro pero no mostrar ningún pulso;
- el proceso, la tensión, la temperatura, la colocación o el enrutamiento pueden cambiar qué camino llega primero; y
- «No vi ningún pulso espurio» no demuestra que no haya peligros.
Peligros estáticos
Un peligro estático de 1 es posible cuando la salida debería permanecer en 1, pero puede caer brevemente a 0. Habitualmente se analiza en una red suma de productos (SOP) de dos niveles.
Un peligro estático de 0 es el dual: la salida debería permanecer en 0, pero puede elevarse brevemente a 1. Habitualmente se analiza en una red producto de sumas (POS) de dos niveles.
El procedimiento de mapa de Karnaugh de los libros de texto supone lo siguiente:
- la red se implementa en la forma de dos niveles indicada;
- solo cambia una variable de entrada a la vez;
- las puertas y las interconexiones pueden tener retardos positivos arbitrarios; y
- los valores estables de entrada satisfacen la función booleana prevista.
Si cambias esas hipótesis, la demostración también debe cambiar.
Ejemplo desarrollado de peligro estático de 1
Considera:
Cuando , la salida estable es 1 para cualquiera de los valores de :
- con , el término mantiene alta la salida OR;
- con , el término la mantiene alta.
Durante una transición de 1 a 0 en , el camino directo puede desactivar antes de que el camino del inversor active :
| Intervalo | Camino de | Camino de | |||
|---|---|---|---|---|---|
| Estable antes | 1 | 0 | 1 | 0 | 1 |
| Posible hueco de transferencia | 0 | 0 | 0 | 0 | 0 |
| Estable después | 0 | 1 | 0 | 1 | 1 |
La fila central no es otra entrada de la tabla de verdad. Representa tiempos de llegada desiguales dentro de la implementación.
Encuentra la discontinuidad en un mapa de Karnaugh
Para las variables , y :
BC
00 01 11 10
+----+----+----+----+
A=0 | 0 | 1 | 1 | 0 |
+----+----+----+----+
A=1 | 0 | 0 | 1 | 1 |
+----+----+----+----+
La SOP original usa:
- para las celdas de la fila superior donde ; y
- para las celdas de la fila inferior donde .
Las celdas A=0, B=1, C=1 y A=1, B=1, C=1 son adyacentes porque solo difiere A. Sin embargo, ningún implicante seleccionado cubre ambas. La responsabilidad de la salida debe transferirse de un término producto a otro cuando cambia A. Esa adyacencia sin cubrir es la discontinuidad del peligro estático de 1.
Añade el término de consenso
El consenso de y es :
El teorema de consenso establece:
por lo que el término añadido no cambia ningún resultado estable de la tabla de verdad. Sin embargo, durante la transición peligrosa con , permanece en 1 y mantiene alta la salida OR.
En el mapa de Karnaugh, es el grupo vertical que abarca las dos celdas adyacentes. El procedimiento general para SOP de dos niveles es:
- identificar cada transición permitida de una sola variable entre celdas 1 adyacentes;
- comprobar si la cobertura implementada contiene un implicante que abarque cada par;
- añadir un término de consenso o de cobertura adecuado para cada par sin cubrir; y
- verificar que la síntesis y la implementación física conservan la estructura prevista.
El procedimiento dual cubre las celdas 0 adyacentes en una implementación POS para evitar peligros estáticos de 0.
La lógica mínima y la lógica libre de peligros optimizan objetivos distintos
La SOP mínima tiene menos términos porque es booleanamente redundante. La SOP libre de peligros conserva deliberadamente la redundancia física.
Eso plantea un problema de implementación: normalmente, un sintetizador lógico puede eliminar términos que no cambian la función booleana. También puede factorizar la expresión en una red multinivel o mapearla en tablas de consulta y celdas con un comportamiento interno diferente.
Si la ausencia de peligros es un requisito:
- exprésala como una restricción de implementación, no como un comentario;
- utiliza la metodología documentada por el proveedor para la preservación o la ausencia de peligros;
- inspecciona la lista de conexiones sintetizada;
- realiza una verificación consciente de la temporización sobre el diseño mapeado; y
- valida la implementación final enrutada cuando el flujo de destino lo admita.
Una ecuación RTL por sí sola no garantiza que el camino físico de consenso sobreviva a la optimización.
Peligros dinámicos
Un peligro dinámico ocurre cuando la salida correcta debería cambiar una vez, pero la implementación puede cambiar varias veces antes de estabilizarse; por ejemplo, 0 → 1 → 0 → 1.
Los peligros dinámicos requieren varios retardos que interactúan y se asocian con lógica reconvergente y multinivel. Una red de dos niveles demostrada libre de los peligros estáticos pertinentes bajo el modelo de cambio de una sola entrada es más fácil de razonar; una realización factorizada o mapeada a una tecnología puede dejar de tener esa estructura.
No hay una corrección universal de «añadir un término» para un peligro dinámico arbitrario. Entre las respuestas prácticas se incluyen:
- rediseñar o resintetizar en una forma que tenga una demostración de ausencia de peligros;
- registrar el resultado antes de que alcance un consumidor sensible;
- usar un protocolo de enlace o un estilo de máquina de estados diseñado para operación asíncrona;
- aplicar celdas de multiplexor o control de reloj sin pulsos espurios específicas del destino; y
- verificar el comportamiento de retardos implementado.
Añadir búferes de retardo arbitrarios para «equilibrar» caminos es frágil frente al proceso, la tensión, la temperatura y el enrutamiento, salvo que la metodología de diseño se base explícitamente en retardos acotados y los restrinja.
Cambios de varias entradas y peligros funcionales
La adyacencia en un mapa de Karnaugh representa el cambio de una variable. Si dos entradas independientes pueden cambiar casi al mismo tiempo, el circuito puede atravesar una de varias combinaciones estables intermedias. Incluso una red libre de peligros estáticos de una sola entrada puede producir un peligro funcional.
Por ejemplo, una transición de 00 a 11 puede pasar físicamente por 01 o por 10. Si la función booleana difiere en esas filas intermedias, ninguna puerta redundante puede hacer equivalentes ambos caminos sin cambiar la función.
Las opciones a nivel de sistema incluyen:
- imponer un protocolo de cambio de una sola entrada;
- codificar las transiciones para que cambie solo un bit, cuando proceda;
- sincronizar y registrar los controles relacionados;
- usar protocolos de petición/reconocimiento;
- capturar un conjunto de datos coherente solo después de una señal válida; o
- rediseñar la interfaz para que los cambios simultáneos de entrada no se interpreten de forma combinacional.
El código Gray ayuda con un problema específico de estados adyacentes; no es una solución general para buses arbitrarios.
Cuando la lógica síncrona contiene el pulso espurio
Si un resultado combinacional alimenta solo una entrada D de biestable y la red se ha estabilizado con margen de configuración antes del flanco de muestreo, y permanece estable durante el tiempo de retención, un pulso espurio interno no tiene por qué convertirse en estado arquitectónico.
Esta afirmación tiene límites:
- el pulso espurio sigue consumiendo potencia dinámica;
- puede propagarse a otro camino con una temporización diferente;
- es peligroso en reinicios, activaciones, relojes, habilitaciones y protocolos de enlace asíncronos;
- puede capturarse cuando se reduce el margen de temporización; y
- puede ser visible externamente en pines o señales de selección de chip.
No generes un reloj pasando lógica por una red combinacional ordinaria. Usa celdas integradas de compuerta de reloj, recursos de control de reloj de FPGA o un diseño síncrono basado en habilitación.
Peligros asíncronos y esenciales
Los circuitos secuenciales asíncronos permiten intencionadamente que las transiciones influyan en el estado sin un flanco de muestreo global. Requieren una metodología de diseño cuyas hipótesis de retardo, codificación de estados, protocolos de enlace y condiciones de ausencia de peligros sean explícitas.
Un peligro esencial está asociado a la propagación desigual de una entrada a través de una implementación asíncrona con realimentación, de forma que el estado interno puede avanzar antes de que el cambio de entrada haya llegado a todos los puntos necesarios. No es simplemente otro nombre para un pulso espurio estático combinacional, y un término de consenso no suele eliminarlo.
El tratamiento de los peligros esenciales pertenece a la especificación y la implementación de la máquina asíncrona; a menudo implica hipótesis de retardo de la realimentación o una estructura de circuito distinta. Cambiar a lógica síncrona es una opción, no una demostración de que desaparezcan todos los peligros.
Simula el modelo correcto
Un simulador digital de retardo cero normalmente cambia todos los nodos dependientes en el mismo instante simulado y puede no mostrar ningún pulso. Para estudiar peligros, el modelo debe incluir propagación desigual:
- construye ;
- mantén ;
- asigna o introduce una diferencia de retardo documentada entre los caminos A directo e invertido;
- conmuta solo A;
- inspecciona F con una resolución temporal menor que el retardo modelado; y
- añade y repite.
Si el componente búfer del simulador tiene retardo lógico cero, encadenar búferes no demuestra nada. Usa una función consciente de los retardos, simulación de temporización a nivel de puertas o una medición física.
La ausencia de un pulso en una asignación de retardos es evidencia para esa ejecución, no una demostración para todos los retardos permitidos.
Lista de comprobación de verificación
- ¿Qué entradas pueden cambiar juntas?
- ¿La salida debe permanecer constante o realizar una transición?
- ¿La red implementada tiene dos niveles, está factorizada o se ha mapeado a tablas de consulta o celdas?
- ¿Cada par adyacente pertinente del mapa de Karnaugh comparte un término de cobertura?
- ¿La síntesis puede eliminar o refactorizar la redundancia?
- ¿La salida solo controla una entrada D registrada o un control sensible?
- ¿Se han comprobado los retardos mínimo y máximo después del mapeo y el enrutamiento?
- ¿La realimentación asíncrona y los peligros esenciales se tratan con una metodología reconocida?
Próximos pasos
La guía sobre sesgo de reloj explica cómo una llegada desigual del reloj modifica los márgenes de configuración y retención. Las condiciones indiferentes en los mapas de Karnaugh explican cuándo las combinaciones de entrada no especificadas pueden ayudar a la minimización, pero una condición indiferente debe justificarse mediante el contrato del sistema antes de utilizarse en un análisis de peligros.



