Symulacja oprogramowania RENESAS ForgeFPGA

Symulacja oprogramowania RENESAS ForgeFPGA

Ważne informacje

Symulacja to technika stosowania różnych bodźców wejściowych do projektu w różnych momentach, aby sprawdzić, czy kod RTL zachowuje się w zamierzony sposób. Służy do sprawdzenia wytrzymałości konstrukcji. Symulacja pozwala użytkownikowi view schemat czasowy powiązanych sygnałów, aby zrozumieć, jak opis projektu w projekcie file zachowuje się.

Stanowiska testowe to fragmenty kodu używane do symulacji. Prosty stół testowy utworzy instancję testowanej jednostki (UUT) i steruje danymi wejściowymi. Oprogramowanie Go Configure wykorzystuje Icarus Verilog (iVerilog) i GTKWave do obserwacji przebiegów symulacji z bodźcem dostarczonym na stole testowym.

W tym dokumencie opisano kroki, które należy podjąć podczas instalacji Ikara w systemie oraz jak przeprowadzić pomyślną symulację.

Instalowanie Icarusa Verilog

a. Zainstaluj najnowszą wersję Icarus Verilog (IVerilog) z https://bleyer.org/icarus/
b. Pamiętaj, aby dodać IVerilog do PATH i pozwolić mu zainstalować GTKWave (patrz rysunek 1)
Instalowanie Icarusa Verilog

c. Otwórz oprogramowanie Go Configure i wybierz część: SLG47910(Rev BB), aby otworzyć warsztat Forge (patrz rysunek 2).
Instalowanie Icarusa Verilog

d. Kliknij Edytor FPGA na środku paska narzędzi u góry lub możesz także dwukrotnie kliknąć strukturę rdzenia FPGA na środku okna.
Instalowanie Icarusa Verilog

e. Otworzy się nowe okno zwane Warsztatem Kuźni. Na górnym pasku narzędzi menu kliknij Opcje → Ustawienia. W oknie dialogowym Ustawienia przejdź do Narzędzia na karcie Ustawienia użytkownika. Odznacz pole Użyj „środowiska systemowego” zarówno dla Icarus Verilog, jak i GTKWave. Dodaj ścieżkę do Iverilog i GTKWave zapisanych w systemie w podanym miejscu (patrz rysunek 4).
Instalowanie Icarusa Verilog

Wszystko gotowe do symulacji stanowiska testowego, a powyższe kroki zapewniają, że GTKWave uruchomi się automatycznie podczas symulowania stanowiska testowego w oprogramowaniu Go Configure.

Stanowisko testowe

Najważniejszym krokiem w pomyślnym wdrożeniu dowolnego systemu jest weryfikacja projektu i jego funkcjonalności. Weryfikacja złożonego systemu po wdrożeniu sprzętu nie jest mądrym wyborem. Jest nieefektywne pod względem pieniędzy, czasu i zasobów. Stąd w przypadku FPGA do testowania kodu źródłowego Verilog wykorzystywany jest testbench.

Załóżmy, że mamy dane wejściowe składające się z 11 bitów i chcemy przetestować urządzenie pod kątem wszystkich możliwych wartości kombinacji wejściowych, tj. (211). Ponieważ jest to bardzo duża liczba kombinacji, nie da się tego sprawdzić ręcznie. W takich przypadkach bardzo przydatne są stanowiska testowe, ponieważ można automatycznie przetestować projekt dla wszystkich możliwych wartości, a tym samym potwierdzić niezawodność projektu testu. Stanowiska testowe Verilog służą do symulacji i analizy projektów bez konieczności stosowania żadnego fizycznego urządzenia sprzętowego.

Testowany projekt, w skrócie DUT, to syntezowalny moduł funkcjonalności, który chcemy przetestować. Innymi słowy, chcielibyśmy przetestować projekt obwodu. Możemy opisać nasz testowany obiekt za pomocą jednego z trzech stylów modelowania w Verilog – na poziomie bramki, przepływu danych lub behawioralnym.

Stanowiska testowego nie można syntetyzować, dlatego używa się go wyłącznie do celów symulacyjnych. Pozwala to użytkownikowi na użycie pełnego zakresu konstrukcji Verilog, np. słów kluczowych takich jak „for”, „$display” i „$monitor” itp. do pisania testów. Prosty stół testowy utworzy instancję testowanej jednostki (UUT) lub testowanego urządzenia (DUT) i steruje wejściami.

Zrozumienie stanowiska testowego

Zrozumienie stanowiska testowego

Definicja skali czasu w Testbenchu

Podczas symulacji oprogramowanie musi wiedzieć, w jaki sposób zdefiniowano czas. Jednostka opóźnienia jest określana za pomocą dyrektywy `timescale, która określa jednostkę czasu i precyzję dla modułów, które po niej następują. Skala czasu pomaga w określeniu, co #1 oznacza w kategoriach czasu. # służy do określenia opóźnienia wprowadzanego w systemie zgodnie z jednostką czasu określoną na skali czasu. Zatem #1 oznacza 1 ns opóźnienia, jeśli jednostka czasu jest wyrażona w ns.

Składnia:
`skala czasu / /

jednostka_czasu to ilość czasu, jaką reprezentuje opóźnienie nr 1. Podstawa time_precision reprezentuje liczbę miejsc dziesiętnych dokładności, których należy użyć w odniesieniu do jednostek czasu. (Patrz linia 23 na rysunku 5)

Możemy użyć konstrukcji skali czasu, aby użyć różnych jednostek czasu w tym samym projekcie. Użytkownik musi pamiętać, że specyfikacji opóźnień nie można syntetyzować i nie można ich przekształcić w logikę sprzętową. Funkcje opóźnienia służą wyłącznie celom symulacyjnym. $czas i $w czasie rzeczywistym funkcje systemowe zwracają aktualny czas, a domyślny format raportowania można zmienić za pomocą innego zadania systemowego $timeformat .

Exampna: 

`skala czasu 10us/100ns
`skala czasu 1ns/1ps
#10 reset = 1; // opóźnia sygnał o 10 ns
#0.49 $display( „T = %0t w czasie #0.49”, $w czasie rzeczywistym) ;

Określone opóźnienie wynosi #0.49, czyli jest mniejsze niż połowa jednostki czasu. Jednakże precyzja czasu jest określona na 1ps, dlatego symulator nie może być mniejszy niż 1ns, co powoduje zaokrąglenie podanej instrukcji opóźnienia i uzyskanie 0ns. Zatem to oświadczenie nie przewiduje żadnego opóźnienia.

Dziennik symulacji: 

T = 1 w czasie #0.49

Deklaracja modułu

Deklaracja modułu w dowolnym środowisku testowym różni się od głównego kodu Verilog. W środowisku testowym moduł jest zadeklarowany bez żadnych portów terminali. (Patrz linia 25 na rysunku 5)

Składnia: 

moduł ;

Po deklaracji modułu następuje zdefiniowanie sygnałów wejściowych i wyjściowych zdefiniowanych wcześniej w projekcie głównym file.
Podczas symulacji wykorzystujemy dwa typy sygnałów do sterowania i monitorowania. Typ danych reg będzie przechowywać wartość do czasu przypisania mu nowej wartości. Do tego typu danych można przypisać wartość tylko w bloku zawsze lub początkowym.
Typ danych wire przypomina typ połączenia fizycznego. Będzie przechowywać wartość sterowaną przez port, instrukcję przypisania lub rej. Tego typu danych nie można używać w bloku początkowym ani zawsze. W tej sekcji wykonuje się także wszelkie deklaracje parametrów i liczb całkowitych.

Exampna:
Reg a, b; // dane wejściowe w kodzie HDL są zdefiniowane jako reg w testbenchu
Przewód Y; // sygnał wyjściowy w HDL jest zdefiniowany jako przewód w testbenchu

Instancja DUT

Celem stanowiska testowego jest sprawdzenie, czy nasz moduł DUT działa. Dlatego musimy utworzyć instancję naszego modułu projektowego, aby przetestować moduł.

Składnia: 

(. (sygnał 1), . sygnał1>(sygnał2));

Exampna:

ALU d0 (.a(a), // sygnał „a” w ALU należy podłączyć do „a” w module ALU_tb
.b(b), // sygnał „b” w ALU należy podłączyć do „b” w module ALU_tb
.c(c)) ;// sygnał „c” w ALU należy podłączyć do „c” w module ALU_tb

Utworzyliśmy instancję modułu DUT ALU w module testowym. Nazwa instancji (d0) jest wyborem użytkownika. Sygnały z kropką „.” przed nimi znajdują się nazwy sygnałów wewnątrz modułu ALU, natomiast przewód lub rejestr, do którego podłączają się na stanowisku probierczym, znajduje się obok sygnału w nawiasie (). Zaleca się zakodowanie każdego połączenia portu w osobnej linii, aby każdy komunikat o błędzie kompilacji poprawnie wskazywał numer linii, w której wystąpił błąd. Ponieważ powiązania te są tworzone z nazwy, kolejność ich występowania jest nieistotna.

Instancję DUT można również wykonać dla modułów, w których moduł testbench ma różne nazwy sygnałów. Podczas tworzenia instancji ważne jest prawidłowe mapowanie sygnałów.

Exampplik : 

ALU d0 (.a(A), // sygnał „a” w ALU należy podłączyć do „A” w module ALU_tb
.clk(clock), // sygnał „clk” w ALU należy podłączyć do modułu „clock” ALU_tb
.out(OUT)) ; // sygnał „out” w ALU należy podłączyć do „OUT” w module ALU_tb

Zawsze i blok początkowy w środowisku testowym

W Verilog istnieją dwa kolejne bloki, początkowy i zawsze. To właśnie w tych blokach aplikujemy bodziec.

Blok początkowy

Blok początkowy, który jest wykonywany tylko raz i kończy się wraz z wykonaniem ostatniej linii bloku. Bodziec jest zapisywany w bloku początkowym. (Patrz linie 54-72 na rysunku 5)

Składnia:
..
początkowy początek
$zrzutfile();
$zmienne zrzutu();
..(wprowadź bodziec)
koniec

blok początkowy rozpoczyna swoje wykonywanie na początku symulacji w chwili t = 0. Zaczynając od pierwszej linii pomiędzy początkiem i końcem, każda linia jest wykonywana od góry do dołu, aż do osiągnięcia opóźnienia. Po osiągnięciu opóźnienia wykonanie tego bloku czeka, aż upłynie czas opóźnienia (10 jednostek czasu), a następnie ponownie rozpoczyna wykonywanie.
Użytkownik może zdefiniować bodźce za pomocą pętli (for, while, if-else) również wewnątrz tego początkowego bloku, zamiast wpisywać ręcznie wszystkie kombinacje.
Blok początkowy

 

Exampplik :
Początek początkowy
A = 0; b = 0; // rozpocznij wykonanie
#10 a = 0; b = 1; // wykonanie następuje w czasie t = 10 jednostek
#10 a = 1; b = 0; // wykonanie następuje w czasie t = 20 jednostek
koniec

Wysypisko Files

Kolejną rzeczą, o której należy pamiętać, jest deklaracja $wysypiskofiles i $zrzuty wewnątrz bloku początkowego (patrz linie 55-56 na rysunku 5). $wysypiskofile służy do zrzucania zmian wartości sieci i rejestrów w a file to jest nazwane jako jego argument.

Na przykładampna:

$wysypiskofile(„alu_tb.vcd”);

porzuci zmiany w a file o nazwie alu_tb.vcd. Zmiany są rejestrowane w pliku a file zwany VCD file co oznacza zrzut zmiany wartości. VCD (zrzut zmiany wartości) przechowuje wszystkie informacje o zmianach wartości. Nie możemy mieć więcej niż jednego zrzutu $file wypowiedzi w symulacji Verilog.

$zrzuty służy do określenia, które zmienne mają zostać zrzucone (w pliku file wspomniany przez $dumpfile). Najprostszym sposobem użycia go jest użycie bez argumentu. Ogólna składnia $dumpvars jest następująca

$zrzuty ( <, >);

Zasadniczo możemy określić, które moduły i które zmienne w modułach zostaną zrzucone. Najprostszym sposobem użycia tej opcji jest ustawienie poziomu na 0 i nazwy modułu jako modułu najwyższego (zazwyczaj najwyższego modułu środowiska testowego).

$zrzuty(0, alu_tb);

Gdy poziom jest ustawiony na 0 i określona jest tylko nazwa modułu, zrzuca WSZYSTKIE zmienne tego modułu i wszystkie zmienne we WSZYSTKICH modułach niższego poziomu utworzonych przez ten moduł najwyższy. Jeśli jakikolwiek moduł nie zostanie utworzony przez ten najwyższy moduł, wówczas jego zmienna nie zostanie uwzględniona. Jeszcze jedno, deklaracja $wysypiskofile musi wystąpić przed $dumpvars lub jakimkolwiek innym zadaniem systemowym, które określa zrzut. Te wysypiska files należy zadeklarować przed wprowadzeniem bodźca, w przeciwnym razie żadna wartość nie zostanie zapisana w tym zrzucie files.

Zawsze blokuj

W przeciwieństwie do początkowych instrukcji, blok zawsze jest wykonywany wielokrotnie, chociaż wykonanie rozpoczyna się w chwili t = 0. Np.ample, sygnał zegara jest niezbędny do działania obwodów sekwencyjnych, takich jak przerzutniki. Trzeba go dostarczać w sposób ciągły. Możemy zatem napisać kod działania zegara na stanowisku testowym w następujący sposób (patrz linia 52 na rysunku 5):

zawsze
#10 clk = ~clk;
moduł końcowy

Powyższa instrukcja zostanie wykonana po 10 ns, zaczynając od t = 0. Wartość clk zostanie odwrócona po 10 ns od poprzedniej wartości. W ten sposób generowany jest sygnał zegarowy o szerokości impulsu 20 ns. Dlatego też zestawienie to generuje sygnał o częstotliwości 50 MHz. Należy zauważyć, że inicjalizacja sygnału odbywa się przed blokiem zawsze. Jeśli nie wykonamy części inicjalizacji, sygnał clk będzie miał wartość x od t – 0, a po 10 ns zostanie odwrócony do innego x.

Samokontrolujący się stół testowy

Samosprawdzający się testbench zawiera instrukcję sprawdzającą bieżący stan.

  • $wyświetlacz zadania systemowe służą głównie do wyświetlania komunikatów debugowania w celu śledzenia przebiegu symulacji

początkowy początek
ZA = 0; b = 0; c = 0; #10; // zastosuj dane wejściowe, czekaj
if(y! == 1) rozpocznij
$display(”000 nie powiodło się”); //sprawdzać
c = 1; #10; //zastosuj dane wejściowe, czekaj
koniec
else if ( y ! == 0) rozpocznij
$display(“001 nie powiodło się”) // sprawdzenie
b = 1; c = 0; #10; koniec
inaczej if(y!==0)
$wyświetlacz („010 nie powiodło się”); //sprawdzać
koniec
moduł końcowy

$wyświetlacz służy do wyświetlania wartości zmiennych, ciągów znaków lub wyrażeń. Z powyższego przykładuample, ilekroć dowolna pętla if-else zostanie spełniona, dziennik symulatora wyświetli odpowiedni $wyświetlacz oświadczenie. Domyślnie na końcu ciągów znajduje się znak nowej linii.

$wyświetlacz („czas = %t, A = %b, B = %b, C = % b”, $czas, A, B, C);

Znaki wymienione w cudzysłowie zostaną wydrukowane w niezmienionej postaci. Litera wraz z % oznacza format ciągu. Używamy %b do reprezentowania danych binarnych. Możemy użyć %d, %h, %o do przedstawienia odpowiednio liczb dziesiętnych, szesnastkowych i ósemkowych. %g służy do wyrażania liczb rzeczywistych. Zostaną one zastąpione wartościami spoza cudzysłowu w podanej kolejności. Na przykładample, powyższa instrukcja zostanie wyświetlona w logu symulacji jako: czas = 20, A = 0, B =1, C = 0

Tabela 1. Formaty tabel Verilog

Argument Opis
%h, %H Wyświetlanie w formacie szesnastkowym
%d, %D Wyświetlanie w formacie dziesiętnym
%b, %B Wyświetlanie w formacie binarnym
%m, %M Wyświetl nazwę hierarchiczną
%SS Wyświetl jako ciąg
%t, %t Wyświetlanie w formacie czasu
%f, %F Wyświetl wartość „rzeczywistą” w formacie dziesiętnym
%e, %E Wyświetl wartość „rzeczywistą” w formacie wykładniczym

$wyświetlacz głównie wypisuje dane lub zmienną taką, jaka jest w danym momencie, tak jak printf w C. Musimy wspomnieć o $wyświetlacz dla dowolnego tekstu, jaki musimy view w dzienniku symulacji.

  • $czas

$czas to zadanie systemowe, które zwróci aktualny czas symulacji.

  • $monitor

$monitor będzie monitorować dane lub zmienną, dla której jest zapisana, i za każdym razem, gdy zmienna ulegnie zmianie, zostanie wydrukowana
zmieniona wartość. Osiąga podobny efekt, wywołując $display po każdym otrzymaniu któregokolwiek z jego argumentów
zaktualizowany. $monitor przypomina zadanie uruchamiane w tle głównego wątku, który monitoruje i
wyświetla zmiany wartości swoich zmiennych argumentów. $monitor ma taką samą składnię jak $wyświetlacz.

$monitor(„ czas = %t, A = %b, B = %b, C = % b”, $czas, A, B, C);
Samokontrolujący się stół testowy

Na rysunku 7 widać, że dodano nowe linie kodów w celu samooceny środowiska testowego. Umieszczenie $wyświetlacz i $monitor instrukcje w różnych sekcjach środowiska testowego dadzą różne wyniki (patrz rysunek 8). $czas wspomniany w tych instrukcjach drukuje czas, dla którego drukowana jest wartość. W tym samym czasie jednostka mówi 170000, możemy zobaczyć, jak istnieje różnica w wartościach A i B ze względu na $wyświetlacz i $monitor oświadczenia.
Samokontrolujący się stół testowy

Oprogramowanie GTKWave

GTKWave to w pełni funkcjonalna fala GTK+ viewer dla Unix, Win32 i Mac OSX, który czyta LXT, LXT2, VZT, FST i GHW files, a także standardowe VCD/EVCD filesi i pozwala na nie viewing. To jest oficjalne webstrona jest pod adresem http://gtkwave.sourceforge.net/ . Zalecane jest GTKWave viewprzez narzędzie symulacyjne Icarus Verilog.

Po pomyślnym utworzeniu stanowiska testowego w celu przetestowania funkcjonalności projektu, użytkownik może teraz używać oprogramowania GTKWave do view przebiegi.

Aby uruchomić oprogramowanie GTKWave do view przebiegów należy kliknąć przycisk Symuluj testbench znajdujący się na górze paska narzędzi lub z menu głównego Narzędzia → Symulacja → Symuluj testbench. Jeżeli nie ma błędów składniowych, to w zależności od projektu GTKWave powinna zostać uruchomiona automatycznie lub wyniki bodźców na stole testowym zostaną wyświetlone w sekcji Logger okna.

Oprogramowanie GTKWave otwiera zrzut w formacie .vcdfile automatycznie. Okno GTKWave nie wyświetla przebiegu po jego otwarciu. Daje to użytkownikowi możliwość wyboru, które sygnały chce view i obserwuj. Aby wybrać sygnał, użytkownik musi wyświetlić, należy kliknąć nazwę swojego modułu/instancji po lewej stronie okna pod zakładką SST. Klikając + każdej instancji, w dolnej części możesz zobaczyć sygnały powiązane z tą instancją. Następnie możesz przeciągnąć i upuścić żądany sygnał lub kliknąć go dwukrotnie, aby wyświetlić go w oknie Sygnały. Możesz także zaznaczyć wszystkie (CTRL+A) i wstawić je do okna sygnałów (patrz rysunek 9).
Oprogramowanie GTKWave

Sygnały zostały teraz dodane do okna sygnałów, ale nie zostały jeszcze symulowane. Po dodaniu żądanych sygnałów do okna sygnałów kliknijSymbol aby dopasować sygnały do ​​aktualnej szerokości okna, a następnie ponownie załadować sygnały z reloadSymbol symbol znajdujący się na pasku narzędzi. Możesz teraz zobaczyć sygnały z ich odpowiednimi wartościami.

Wartości sygnału

Domyślnie wartości sygnałów są w formacie szesnastkowym, a wszystkie fale mają kolor zielony (jeśli działają poprawnie).

Użytkownik może zmienić właściwości tych sygnałów, klikając sygnał prawym przyciskiem myszy i wybierając Format danych lub Format koloru. Użytkownik może także wstawić pusty sygnał, aby utworzyć sekcje pomiędzy grupami sygnałów. Gdy uzyskasz pożądany efekt optyczny, możesz zapisać swoje konfiguracje, przechodząc File → Napisz Zapisz File.

Pasek narzędzi GTKWave

Pasek narzędzi (patrz rysunek 10) umożliwia użytkownikowi wykonanie podstawowych funkcji sygnału. Omówmy każdą opcję na pasku narzędzi od lewej do prawej.
Pasek narzędzi GTKWave

  1. Opcje menu: W ramach tej opcji możemy view wszystkie różne funkcje oprogramowania, których można używać do zabawy z oprogramowaniem. Szczegóły tej opcji menu opisano w rozdziale 8 niniejszego podręcznika użytkownika.
  2. Wytnij ślady: Służy do usuwania/odcinania wybranego sygnału z okna sygnału
  3. Kopiuj ślady: Służy do kopiowania wybranego sygnału z okna sygnału
  4. Wklej ślady: Skopiowany/wycięty ślad można wkleić w innym miejscu okna sygnału
  5. Zoom Fit: Służy do dopasowania sygnałów do rozmiaru okna wybranego przez użytkownika
  6. Powiększ: Służy do powiększania okna sygnału
  7. Oddal: Służy do pomniejszania okna sygnału
  8. Powiększ Cofnij: służy do cofania przybliżania/pomniejszania okna sygnału
  9. Powiększ, aby rozpocząć: spowoduje to powiększenie okna sygnału i wyświetlenie czasu rozpoczęcia sygnałów.
  10. Powiększ do końca: spowoduje to powiększenie okna sygnału, wyświetlającego czas zakończenia sygnałów
  11. Znajdź poprzednią krawędź: Spowoduje to przesunięcie znacznika w lewą stronę, wskazując poprzednią krawędź
  12. Znajdź następną krawędź: Spowoduje to przesunięcie znacznika w prawo, wskazując następną krawędź
  13. Przewiń dolne/górne wiązanie: za pomocą tego możemy ustawić przedział czasowy, w którym użytkownik chce wyświetlić. Na przykładample możemy ustawić ramkę czasową od 0 sekund do 500 ns, wyświetli ona tylko sygnały o tym czasie trwania.
  14. Przeładować: Przeładowanie następuje za każdym razem, gdy następuje zmiana wyświetlanego sygnału. Załaduje się ponownie i wyświetli sygnał zgodnie z nowymi parametrami. Na przykładample, po zmianie przedziału czasowego sygnału, musimy ponownie załadować sygnał, aby wyświetlić sygnał w nowo ustawionym przedziale czasowym.

Opcje menu

Z lewego górnego rogu oprogramowania GTKWave użytkownik może uzyskać dostęp do opcji menu, klikając trzy pionowe linie (patrz Rysunek 11). Użytkownik może znaleźć następujące opcje w opcjach menu:
Opcje menu

File

Ten File podmenu zawiera różne pozycje związane z dostępem files, import-eksport VCD files, drukowanie i czytanie/pisanie filei wyjście.

Redagować

Podmenu Edycja służy do wykonywania różnych funkcji narzędziowych, takich jak zmiana reprezentacji danych wartości w podoknie fali. Korzystając z opcji znajdujących się w podmenu Edycja, użytkownik może zmienić format danych sygnałów, zmienić ich kolejność, przesuwać, przycinać, podświetlać, grupować sygnały, komentować sygnały, zmieniać kolor sygnałów itp.

Szukaj

Podmenu Szukaj służy do wyszukiwania nazw sieciowych i wartości. Pomaga wykonywać funkcje na różnych poziomach hierarchii sygnałów i instancji na płycie VCD file.

Czas

Podmenu Czas zawiera zestaw funkcji realizowanych przez przyciski Nawigacji i Panelu Stanu.
Umożliwia proste, związane z czasem funkcje, takie jak powiększanie, przechodzenie do określonego punktu czasowego, przesuwanie sygnału w określonym kierunku itp.

Znacznik

Podmenu znacznika służy do wykonywania różnych manipulacji na znaczniku, a także do sterowania przewijaniem poza ekranem.
Umożliwia funkcjonalność dodawania wielu znaczników w oknie sygnału. Dopuszczalnych jest maksymalnie 26 znaczników imion, a czasy dla każdego muszą być różne.

a. Aby dodać znaczniki w oknie sygnału
Kliknij lewym przyciskiem myszy żądany punkt, w którym chcesz umieścić znacznik, i naciśnij ALT + N. Spowoduje to umieszczenie nazwanego znacznika (A, B, C itp.) w wymaganym punkcie. Użytkownik może kontynuować tę czynność dla 26 różnych lokalizacji czasowych.
Aby porównać wartość czasu na wszystkich znacznikach miejsc, Menu → Znaczniki → Pokaż Zmień dane znacznika.
Spowoduje to otwarcie okna z wartością czasu przy każdym znaczniku. Użytkownik może ręcznie zanotować wartość czasu przy każdym umieszczonym znaczniku i odjąć ją, aby obliczyć różnicę czasu pomiędzy 2 znacznikami.
b. Aby usunąć znacznik w oknie sygnału

Użytkownik może przejść do Menu → Znaczniki → Zbierz nazwany znacznik. Spowoduje to usunięcie ostatniego znacznika umieszczonego w oknie sygnału. Użytkownik może usunąć wszystkie nazwane znaczniki, przechodząc do Menu → Znaczniki → Zbierz wszystkie nazwane znaczniki (Rysunek 12).
Opcje menu

Na rysunku 13 możemy zobaczyć, jak zmieniły się kolory sygnału. Możesz także zobaczyć pusty sygnał dodany do okna sygnału z komentarzem – pusty sygnał.
Zwróć także uwagę na obecność 6 nazwanych znaczników (A – E) i obliczenie wartości czasu pomiędzy tymi znacznikami w ps.
Opcje menu

View

Ten View podmenu służy do kontrolowania różnych atrybutów związanych z graficznym renderowaniem pozycji statusu, a także wartości w podoknie sygnału. Za pomocą tego menu możesz przekonwertować okno sygnału na czarno-białe lub kolorowe. The View podmenu umożliwia także zmianę wymiaru czasu w zakresie od sekund (sekund) do fikosekund (fs). Użytkownik może znaleźć tę opcję View → Skaluj do wymiaru czasu → fs.

Pomoc

Podmenu pomocy zawiera opcje umożliwiające włączenie pomocy on-line oraz wyświetlenie informacji o wersji programu.

Wniosek

Dokument ten został stworzony, aby pomóc użytkownikowi w pomyślnej symulacji projektu i weryfikacji funkcjonalności poprzez poprawienie projektu potrzebnego stanowiska testowego i użycie Icarus Verilog wraz z GTKWave do wyświetlenia przebiegów i obserwacji wyników.

Historia rewizji

Rewizja Data Opis
1.00 20 maja 2024 r. Pierwsze wydanie.

R19US0011EU0100 Wersja 1.0
20 maja 2024 r.
© 2024 Renesas Electronics
Logo

Dokumenty / Zasoby

Symulacja oprogramowania RENESAS ForgeFPGA [plik PDF] Instrukcja użytkownika
REN_r19us0011eu0100, Symulacja oprogramowania ForgeFPGA, Oprogramowanie ForgeFPGA, ForgeFPGA, Symulacja ForgeFPGA, Symulacja oprogramowania, Symulacja, Oprogramowanie

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *