Zewnętrzna kontrola symulacji ModelSim za pośrednictwem nazwanych rur Unix
Streszczenie: W tej pracy prezentujemy metodę sterowania symulacją ModelSim za pomocą zewnętrznego programu. Komunikacja między ModelSim a programem zewnętrznym odbywa się za pomocą nazwanych potoków („FIFO”), które są wyświetlane jako normalne pliki dla każdej aplikacji. Główną różnicą między używaniem FIFO a zwykłymi plikami do komunikacji międzyprocesowej (IPC) jest to, że aplikacja próbująca pisać do FIFO jest wstrzymywana, dopóki inna aplikacja nie spróbuje odczytać z FIFO i odwrotnie. Poprawia to niezawodność IPC. Główne zalety tej metody to: 1) Ponieważ używane są tylko ogólne operacje na plikach, aplikacja zewnętrzna może być napisana w prawie każdym języku programowania; 2) Daje inżynierowi weryfikującemu możliwość ponownego wykorzystania pakietów oprogramowania do sprawdzania standardów przy minimalnym przepisywaniu; 3) Dzięki wzajemnej komunikacji wielu testowanych urządzeń (DUT) można stworzyć dokładniejszą symulację końcowego systemu; oraz 4) Wydajność ogólnej symulacji można łatwo zwiększyć w klastrze obrazów SSI lub komputerze wieloprocesorowym, nawet jeśli silnik symulacyjny ModelSim nie jest wielowątkowy. Ze względu na implementację wejścia / wyjścia pliku (I / O) dla behawioralnego VHDL, ModelSim nie może bezpośrednio odczytywać ani zapisywać tych FIFO. Obejście tego ograniczenia pokazano za pomocą interfejsu języka obcego ModelSim (FLI). W tym dokumencie pokazano również roboczy przykład zastosowania tej metody do weryfikacji nowej generacji procedur zmiennoprzecinkowych w VHDL. W szczególności pakiet oprogramowania IEEE Compliance Checker typu open source, napisany w C ++,
Problem z FIFO wymagającymi zagranicznego interfejsu programistycznego polega na tym, że operacje we / wy pliku VHDL nie radzą sobie płynnie z blokowaniem, dopóki dane nie będą dostępne.
Niestety praca nie jest dostępna w Internecie.
Model Sim ® Interfejs języka obcego , wersja 5.6d , PDF 3,4 MB.
Korzystanie z interfejsu języka obcego ModelSim dla c - symulacji VHDL i sterowania symulatorami na platformie Linux x86 Andre Pool - fli@andrepool.com - wersja 1.5 - utworzono w listopadzie 2012 r., Ostatnia aktualizacja wrzesień 2013 , PDF, 320 KB (i nigdy nie wspomina o FIFO) .
Używanie interfejsu ModelSim w języku obcym do c - symulacji VHDL i sterowania symulatorami na platformie Linux x86 (pasujące repozytorium kodu github).
Jest trochę więcej otwartego źródła, używając wywołań funkcji VHPI Foreign w ghdl: vhdl
/ src / sim / ghdlex_mein w master · texane / vhdl · GitHub .
I coś, co wygląda na aktualizację Martina Strubela na liście GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz z datą dla fifo.c z 14 kwietnia 2014 r.
FLI z definicji zablokuje Cię w Modelsim, nie jestem pewien stanu ich obsługi VHPI (która jest częścią IEEE Std 1076-2008, VHDL LRM).
Korzystanie z gniazda lub pliku FIFO pozwala procesowi programowemu i sprzętowemu działać z różnymi prędkościami, zapewniając buforowanie szybkości. Nie zawsze jest to konieczne, jeśli twój system oprogramowania jest o rząd wielkości szybszy niż symulacja sprzętowa (i ogólnie jest).
Podjęto starania, aby zapewnić VHDL funkcjonalność UNIX (POSIX), zobacz Pakiety VHDL domeny publicznej , które zawierają wskaźnik do wcześniejszej pracy SNUG San Jose 2002 1 Funkcje C / UNIX dla testerów VHDL Funkcje C / UNIX dla testerów VHDL wraz ze slajdem zestaw z dodatkowymi uwagami na temat rur uniksowych i rsh . To pokazuje, jak zachować nazwane potoki otwarte. Można również pobrać cały kod VHDL. Uważam, że doprowadziłoby to do najłatwiejszego sposobu osiągnięcia twojego celu.
Czy jest coś rodzimego dla Modelsim, które pozwala ci podłączyć się do rury? Prawdopodobnie nie, tym bardziej pod Windows. Czy da się to zrobić? Tak, ale nie jest to droga dla osób o słabych nerwach. Możesz zablokować jeden koniec lub drugi lub ewentualnie oba, czekając na dostępność danych.
Zagraniczny interfejs programowania teoretycznie pozwala na odrodzenie procesu potomnego dla jednego lub drugiego końca „potoku”, co oznacza również, że można użyć modelu pamięci współdzielonej do komunikacji między dwoma końcami.