
En el diseño de circuitos integrados , la emulación de hardware es el proceso de imitar el comportamiento de uno o más componentes de hardware (normalmente un sistema en diseño) con otro componente de hardware, generalmente un sistema de emulación especializado. El modelo de emulación suele basarse en el código fuente de un lenguaje de descripción de hardware (por ejemplo, Verilog ), que se compila al formato utilizado por el sistema de emulación. El objetivo suele ser la depuración y la verificación funcional del sistema en diseño. A menudo, un emulador es lo suficientemente rápido como para conectarse a un sistema objetivo en funcionamiento en lugar de un chip aún por fabricar, de modo que todo el sistema pueda depurarse con datos reales. Este es un caso específico de emulación en circuito .
En ocasiones, la emulación de hardware puede confundirse con dispositivos de hardware como tarjetas de expansión con procesadores que ayudan a las funciones de emulación de software, como las antiguas placas secundarias con chips x86 que permitían ejecutar sistemas operativos x86 en placas base de diferentes familias de procesadores.
Introducción
La mayor parte de las revisiones y reprogramaciones de circuitos integrados de silicio se deben, al menos en parte, a errores funcionales y fallos introducidos inadvertidamente en la fase RTL del proceso de diseño. Por lo tanto, una verificación funcional exhaustiva es clave para reducir los costes de desarrollo y entregar un producto a tiempo. La verificación funcional de un diseño se realiza con mayor frecuencia mediante simulación lógica y/o prototipado en matrices de puertas programables en campo (FPGA). Cada método tiene sus ventajas y desventajas, y a menudo se utilizan ambos. La simulación lógica es sencilla, precisa, flexible y de bajo coste. Sin embargo, a menudo no es lo suficientemente rápida para diseños grandes y casi siempre es demasiado lenta para ejecutar software de aplicación sobre el diseño de hardware. Los prototipos basados en FPGA son rápidos y económicos, pero el tiempo necesario para implementar un diseño grande en varias FPGA puede ser muy largo y propenso a errores. Los cambios para corregir fallos de diseño también requieren mucho tiempo de implementación y pueden requerir modificaciones en el cableado de la placa. Con las herramientas tradicionales de los proveedores, los prototipos FPGA tienen poca capacidad de depuración, la monitorización de señales dentro de los FPGA en tiempo real es muy difícil y la recompilación de los FPGA para mover las sondas lleva demasiado tiempo. Esto está cambiando con la aparición de herramientas de depuración de prototipos FPGA más avanzadas [ 1 ] que eliminan las limitaciones en la visibilidad de las señales. El compromiso habitual es utilizar la simulación al principio del proceso de verificación, cuando los errores y las correcciones son frecuentes, y la creación de prototipos al final del ciclo de desarrollo, cuando el diseño está prácticamente completo y se necesita rapidez para obtener pruebas suficientes que permitan descubrir cualquier error restante a nivel de sistema. La creación de prototipos FPGA también es popular para probar software.
La aceleración de la simulación puede abordar, en cierta medida, las deficiencias de rendimiento de la simulación. En este caso, el diseño se asigna a un acelerador de hardware para que se ejecute mucho más rápido, mientras que el banco de pruebas (y cualquier código de diseño de comportamiento) continúa ejecutándose en el simulador de la estación de trabajo. Un canal de alto ancho de banda y baja latencia conecta la estación de trabajo con el acelerador para intercambiar datos de señal entre el banco de pruebas y el diseño. Según la ley de Amdahl , el dispositivo más lento de la cadena determinará la velocidad alcanzable. Normalmente, este es el banco de pruebas en el simulador. Con un banco de pruebas muy eficiente (escrito en C o basado en transacciones), el canal puede convertirse en el cuello de botella. En algunos casos, un banco de pruebas a nivel de transacción puede proporcionar al diseño que se está emulando tantos datos como un estímulo "en vivo".
La emulación en circuito mejora ligeramente los tiempos de implementación del prototipado con FPGA y proporciona una capacidad de depuración completa y eficiente. Sin embargo, esto se logra a costa de una menor velocidad de ejecución y un coste elevado (más de 1 millón de dólares) en comparación con los prototipos con FPGA (75 000 dólares). Desde otra perspectiva, la emulación mejora el rendimiento de la aceleración al sustituir el banco de pruebas simulado por estímulos reales. Estos estímulos pueden provenir del sistema objetivo (el producto en desarrollo) o de equipos de prueba. Con una velocidad entre 10 000 y 100 000 veces superior a la de la simulación, la emulación permite probar el software de aplicación a la vez que proporciona un entorno de depuración de hardware completo.
Depuración de simulaciones frente a emulaciones/prototipado
La simulación y la creación de prototipos implican dos estilos de ejecución diferentes. La simulación ejecuta el código RTL de forma secuencial, mientras que un prototipo se ejecuta completamente en paralelo. Esto conlleva diferencias en la depuración. En la simulación:
- El usuario puede establecer un punto de interrupción y detener la simulación para inspeccionar el estado del diseño, interactuar con él y reanudar la simulación.
- El usuario puede detener la ejecución "a mitad de ciclo", por así decirlo, cuando solo se haya ejecutado una parte del código.
- El usuario puede ver cualquier señal en el diseño y el contenido de cualquier ubicación de memoria en cualquier momento.
- El usuario incluso puede retroceder en el tiempo (si guardó puntos de control ) y volver a ejecutarlo.
Con un prototipo:
- El usuario emplea un analizador lógico para la visualización, por lo que solo puede ver un número limitado de señales que ha determinado previamente (mediante la conexión de sondas). Esto está cambiando con las nuevas herramientas de prototipado FPGA que proporcionan visibilidad completa de decenas de miles de señales internas, como Certus. [ 2 ]
- El sistema no se detiene cuando se activa el analizador lógico, por lo que cada vez que el usuario cambia las sondas o la condición de activación, tiene que reiniciar el entorno y volver a empezar desde el principio.
- Se añaden sondas directamente al diseño RTL para que señales específicas estén disponibles para su observación. Cuando el sistema está en funcionamiento, la sonda basada en RTL conectada a cada una de las señales instrumentadas recoge el valor de la señal en cada ciclo de reloj. Los datos se almacenan en un búfer de traza en la RAM de bloque de la FPGA. Un analizador conectado al prototipo descarga la información, lo que proporciona al usuario visibilidad offline del sistema para una depuración eficiente. [ 3 ]
La aceleración y la emulación se asemejan más al prototipado y al desarrollo en silicio en términos de ejecución y depuración RTL, ya que todo el diseño se ejecuta simultáneamente, tal como ocurriría en el silicio. Dado que a menudo se utiliza el mismo hardware para proporcionar tanto aceleración de simulación como emulación en circuito, estos sistemas ofrecen una combinación de estos dos estilos de depuración tan diferentes.
Los emuladores de hardware de gama alta proporcionan un entorno de depuración con muchas características que se pueden encontrar en los simuladores lógicos, e incluso, en algunos casos, superan sus capacidades de depuración:
- El usuario puede establecer un punto de interrupción y detener la emulación para inspeccionar el estado del diseño, interactuar con él y reanudar la emulación. El emulador siempre se detiene en los límites de ciclo.
- El usuario tiene visibilidad de cualquier señal o contenido de memoria en el diseño sin necesidad de configurar sondas antes de la ejecución. Si bien también se ofrece visibilidad del pasado, la cantidad de tiempo que puede mostrar puede estar limitada, en algunos casos, por la profundidad de la memoria de rastreo del emulador.
- El usuario incluso puede retroceder en el tiempo (si guardó puntos de control ) y volver a ejecutarlo.
- Debido a su elevado coste, los emuladores están fuera del alcance de muchos desarrolladores, lo que ha propiciado el auge de plataformas avanzadas de creación de prototipos FPGA y herramientas de depuración.
Emulación y lógica de dos estados
Otra diferencia entre simulación, aceleración y emulación es consecuencia de que los aceleradores utilizan hardware para su implementación : solo tienen dos estados lógicos , comportándose como lo hará el silicio una vez fabricado. Esto implica:
- No son útiles para analizar la inicialización del estado X.
- No pueden analizar la resolución de fuerza, o al menos esto debe hacerse de forma estática en tiempo de compilación.
- Los emuladores no modelan la sincronización precisa del circuito y, por lo tanto, probablemente no detectarán ninguna condición de carrera ni violaciones de los tiempos de configuración y retención.
Estas tareas se llevan a cabo correctamente durante la simulación lógica o con una herramienta de análisis de temporización estática .
Emulación versus creación de prototipos
Una distinción tradicional clave entre un emulador y un sistema de prototipado FPGA ha sido que el emulador proporciona un entorno de depuración completo, mientras que un sistema de prototipado tiene poca o ninguna capacidad de depuración y se utiliza principalmente después de que el diseño se haya depurado para crear múltiples copias para el análisis del sistema y el desarrollo de software. Están surgiendo nuevas herramientas que permiten una visibilidad completa de la señal RTL con un pequeño impacto en la LUT de la FPGA, permiten una gran profundidad de captura y proporcionan análisis de múltiples chips y dominios de reloj para permitir una depuración eficiente, comparable a la del emulador. [ 2 ]
Véase también
- Virtualización asistida por hardware
- Emulador
- Emulador en circuito
- Interfaz del modo de depuración en segundo plano
- Ejemplos:
- Emulador de microprocesador HP 64000 (diferentes CPU)
Referencias
- ↑ Morris, Kevin (30 de octubre de 2012). "Tektronix revoluciona la creación de prototipos; la instrumentación integrada eleva las placas a la categoría de emuladores" . Electronic Engineering Journal . Consultado el 30 de octubre de 2012 .
- 1 2 "Tektronix espera revolucionar la creación de prototipos ASIC" . EE Times. 30 de octubre de 2012. Consultado el 30 de octubre de 2012 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Supera los cuellos de botella en la creación de prototipos ASIC" . 23 de octubre de 2012. Consultado el 30 de octubre de 2012 .
- Manual de automatización del diseño electrónico para circuitos integrados , por Lavagno, Martin y Scheffer, ISBN 0-8493-3096-3Un estudio del campo, del cual se derivó el resumen anterior, con autorización.
Lecturas adicionales
- ADELANTO: DENTRO DEL LABORATORIO DE EMULACIÓN DE NVIDIA
- Plataforma de emulación empresarial Cadence Palladium Z1
- Emulador de servidor Synopsys Zebu
- Sistemas de emulación Veloce de Mentor Graphics
- Verificación de circuitos electrónicos