stringtranslate.com

Simulación lógica

La simulación lógica es el uso de software de simulación para predecir el comportamiento de circuitos digitales y lenguajes de descripción de hardware . [1] [2] La simulación se puede realizar en distintos grados de abstracción física , como a nivel de transistor , nivel de compuerta , nivel de transferencia de registro (RTL), nivel de sistema electrónico (ESL) o nivel de comportamiento.

Uso en verificación

La simulación lógica se puede utilizar como parte del proceso de verificación en el diseño de hardware. [3]

Las simulaciones tienen la ventaja de ofrecer una apariencia y una sensación familiares al usuario, ya que están construidas con el mismo lenguaje y los mismos símbolos que se utilizan en el diseño. Al permitir que el usuario interactúe directamente con el diseño, la simulación es una forma natural para que el diseñador obtenga comentarios sobre su diseño.

Duración de la simulación

El nivel de esfuerzo necesario para depurar y verificar el diseño es proporcional a la madurez del diseño. Es decir, en las primeras etapas de la vida del diseño, los errores y el comportamiento incorrecto suelen detectarse rápidamente. A medida que el diseño madura, la simulación requerirá más tiempo y recursos para ejecutarse, y los errores tardarán cada vez más en detectarse. Esto es particularmente problemático cuando se simulan componentes para sistemas modernos; cada componente que cambia de estado en un solo ciclo de reloj en la simulación requerirá varios ciclos de reloj para simularse.

Una solución sencilla a este problema puede ser emular el circuito en una matriz de puertas programables en campo . También se puede explorar la verificación formal como alternativa a la simulación, aunque una prueba formal no siempre es posible o conveniente.

Una forma prospectiva de acelerar la simulación lógica es utilizando cálculos distribuidos y paralelos . [4]

Para ayudar a evaluar la minuciosidad de una simulación, existen herramientas para evaluar la cobertura del código , [5] la cobertura funcional, la cobertura de la máquina de estados finitos (FSM) y muchas otras métricas. [6]

Simulación de eventos versus simulación de ciclos

La simulación de eventos permite que el diseño contenga información de tiempo simple: el retraso necesario para que una señal viaje de un lugar a otro. Durante la simulación, los cambios de señal se rastrean en forma de eventos. Un cambio en un momento determinado desencadena un evento después de un cierto retraso. Los eventos se ordenan por el momento en que ocurrirán y, cuando se han manejado todos los eventos para un momento determinado, el tiempo simulado avanza al momento del próximo evento programado. La velocidad de ejecución de una simulación de eventos depende de la cantidad de eventos que se procesarán (la cantidad de actividad en el modelo). [7]

Si bien la simulación de eventos puede proporcionar cierta retroalimentación sobre la sincronización de la señal, no reemplaza el análisis de sincronización estático .

En la simulación de ciclos, no es posible especificar demoras. Se utiliza un modelo preciso para cada ciclo y se evalúa cada compuerta en cada ciclo. Por lo tanto, la simulación de ciclos se ejecuta a una velocidad constante, independientemente de la actividad en el modelo. Las implementaciones optimizadas pueden aprovechar la baja actividad del modelo para acelerar la simulación al omitir la evaluación de las compuertas cuyas entradas no cambiaron. En comparación con la simulación de eventos, la simulación de ciclos tiende a ser más rápida, a escalar mejor y a ser más adecuada para la aceleración/emulación de hardware.

Sin embargo, las tendencias de diseño de chips apuntan a que la simulación de eventos gana un rendimiento relativo debido a la reducción del factor de actividad en el circuito (debido a técnicas como el control de reloj y el control de potencia , que se están utilizando mucho más comúnmente en un esfuerzo por reducir la disipación de potencia). En estos casos, dado que la simulación de eventos solo simula eventos necesarios, el rendimiento puede no ser ya una desventaja sobre la simulación de ciclos. La simulación de eventos también tiene la ventaja de una mayor flexibilidad, manejando características de diseño difíciles de manejar con la simulación de ciclos, como la lógica asincrónica y los relojes inconmensurables. Debido a estas consideraciones, casi todos los simuladores lógicos comerciales tienen una capacidad basada en eventos, incluso si se basan principalmente en técnicas basadas en ciclos. [8]

Véase también

Referencias

  1. ^ Laung-Terng Wang; Yao-Wen Chang; Kwang-Ting (Tim) Cheng (11 de marzo de 2009). Automatización del diseño electrónico: síntesis, verificación y prueba. Morgan Kaufmann. ISBN 978-0-08-092200-3.
  2. ^ V. Litovski; Mark Zwolinski (31 de diciembre de 1996). Simulación y optimización de circuitos VLSI. Springer Science & Business Media. ISBN 978-0-412-63860-2.
  3. ^ Bombieri, Nicola; Fummi, Franco; Pravadelli, Graziano (mayo de 2006). Diseño de hardware y simulación para verificación. Apuntes de clase en informática. págs. 1–29.
  4. ^ Sistema de software para simulación lógica distribuida basada en eventos . Ladyzhensky YV, Popoff YV Actas del Taller de diseño y pruebas IEEE East-West (EWDTW'05). IEEE EWDTW, 2005, pág. 119-122 ISBN 966-659-113-8 
  5. ^ Wang, Tsu-Hua y Tan, Chong Guan (1995). Cobertura de código práctica para Verilog. Conferencia IEEE International Verilog HDL de 1995. IEEE. págs. 99–104.{{cite conference}}: CS1 maint: varios nombres: lista de autores ( enlace )
  6. ^ Jou, Jing-Yang y Liu, Chien-Nan Jimmy (1999). Técnicas de análisis de cobertura para la validación del diseño HDL. Asia Pacific CHip Design Languages. págs. 48–55.{{cite conference}}: CS1 maint: varios nombres: lista de autores ( enlace )
  7. ^ "Entorno de simulación y modelado de redes" (PDF) . Centro de información técnica de defensa . Consultado el 1 de enero de 2023 .
  8. ^ Electronic Design Automation For Integrated Circuits Handbook, de Lavagno, Martin y Scheffer, ISBN 0-8493-3096-3 , un estudio del campo de EDA. El resumen anterior se derivó, con autorización, del Volumen I, Capítulo 16, Simulación digital, de John Sanguinetti.