2012-07-01 24 views
5

Proste pytanie: Zbudowałem quasi-procesorowy symulator, który ma wykres pierwszeństwa, określa priorytety (i instrukcje "gotowe"), planuje zadania na dostępnych jednostkach funkcjonalnych itp. Prawie bardzo prosty symulator.Prosta biblioteka symulacji zdarzeń dyskretnych (C++) do planowania procesów/zadań?

Ale zdałem sobie sprawę, że powinienem był go zbudować na silniku DES, ponieważ nie mam możliwości (poza ustawianiem flagi i sprawdzaniem każdego węzła na każdym "takt zegara") za mówienie takich rzeczy jak "W 10 cyklach, rób to "(tzn. podnosząc sygnały we wcześniej określonych godzinach i obsługując zdarzenia, które mają się wydarzyć w przyszłości lub gdy zostaną spełnione określone z góry kryteria).

Mogę oczywiście zrealizować to sam; zbudowałem klasę "zdarzenia", przykleiłem je do kolejki i na końcu (lub na początku) każdego cyklu, sprawdź kolejkę i zobacz, co tam jest, ale sądzę, że nie ma sensu wymyślać koła.

Tak skomplikowane symulatory sieciowe są oczywiście DROGĄ przesadą. Nie potrzebuję fantazyjnego modelowania, kolejkowania ani niczego w tym stylu. Wszystko, czego potrzebuję, to wbudowany zegar i możliwość ustawiania zdarzeń, podnoszenie flag, gdy coś się dzieje, itp., Jak opisałem powyżej.

Darmowe i C++ byłoby świetnie.

Ktoś ma jakieś pomysły? (Najbliższy, do którego przyszedłem - dzięki innym, nieco pokrewnym pytaniom - nazywa się SIMLIB.)

Dziękuję bardzo!

+0

Jeśli już zaimplementowałeś harmonogram zadań, czy nie możesz pozwolić, aby zdarzenia licznika były kolejnym zadaniem? – jxh

+0

+1 za próbę uniknięcia reinstalacji koła. Z twojego pytania wynika, że ​​chciałbyś mieć dodatkowe funkcje z silnika DES (w przeciwnym razie jest to nic innego jak pętla i posortowana lista zdarzeń, więc użycie specyficznej biblioteki _any_ wydaje się być przesadą), więc czego jeszcze potrzebujesz? Skalowalność (symulacja równoległa)? Obsługa losowych dystrybucji/RNG? Czy wolisz konkretny widok świata (np. Zobacz http://www.informs-sim.org/wsc10papers/019.pdf)? –

+0

Przepraszamy za opóźnienie w odpowiedzi! Zadania programu planującego nie są generowane w sposób ogólny. Opóźnienia związane z timerem wymagałyby znacznego majsterkowania, a cała sprawa polega na tym, aby nie odkrywać koła na nowo. – user770901

Odpowiedz

0

Możesz wypróbować Open Virtual Platforms (OVP). Wydaje się, że zapewnia typ symulatora, którego szukasz.

0

Spróbuj SystemC, to bezpłatna biblioteka. Ostrzegam jednak, że nie jest to "open-source", ponieważ licencja nie jest zgodna z FOSS.

+0

Tak, nie, dziękuję. Spojrzałem na SystemC na inne rzeczy - a mianowicie na projekt FPGA - i to też się nie udaje. Cały projekt wydaje się być/jest bałaganem. Doceniam czas, w którym możesz odpowiedzieć, ale nie jestem tym zainteresowany. Niezależnie od tego, jest to niesamowicie przesadzone z tego, co chcę zrobić. Ustalenie, co równa się opisowi behawiorystycznemu mojego systemu, nie ma sensu. – user770901