¿Cuál es la diferencia entre un simulador y un emulador?

En resumen, un emulador puede reemplazar el original para uso ‘real’. Un simulador es un modelo para el análisis.

Una simulación es un sistema que se comporta de manera similar a otra cosa, pero se implementa de una manera completamente diferente. Proporciona el comportamiento básico de un sistema, pero no necesariamente cumple con todas las reglas del sistema que se simula. Está ahí para darle una idea sobre cómo funciona algo.
Piense en un simulador de vuelo como un ejemplo. Parece y se siente como si estuvieras volando un avión, pero estás completamente desconectado de la realidad de volar el avión, y puedes doblar o romper esas reglas como mejor te parezca. P.ej; Vuela un Airbus A380 boca abajo entre Londres y Sydney sin romperlo.

Una emulación es un sistema que se comporta exactamente como otra cosa y cumple con todas las reglas del sistema que se emula. Es efectivamente una réplica completa de otro sistema, hasta ser binariamente compatible con las entradas y salidas del sistema emulado, pero opera en un entorno diferente al entorno del sistema emulado original. Las reglas son fijas y no se pueden cambiar o el sistema falla.

Simulator es una plataforma virtual. Es un modelo de software de un sistema de hardware. El emulador, por otro lado, es como un hardware real, por lo general es un FPGA, pero no es el chip real, ya que tiene el tamaño mínimo del chip real y, por lo general, no funciona tan rápido como el chip real.

Los simuladores se desarrollan rápidamente. Se utilizan principalmente para el desarrollo temprano de software y para algunos otros casos de uso, como la exploración de arquitectura durante la fase de concepto. Proporcionan buenas capacidades de depuración y son rápidos en simulación.

Los emuladores generalmente se derivan del lenguaje de descripción de hardware que se utiliza para el diseño del chip real donde la lista de redes derivada se asigna a un FPGA que emula el chip real con capacidades de E / S y memoria cercanas al hardware real. Pero estos suelen llevar más tiempo para el desarrollo en comparación con los simuladores.

Como los emuladores están cerca del hardware real, anotan muy bien el tiempo real y los comportamientos analógicos, que la mayoría de las veces no es el foco del simulador. Pero son lentos en comparación con los modelos de software. El uso de simuladores en el ciclo de desarrollo temprano puede conducir a encontrar errores importantes en el concepto antes de que se desarrolle el hardware. Además, el software masivo desarrollado en el simulador podría probarse fácilmente cuando un emualtor esté disponible, ya que los simuladores tienden a ser funcionalmente precisos pero carecen del tiempo real del hardware a pesar de que tienen una noción de ello.

Los simuladores pueden ser más útiles si tienen que encajar en un sistema de simulador más grande (por ejemplo: un controlador en un sistema de ECU) que ayuda en la creación rápida de prototipos virtuales. Pero, en los lugares donde ambos están disponibles, los emuladores son, en su mayoría, los criterios finales de cierre de sesión.