Etapa de validación del diseño de circuitos electrónicos
La verificación funcional es la tarea de verificar que el diseño lógico se ajusta a la especificación. [1] La verificación funcional intenta responder a la pregunta "¿Este diseño propuesto hace lo que se pretende?" [2] Esto es complejo y requiere la mayor parte del tiempo y el esfuerzo (hasta el 70% del tiempo de diseño y desarrollo) [1] en la mayoría de los proyectos de diseño de sistemas electrónicos de gran envergadura. La verificación funcional es una parte de una verificación de diseño más amplia que, además de la verificación funcional, considera aspectos no funcionales como la sincronización, el diseño y la potencia. [3]
Fondo
Aunque el número de transistores aumentó exponencialmente según la ley de Moore , el aumento del número de ingenieros y el tiempo necesario para producir los diseños solo aumentan linealmente . A medida que aumenta la complejidad de los transistores, también aumenta el número de errores de codificación. La mayoría de los errores en la codificación lógica provienen de una codificación descuidada (12,7 %), una mala comunicación (11,4 %) y desafíos de microarquitectura (9,3 %). [1] Por lo tanto, se producen herramientas de automatización del diseño electrónico (EDA) para ponerse al día con la complejidad del diseño de transistores. Los lenguajes como Verilog y VHDL se introducen junto con las herramientas EDA. [1]
La verificación funcional es muy difícil debido al gran volumen de casos de prueba posibles que existen incluso en un diseño simple. Con frecuencia, hay más de 10^80 pruebas posibles para verificar exhaustivamente un diseño, una cantidad que es imposible de lograr en una vida. Este esfuerzo es equivalente a la verificación de un programa y es NP-hard o incluso peor, y no se ha encontrado ninguna solución que funcione bien en todos los casos. Sin embargo, se puede atacar con muchos métodos. Ninguno de ellos es perfecto, pero cada uno puede ser útil en ciertas circunstancias:
- La simulación lógica simula la lógica antes de construirla.
- La aceleración de simulación aplica hardware de propósito especial al problema de simulación lógica.
- La emulación crea una versión del sistema utilizando lógica programable. Es un proceso costoso y mucho más lento que el hardware real, pero mucho más rápido que la simulación. Se puede utilizar, por ejemplo, para arrancar el sistema operativo en un procesador.
- La verificación formal intenta demostrar matemáticamente que se cumplen ciertos requisitos (también expresados formalmente) o que no pueden ocurrir ciertos comportamientos no deseados (como el bloqueo).
- La verificación inteligente utiliza la automatización para adaptar el banco de pruebas a los cambios en el código de nivel de transferencia de registro .
- Se utilizan versiones específicas de HDL de lint y otras heurísticas para encontrar problemas comunes.
Tipos
Existen tres tipos de verificación funcional, a saber: verificación funcional dinámica, verificación funcional/estática/dinámica híbrida y verificación estática. [1]
La verificación basada en simulación (también llamada " verificación dinámica ") se utiliza ampliamente para "simular" el diseño, ya que este método se escala con mucha facilidad. Se proporciona un estímulo para ejercitar cada línea en el código HDL. Se crea un banco de pruebas para verificar funcionalmente el diseño al proporcionar escenarios significativos para verificar que, dada cierta información, el diseño funciona según las especificaciones.
Un entorno de simulación normalmente se compone de varios tipos de componentes:
- El generador genera vectores de entrada que se utilizan para buscar anomalías que existen entre la intención (especificaciones) y la implementación (código HDL). Este tipo de generador utiliza un solucionador SAT de tipo NP-completo que puede ser costoso desde el punto de vista computacional. Otros tipos de generadores incluyen vectores creados manualmente, generadores basados en gráficos (GBM) y generadores patentados. Los generadores modernos crean estímulos aleatorios y dirigidos que se impulsan estadísticamente para verificar partes aleatorias del diseño. La aleatoriedad es importante para lograr una alta distribución en el enorme espacio de los estímulos de entrada disponibles. Con este fin, los usuarios de estos generadores subespecifican intencionalmente los requisitos para las pruebas generadas. El papel del generador es llenar este vacío de forma aleatoria. Este mecanismo permite al generador crear entradas que revelen errores que el usuario no busca directamente. Los generadores también sesgan los estímulos hacia casos extremos de diseño para enfatizar aún más la lógica. El sesgo y la aleatoriedad sirven a diferentes objetivos y existen compensaciones entre ellos, por lo tanto, diferentes generadores tienen una combinación diferente de estas características. Dado que la entrada para el diseño debe ser válida (legal) y se deben mantener muchos objetivos (como el sesgo), muchos generadores utilizan la técnica del problema de satisfacción de restricciones (CSP) para resolver los complejos requisitos de prueba. Se modela la legalidad de las entradas de diseño y el arsenal de sesgo. Los generadores basados en modelos utilizan este modelo para producir los estímulos correctos para el diseño objetivo.
- Los controladores traducen los estímulos producidos por el generador en entradas reales para el diseño que se está verificando. Los generadores crean entradas a un alto nivel de abstracción, es decir, como transacciones o lenguaje ensamblador. Los controladores convierten esta entrada en entradas de diseño reales, tal como se define en la especificación de la interfaz del diseño.
- El simulador produce los resultados del diseño, en función del estado actual del diseño (el estado de los flip-flops) y las entradas inyectadas. El simulador tiene una descripción de la lista de redes de diseño. Esta descripción se crea sintetizando el HDL en una lista de redes de nivel de puerta bajo.
- El monitor convierte el estado del diseño y sus salidas a un nivel de abstracción de transacciones para que puedan almacenarse en una base de datos de "tableros de resultados" para su comprobación posterior.
- El verificador valida que el contenido de los 'score-boards' sea legal. Existen casos en los que el generador crea resultados esperados, además de los datos de entrada. En estos casos, el verificador debe validar que los resultados reales coincidan con los esperados.
- El administrador de arbitraje gestiona todos los componentes anteriores en conjunto.
Se definen diferentes métricas de cobertura para evaluar si el diseño se ha utilizado adecuadamente. Estas incluyen la cobertura funcional (¿se ha utilizado cada funcionalidad del diseño?), la cobertura de declaraciones (¿se ha utilizado cada línea de HDL?) y la cobertura de sucursales (¿se ha utilizado cada dirección de cada sucursal?).
Véase también
Referencias
- ^ abcde Molina, A; Cadenas, O (8 de septiembre de 2006). «Verificación funcional: enfoques y desafíos». Investigación Aplicada Latinoamericana . 37. ISSN 0327-0793. Archivado desde el original el 16 de octubre de 2022. Consultado el 12 de octubre de 2022 .
- ^ Rezaeian, Banafsheh. "Metodología de simulación y verificación de circuitos integrados automotrices de señal mixta". CiteSeerX 10.1.1.724.527 .
- ^ Stroud, Charles E; Change, Yao-Chang (2009). "CAPÍTULO 1 – Introducción". Verificación del diseño . págs. 1–38. doi :10.1016/B978-0-12-374364-0.50008-4. ISBN 978-0-12-374364-0Archivado desde el original el 12 de octubre de 2022 . Consultado el 11 de octubre de 2022 .