stringtranslate.com

Comprobación de equivalencia formal

El proceso de verificación de equivalencia formal es una parte de la automatización del diseño electrónico (EDA), comúnmente utilizada durante el desarrollo de circuitos integrados digitales , para demostrar formalmente que dos representaciones de un diseño de circuito exhiben exactamente el mismo comportamiento.

Comprobación de equivalencia y niveles de abstracción

En general, existe una amplia gama de posibles definiciones de equivalencia funcional que abarcan comparaciones entre diferentes niveles de abstracción y granularidad variable de los detalles de tiempo.

Equivalencia de máquina sincrónica

El comportamiento del nivel de transferencia de registros (RTL) de un chip digital se describe habitualmente con un lenguaje de descripción de hardware , como Verilog o VHDL . Esta descripción es el modelo de referencia de oro que describe en detalle qué operaciones se ejecutarán durante qué ciclo de reloj y por qué piezas de hardware. Una vez que los diseñadores lógicos, mediante simulaciones y otros métodos de verificación, han verificado la descripción de la transferencia de registros, el diseño se convierte normalmente en una lista de conexiones mediante una herramienta de síntesis lógica . La equivalencia no debe confundirse con la corrección funcional, que debe determinarse mediante la verificación funcional .

La lista de conexiones inicial generalmente se someterá a una serie de transformaciones, como optimización, adición de estructuras de diseño para pruebas (DFT), etc., antes de que se use como base para la colocación de los elementos lógicos en un diseño físico . El software de diseño físico contemporáneo ocasionalmente también realizará modificaciones significativas (como reemplazar elementos lógicos con elementos similares equivalentes que tengan una fuerza de accionamiento y/o área mayor o menor) a la lista de conexiones. A lo largo de cada paso de un procedimiento muy complejo de varios pasos, se deben mantener la funcionalidad original y el comportamiento descrito por el código original. Cuando se realiza la cinta final de un chip digital, muchos programas EDA diferentes y posiblemente algunas ediciones manuales habrán alterado la lista de conexiones.

En teoría, una herramienta de síntesis lógica garantiza que la primera lista de conexiones sea lógicamente equivalente al código fuente RTL. Todos los programas posteriores en el proceso que realicen cambios en la lista de conexiones también garantizan, en teoría, que estos cambios sean lógicamente equivalentes a una versión anterior.

En la práctica, los programas tienen errores y sería un riesgo importante asumir que todos los pasos desde RTL hasta la lista de conexiones final se han realizado sin errores. Además, en la vida real, es común que los diseñadores realicen cambios manuales en una lista de conexiones, comúnmente conocidos como órdenes de cambio de ingeniería o ECO, lo que introduce un importante factor de error adicional. Por lo tanto, en lugar de asumir ciegamente que no se cometieron errores, se necesita un paso de verificación para verificar la equivalencia lógica de la versión final de la lista de conexiones con la descripción original del diseño (modelo de referencia de oro).

Históricamente, una forma de comprobar la equivalencia era volver a simular, utilizando la lista de conexiones final, los casos de prueba que se desarrollaron para verificar la corrección de la RTL. Este proceso se denomina simulación lógica a nivel de compuerta . Sin embargo, el problema con esto es que la calidad de la comprobación solo es tan buena como la calidad de los casos de prueba. Además, las simulaciones a nivel de compuerta son notoriamente lentas de ejecutar, lo que es un problema importante a medida que el tamaño de los diseños digitales continúa creciendo exponencialmente .

Una forma alternativa de resolver esto es demostrar formalmente que el código RTL y la lista de conexiones sintetizada a partir de él tienen exactamente el mismo comportamiento en todos los casos (relevantes). Este proceso se denomina verificación de equivalencia formal y es un problema que se estudia en el área más amplia de la verificación formal .

Se puede realizar una comprobación de equivalencia formal entre dos representaciones cualesquiera de un diseño: RTL <> netlist, netlist <> netlist o RTL <> RTL, aunque esta última opción es poco frecuente en comparación con las dos primeras. Normalmente, una herramienta de comprobación de equivalencia formal también indicará con gran precisión en qué punto existe una diferencia entre dos representaciones.

Métodos

Hay dos tecnologías básicas utilizadas para el razonamiento booleano en programas de comprobación de equivalencia:

Aplicaciones comerciales para la comprobación de equivalencia

Los principales productos en el área de verificación de equivalencia lógica ( LEC ) de EDA son:

Generalizaciones

Véase también

Referencias

Enlaces externos