2012-07-01 8 views
5

Pregunta simple: Construí un simulador de cuasi procesador que toma un gráfico de precedencia, determina las prioridades (y las instrucciones "listas"), programa las tareas en unidades funcionales disponibles, etc. Prácticamente es un simulador muy básico.Biblioteca de simulación de eventos simples y discretos (C++) para la programación de procesos/tareas?

Pero me di cuenta de que debería haberlo construido sobre un motor DES, ya que no tengo capacidad (aparte de establecer un indicador y verificar cada nodo en cada "marcación de reloj") para decir cosas como "En 10 ciclos, hacer esto "(es decir, elevar las señales a tiempos predefinidos y manejar eventos que se supone que ocurrirán en el futuro o cuando se hayan cumplido los criterios predeterminados).

Pude obviamente implementar esto yo mismo; construyó una clase de "eventos", los colocó en una cola, y al final (o principio) de cada ciclo, verifica la cola y ve lo que hay allí, pero creo que no tiene sentido reinventar la rueda.

Por lo tanto, los simuladores de red complejos son obviamente excesivos. No necesito modelos elegantes, ni hacer colas, ni nada de eso. Todo lo que necesito es un reloj incorporado y la capacidad de establecer eventos para que sucedan, levantar banderas cuando suceden las cosas, etc., como describí anteriormente.

Freeware y C++ sería genial.

¿Alguien tiene alguna idea? (Lo más cercano que he venido, gracias a algunas otras preguntas algo relacionadas, es algo llamado SIMLIB.)

¡Muchas gracias!

+0

Si ya ha implementado un planificador para las tareas, ¿no podría permitir que los eventos del temporizador sean otra tarea? – jxh

+0

+1 por tratar de evitar la reinvención de la rueda. A partir de su pregunta, parece que le gustaría obtener algunas características adicionales de un motor DES (de lo contrario, no es más que un bucle y una lista ordenada de eventos, por lo que usar _cualquier biblioteca específica parece ser exagerada), ¿qué más necesita? Escalabilidad (simulación paralela)? Soporte para distribuciones aleatorias/RNGs? ¿Prefiere una visión del mundo específica (por ejemplo, consulte http://www.informs-sim.org/wsc10papers/019.pdf)? –

+0

Disculpa la demora en la respuesta! Las tareas del planificador no se escriben genéricamente. Los eventos basados ​​en temporizadores requerirían ajustes importantes y el objetivo es no reinventar la rueda. – user770901

Respuesta

0

Puede probar Plataformas virtuales abiertas (OVP). Parece proporcionar el tipo de simulador que estás buscando.

0

Pruebe SystemC, es una biblioteca de freeware. Sin embargo, advertiría que no es de "código abierto" ya que la licencia no es compatible con FOSS.

+0

Sí, no, gracias. Miré SystemC por otras cosas, concretamente el diseño de FPGA, y también falla en eso. Todo el proyecto parece/es un desastre. Agradezco el tiempo que tienes para responder, pero no estoy interesado en eso. A pesar de todo, es increíblemente excesivo para lo que quiero hacer. Configurar lo que equivale a una descripción de comportamiento de mi sistema no tiene mucho sentido. – user770901

Cuestiones relacionadas