Control externo de una simulación ModelSim a través de tuberías con nombre Unix
Resumen: En esta tesis, presentamos un método para controlar una simulación ModelSim a través de un programa externo. La comunicación entre ModelSim y el programa externo se logra mediante el uso de canalizaciones con nombre ("FIFOs"), que aparecen como archivos normales para cada aplicación. La principal diferencia entre el uso de FIFO frente a archivos normales para la comunicación entre procesos (IPC) es que una aplicación que intenta escribir en un FIFO está en pausa hasta que otra aplicación intente leer desde el FIFO y viceversa. Esto mejora la confiabilidad del IPC. Las principales ventajas de este método son 1) Dado que solo se utilizan operaciones genéricas de archivos, la aplicación externa se puede escribir en casi cualquier lenguaje de programación; 2) Le da al ingeniero de verificación la capacidad de reutilizar paquetes de software de validación de estándares con una reescritura mínima; 3) Al tener múltiples dispositivos bajo prueba (DUT) comunicarse entre sí, se puede crear una simulación más precisa del sistema final; y 4) El rendimiento de la simulación general puede aumentarse fácilmente en un clúster de imagen de sistema único (SSI) o en una computadora multiprocesador, aunque el motor de simulación de ModelSim no sea multiproceso. Debido a su implementación de entrada / salida de archivo (E / S) para VHDL de comportamiento, ModelSim no puede leer o escribir estos FIFO directamente. Una solución para esta limitación se demuestra utilizando la interfaz de idioma extranjero (FLI) de ModelSim. Este documento también muestra un ejemplo de trabajo de este método utilizado en la verificación de la próxima generación de rutinas de punto flotante en VHDL. Específicamente, el paquete de software IEEE Compliance Checker de código abierto, que está escrito en C ++,
Y el problema con los FIFO que requieren una interfaz de programación extranjera es que la E / S de archivos VHDL no puede manejar correctamente el bloqueo hasta que los datos estén disponibles.
Lamentablemente, la tesis no está disponible en la web.
Modelo Sim® Interfaz de idioma extranjero versión 5.6d , PDF 3.4 MB.
Uso de la interfaz de idioma extranjero de ModelSim para c - Simulación simultánea de VHDL y para control de simulador en la plataforma Linux x86 Andre Pool - fli@andrepool.com - Versión 1.5 - creado en noviembre de 2012, última actualización en septiembre de 2013 , PDF, 320 KB (y nunca menciona FIFOs) .
Uso de la interfaz de lenguaje extranjero ModelSim para c-VHDL Co-Simulation y para Simulator Control en la plataforma Linux x86 (el repositorio de código github correspondiente).
Hay un poco más de código abierto, utilizando las llamadas de función VHPI Foreign en ghdl:
vhdl / src / sim / ghdlex_mein en master · texane / vhdl · GitHub .
Y lo que parece una actualización de Martin Strubel en la lista GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz que muestra una fecha para el 15 de abril de 2014.
FLI, por definición, lo encerraría en Modelsim, sin estar seguro del estado de su soporte VHPI (que es parte de IEEE Std 1076-2008, el VHDL LRM).
El uso de un socket o archivo FIFO permite que el proceso de software y hardware se ejecute a diferentes velocidades, al proporcionar almacenamiento en búfer de velocidad. No siempre es necesario si su sistema de software es mucho más rápido que la simulación de hardware (y generalmente lo es).
Hay un esfuerzo por proporcionar la funcionalidad UNIX (POSIX) a VHDL, consulte los paquetes de dominio público VHDL , que contiene un puntero a un documento anterior SNUG San Jose 2002 1 Funciones C / UNIX para bancos de pruebas VHDL Funciones C / UNIX para bancos de pruebas VHDL junto con una diapositiva conjunto con notas adicionales en tuberías Unix y rsh . Esto muestra cómo mantener abiertas las canalizaciones con nombre. Todo el código VHDL también se puede descargar. Soy de la opinión de que esto conduciría a la forma más fácil de lograr su objetivo.
Entonces, ¿hay algo nativo de Modelsim que te permita conectarlo a una tubería? Probablemente no, más aún en Windows. Se puede hacer? Sí, pero el camino no es para los débiles de corazón. Puede bloquear un extremo u otro o posiblemente ambos esperando la disponibilidad de datos.
Una interfaz de programación externa teóricamente te permite generar un proceso hijo para uno u otro extremo de la 'tubería', lo que también significa que puedes usar un modelo de memoria compartida para comunicarte entre los dos extremos.