RENESAS ForgeFPGA Softwaresimulation
Wichtige Informationen
Simulation ist eine Technik, bei der zu verschiedenen Zeitpunkten verschiedene Eingangsreize auf das Design angewendet werden, um zu prüfen, ob sich der RTL-Code wie beabsichtigt verhält. Sie wird verwendet, um die Robustheit des Designs zu überprüfen. Simulation ermöglicht dem Benutzer, view das Zeitdiagramm der zugehörigen Signale, um zu verstehen, wie die Designbeschreibung im Design file verhält sich.
Testbenches sind Codeteile, die zur Simulation verwendet werden. Ein einfacher Testbench instanziiert die zu testende Einheit (Unit Under Test, UUT) und steuert die Eingabe. Die Go Configure-Software verwendet Icarus Verilog (iVerilog) und GTKWave, um die Simulationswellenformen mit dem im Testbench bereitgestellten Stimulus zu beobachten.
Dieses Dokument beschreibt die Schritte, die bei der Installation von Icarus auf Ihrem System ausgeführt werden müssen, und wie Sie eine erfolgreiche Simulation durchführen.
Installieren von Icarus Verilog
a. Installieren Sie die neueste Version von Icarus Verilog (IVerilog) von https://bleyer.org/icarus/
b. Achten Sie darauf, IVerilog zum PATH hinzuzufügen und GTKWave installieren zu lassen (siehe Abbildung 1).
c. Öffnen Sie die Go Configure Software und wählen Sie das Teil: SLG47910 (Rev BB), um den Forge Workshop zu öffnen (siehe Abbildung 2).
d. Klicken Sie auf den FPGA-Editor in der Mitte der Symbolleiste oben, oder der Benutzer kann auch auf die FPGA-Kernstruktur in der Mitte des Fensters doppelklicken.
e. Es öffnet sich ein neues Fenster namens Forge Workshop. Klicken Sie in der Menüleiste oben auf Optionen → Einstellungen. Gehen Sie im Dialogfeld „Einstellungen“ unter der Registerkarte „Benutzereinstellungen“ zu „Extras“. Deaktivieren Sie das Kontrollkästchen „Systemumgebung verwenden“ sowohl für Icarus Verilog als auch für GTKWave. Fügen Sie den Pfad zu Iverilog und GTKWave, die in Ihrem System gespeichert sind, in das angegebene Feld ein (siehe Abbildung 4).
Sie sind nun bereit für die Simulation eines Testbench und die obigen Schritte stellen sicher, dass GTKWave automatisch gestartet wird, wenn ein Testbench mit der Go Configure-Software simuliert wird.
Prüfstand
Der wichtigste Schritt bei der erfolgreichen Implementierung eines Systems ist die Überprüfung des Designs und seiner Funktionalität. Die Überprüfung eines komplexen Systems nach der Implementierung der Hardware ist keine kluge Entscheidung. Sie ist in Bezug auf Geld, Zeit und Ressourcen ineffektiv. Daher wird im Fall von FPGA eine Testbench verwendet, um den Verilog-Quellcode zu testen.
Angenommen, wir haben einen Eingang mit 11 Bits und möchten das Gerät für alle möglichen Eingangskombinationswerte testen, also (211). Da dies eine sehr große Anzahl von Kombinationen ist, ist es unmöglich, sie manuell zu testen. In solchen Fällen sind Testbenches sehr nützlich, da Sie das Design automatisch für alle möglichen Werte testen und so die Zuverlässigkeit des Testdesigns bestätigen können. Verilog-Testbenches werden verwendet, um Designs zu simulieren und zu analysieren, ohne dass ein physisches Hardwaregerät erforderlich ist.
Ein zu testender Entwurf, abgekürzt DUT, ist ein synthetisierbares Modul der Funktionalität, die wir testen möchten. Mit anderen Worten ist es das Schaltungsdesign, das wir testen möchten. Wir können unseren DUT mit einem der drei Modellierungsstile in Verilog beschreiben – Gate-Level, Datenfluss oder Verhaltensorientiert.
Ein Testbench ist nicht synthetisierbar und wird daher nur zu Simulationszwecken verwendet. Dies ermöglicht dem Benutzer, eine ganze Reihe von Verilog-Konstrukten zu verwenden, z. B. Schlüsselwörter wie „for“, „$display“ und „$monitor“ usw. zum Schreiben von Testbenches. Ein einfacher Testbench instanziiert die zu testende Einheit (UUT) oder das zu testende Gerät (DUT) und steuert Eingaben.
Eine Testbench verstehen
Zeitskalendefinition in der Testbench
Bei der Simulation muss die Software wissen, wie die Zeit definiert wurde. Die Verzögerungseinheit wird mithilfe der Anweisung `timescale angegeben, die die Zeiteinheit und die Genauigkeit für die ihr folgenden Module angibt. Die `timescale hilft dabei zu bestimmen, was #1 in Bezug auf die Zeit bedeutet. # wird verwendet, um die Verzögerung zu definieren, die in das System gemäß der in timescale angegebenen Zeiteinheit eingeführt werden soll. Daher bedeutet #1 1 ns Verzögerung, wenn die Zeiteinheit in ns angegeben ist.
Syntax:
`Zeitskala / /
time_unit ist die Zeit, die eine Verzögerung von #1 darstellt. Die time_precision-Basis gibt an, wie viele Dezimalstellen der Genauigkeit relativ zu den Zeiteinheiten verwendet werden sollen. (Siehe Zeile 23 in Abbildung 5)
Wir können die Zeitskalenkonstrukte verwenden, um verschiedene Zeiteinheiten im selben Design zu verwenden. Der Benutzer muss bedenken, dass Verzögerungsspezifikationen nicht synthetisierbar sind und nicht in Hardwarelogik umgewandelt werden können. Die Verzögerungsfunktionen dienen ausschließlich Simulationszwecken. $Zeit und $Echtzeit Systemfunktionen geben die aktuelle Zeit zurück und das Standardberichtsformat kann mit einer anderen Systemaufgabe $timeformat geändert werden.
Exampauf:
`Zeitskala 10 us/100 ns
`Zeitskala 1ns/1ps
#10 reset = 1; // verzögert das Signal um 10 ns
#0.49 $display( „T = %0t zur Zeit #0.49“, $realtime) ;
Die angegebene Verzögerung beträgt #0.49, was weniger als eine halbe Zeiteinheit ist. Die Zeitgenauigkeit ist jedoch mit 1 ps angegeben, und daher kann der Simulator nicht kleiner als 1 ns sein, was dazu führt, dass die angegebene Verzögerungsangabe gerundet wird und 0 ns ergibt. Diese Anweisung liefert also keine Verzögerung.
Simulationsprotokoll:
T = 1 zum Zeitpunkt #0.49
Moduldeklaration
Die Moduldeklaration in einem Testbench unterscheidet sich vom Haupt-Verilog-Code. In einem Testbench wird das Modul ohne zugehörige Terminalports deklariert. (Siehe Zeile 25 in Abbildung 5)
Syntax:
Modul ;
Auf die Moduldeklaration folgt die Definition der zuvor im Hauptdesign definierten Eingangs- und Ausgangssignale. file.
Wir verwenden zwei Signaltypen zum Ansteuern und Überwachen von Signalen während der Simulation. Der Datentyp „reg“ behält den Wert, bis ihm ein neuer Wert zugewiesen wird. Diesem Datentyp kann nur im Always- oder Anfangsblock ein Wert zugewiesen werden.
Der Wire-Datentyp ist wie der einer physischen Verbindung. Er enthält den Wert, der von einem Port, einer Zuweisungsanweisung oder einem Register gesteuert wird. Dieser Datentyp kann nicht im Initial- oder Always-Block verwendet werden. Alle Parameter- und Integer-Deklarationen werden ebenfalls in diesem Abschnitt vorgenommen.
Exampauf:
Reg a,b; // die Eingabe im HDL-Code wird im Testbench als reg definiert
Wire y; // Ausgangssignal in HDL wird als Draht im Testbench definiert
DUT-Instanziierung
Der Zweck eines Testbench besteht darin, zu überprüfen, ob unser DUT-Modul funktioniert. Daher müssen wir unser Designmodul in ein Testmodul instanziieren.
Syntax:
(. (signal1), . signal1>(signal2));
Exampauf:
ALU d0 (.a(a), // Signal „a“ in ALU sollte mit „a“ im Modul ALU_tb verbunden werden
.b(b), // Signal „b“ in ALU sollte mit „b“ im ALU_tb-Modul verbunden werden
.c(c)) ;// Signal „c“ in ALU sollte mit „c“ im ALU_tb-Modul verbunden werden
Wir haben das DUT-Modul ALU zum Testmodul instanziiert. Der Instanzname (d0) ist die Wahl des Benutzers. Die Signale mit einem Punkt „.“ davor sind die Namen der Signale innerhalb des ALU-Moduls, während das Kabel oder Register, mit dem sie im Teststand verbunden sind, neben dem Signal in Klammern () steht. Es wird empfohlen, jede Portverbindung in einer separaten Zeile zu codieren, damit jede Kompilierungsfehlermeldung korrekt auf die Zeilennummer verweist, in der der Fehler aufgetreten ist. Da diese Verbindungen nach Namen hergestellt werden, ist die Reihenfolge, in der sie erscheinen, irrelevant.
Die DUT-Instanziierung kann auch für Module durchgeführt werden, bei denen das Testbench-Modul unterschiedliche Signalnamen hat. Bei der Instanziierung ist die korrekte Zuordnung der Signale wichtig.
Example:
ALU d0 (.a(A), // Signal „a“ in ALU sollte mit „A“ im Modul ALU_tb verbunden werden
.clk(clock), // Signal „clk“ in ALU sollte mit dem Modul „clock“ ALU_tb verbunden werden
.out(OUT)); // Signal „out“ in ALU sollte mit „OUT“ im ALU_tb-Modul verbunden werden.
Immer und erster Block in einer Testbench
In Verilog gibt es zwei aufeinanderfolgende Blöcke: initial und always. In diesen Blöcken wenden wir den Stimulus an.
Anfangsblock
Der Anfangsblock, der nur einmal ausgeführt wird und beendet wird, wenn die letzte Zeile des Blocks ausgeführt wird. Der Stimulus wird in den Anfangsblock geschrieben. (Siehe Zeile 54-72 in Abbildung 5)
Syntax:
..
anfänglich beginnen
$dumpfile();
$dumpvars();
..(Stimulus eingeben)
Ende
Der erste Block beginnt seine Ausführung zu Beginn der Simulation zum Zeitpunkt t = 0. Beginnend mit der ersten Zeile zwischen Anfang und Ende wird jede Zeile von oben nach unten ausgeführt, bis eine Verzögerung erreicht ist. Wenn die Verzögerung erreicht ist, wartet die Ausführung dieses Blocks, bis die Verzögerungszeit (10 Zeiteinheiten) abgelaufen ist, und nimmt dann die Ausführung wieder auf.
Der Benutzer kann innerhalb dieses Anfangsblocks auch Reize mithilfe von Schleifen (for, while, if-else) definieren, anstatt alle Kombinationen manuell einzugeben.
Example:
Anfänglicher Beginn
A = 0; b = 0; // Ausführung starten
#10 a = 0; b = 1; // Ausführung erfolgt bei t = 10 Zeiteinheiten
#10 a = 1; b = 0; // Ausführung erfolgt bei t = 20 Zeiteinheiten
Ende
Entsorgen Files
Eine weitere zu beachtende Sache ist die Deklaration von $entsorgenfiles und $dumpvars innerhalb des Anfangsblocks (siehe Zeile 55-56 in Abbildung 5). Das $entsorgenfile wird verwendet, um die Änderungen in den Werten von Netzen und Registern in einem file das wird als sein Argument genannt.
Zum Beispielampauf:
$entsorgenfile(„alu_tb.vcd“);
werden die Änderungen in einem file mit dem Namen alu_tb.vcd. Die Änderungen werden in einer file genannt VCD file das steht für Value Change Dump. Ein VCD (Value Change Dump) speichert alle Informationen über Wertänderungen. Wir können nicht mehr als einen $dump haben.file Anweisungen in der Verilog-Simulation.
Der $dumpvars wird verwendet, um anzugeben, welche Variablen ausgegeben werden sollen (im file erwähnt von $dumpfile). Am einfachsten ist es, es ohne Argument zu verwenden. Die allgemeine Syntax der $dumpvars lautet
$dumpvars ( <, >);
Wir können grundsätzlich angeben, welche Module und welche Variablen in Modulen ausgegeben werden. Die einfachste Möglichkeit, dies zu nutzen, besteht darin, die Ebene auf 0 und den Modulnamen als oberstes Modul (normalerweise das oberste Testbench-Modul) festzulegen.
$dumpvars(0, alu_tb);
Wenn die Ebene auf 0 gesetzt ist und nur der Modulname angegeben ist, werden ALLE Variablen dieses Moduls und alle Variablen in ALLEN Modulen niedrigerer Ebene, die von diesem obersten Modul instantiiert werden, ausgegeben. Wenn ein Modul nicht von diesem obersten Modul instantiiert wird, wird seine Variable nicht abgedeckt. Noch etwas: Die Deklaration von $entsorgenfile muss vor den $dumpvars oder anderen Systemaufgaben stehen, die einen Dump angeben. Diese Dump files müssen vor den Stimulus-Eingängen deklariert werden, sonst wird kein Wert in diesen Dumps gespeichert files.
Immer blockieren
Im Gegensatz zu den anfänglichen Anweisungen wird ein Always-Block wiederholt ausgeführt, obwohl die Ausführung zum Zeitpunkt t = 0 beginnt. Zum BeispielampDas Taktsignal ist für den Betrieb sequentieller Schaltungen wie Flipflops unerlässlich. Es muss kontinuierlich bereitgestellt werden. Daher können wir den Code für den Betrieb des Takts in einem Testbench wie folgt schreiben (siehe Zeile 52 in Abbildung 5):
stets
#10 clk = ~clk;
Endmodul
Die obige Anweisung wird nach 10 ns ab t = 0 ausgeführt. Der Wert des clk wird nach 10 ns vom vorherigen Wert invertiert. Dadurch wird ein Taktsignal mit einer Impulsbreite von 20 ns erzeugt. Daher erzeugt diese Anweisung ein Signal mit einer Frequenz von 50 MHz. Es ist wichtig zu beachten, dass die Initialisierung des Signals vor dem Always-Block erfolgt. Wenn wir den Initialisierungsteil nicht durchführen, ist das clk-Signal von t – 0 x und wird nach 10 ns in ein anderes x invertiert.
Selbstüberprüfender Testbench
Eine selbstüberprüfende Testbench enthält eine Anweisung zum Überprüfen des aktuellen Status.
- $Anzeige Systemaufgaben werden hauptsächlich verwendet, um Debug-Meldungen anzuzeigen und den Ablauf der Simulation zu verfolgen.
anfänglich beginnen
A = 0 ; b = 0 ; c = 0; #10; // Eingabe anwenden, warten
wenn (y ! == 1) beginne
$display( „000 fehlgeschlagen“) ; //überprüfen
c = 1; #10 ; //Eingabe anwenden, warten
Ende
sonst wenn (y ! == 0) beginne
$display(„001 fehlgeschlagen“) // prüfen
b = 1; c = 0; #10 ; Ende
sonst wenn(y!==0)
$display („010 fehlgeschlagen“); //überprüfen
Ende
Endmodul
$Anzeige wird zum Anzeigen von Werten von Variablen, Zeichenfolgen oder Ausdrücken verwendet. Aus dem obigen Beispielample, wenn eine der if-else-Schleifen erfüllt ist, dann wird das Simulatorprotokoll die entsprechenden $ anzeigen.Anzeige Anweisung. Am Ende der Zeichenfolgen steht standardmäßig eine neue Zeile.
$Anzeige („Zeit = %t, A = %b, B = %b, C = % b“, $Zeit, A, B, C);
Die in den Anführungszeichen genannten Zeichen werden so gedruckt, wie sie sind. Der Buchstabe zusammen mit % bezeichnet das Zeichenfolgenformat. Wir verwenden %b, um binäre Daten darzustellen. Wir können %d, %h, %o verwenden, um Dezimal-, Hexadezimal- bzw. Oktalzahlen darzustellen. %g wird verwendet, um reelle Zahlen auszudrücken. Diese werden in der angegebenen Reihenfolge durch die Werte außerhalb der Anführungszeichen ersetzt. Beispiel:ampDie obige Anweisung wird im Simulationsprotokoll wie folgt angezeigt: Zeit = 20, A = 0, B =1, C = 0
Tisch 1. Verilog-Tabellenformate
Argument | Beschreibung |
%h, %H | Anzeige im Hexadezimalformat |
%d, %D | Anzeige im Dezimalformat |
%b, %B | Anzeige im Binärformat |
%m, %M | Hierarchischen Namen anzeigen |
%s, %S | Als Zeichenfolge anzeigen |
%t, %T | Anzeige im Zeitformat |
%f, %F | Anzeige von „real“ im Dezimalformat |
%e, %E | Anzeige von „real“ im Exponentialformat |
$Anzeige druckt hauptsächlich die Daten oder Variablen, wie sie zu diesem Zeitpunkt vorliegen, wie printf in C. Wir müssen $ erwähnen.Anzeige für welchen Text auch immer wir view im Simulationsprotokoll.
- $Zeit
$Zeit ist eine Systemaufgabe, die die aktuelle Zeit der Simulation zurückgibt.
- $Monitor
$Monitor überwacht die Daten oder Variablen, für die es geschrieben wurde, und druckt bei jeder Änderung der Variablen
der geänderte Wert. Es erreicht einen ähnlichen Effekt, wenn $display jedes Mal aufgerufen wird, wenn eines seiner Argumente
aktualisiert. $Monitor ist wie eine Aufgabe, die im Hintergrund des Hauptthreads ausgeführt wird, der überwacht und
zeigt die Wertänderungen seiner Argumentvariablen an. $Monitor hat die gleiche Syntax wie $Anzeige.
$Monitor(„Zeit = %t, A = %b, B = %b, C = % b”, $Zeit, A, B, C);
In Abbildung 7 können Sie erkennen, dass neue Codezeilen zur Selbstevaluierung der Testbench hinzugefügt wurden. Die Platzierung des $Anzeige und $Monitor Anweisungen in verschiedenen Abschnitten der Testbench führen zu unterschiedlichen Ergebnissen (siehe Abbildung 8). $Zeit in diesen Anweisungen erwähnt, druckt die Zeit, zu der der Wert gedruckt wird. Zur gleichen Zeit, Einheit sagen wir 170000, können wir sehen, wie es aufgrund des $ einen Unterschied im Wert für A und B gibtAnzeige und $Monitor Aussagen.
GTKWave-Software
GTKWave ist eine voll funktionsfähige GTK+ Wave viewer für Unix, Win32 und Mac OSX, der LXT, LXT2, VZT, FST und GHW liest files sowie Standard-VCD/EVCD files und ermöglicht ihren viewSeine offizielle webDie Website befindet sich unter http://gtkwave.sourceforge.net/ GTKWave ist die empfohlene viewer durch Icarus Verilog-Simulationstool.
Sobald der Benutzer erfolgreich eine Testbench erstellt hat, um die Funktionalität des Designs zu testen, kann der Benutzer nun die GTKWave-Software verwenden, um view die Wellenformen.
Um die GTKWave-Software zu starten, view Um die Wellenformen anzuzeigen, muss der Benutzer auf die Schaltfläche „Testbench simulieren“ oben in der Symbolleiste oder im Hauptmenü „Tools“ → „Simulation“ → „Testbench simulieren“ klicken. Wenn keine Syntaxfehler vorliegen, sollte GTKWave je nach Design automatisch gestartet werden oder die Ergebnisse der Stimuli im Testbench werden im Abschnitt „Logger“ des Fensters angezeigt.
Die GTKWave-Software öffnet den Dump im VCD-Formatfile automatisch. Das GTKWave-Fenster zeigt die Wellenform nicht an, wenn es geöffnet wird. Dies gibt dem Benutzer die Möglichkeit, auszuwählen, welche Signale er view und beobachten. Um das Signal auszuwählen, das der Benutzer anzeigen möchte, muss er auf den Namen seines Moduls/seiner Instanz auf der linken Seite des Fensters unter der Registerkarte SST klicken. Wenn Sie auf das + jeder Instanz klicken, können Sie im unteren Bereich die Signale sehen, die mit dieser Instanz in Zusammenhang stehen. Dann können Sie das gewünschte Signal per Drag & Drop verschieben oder darauf doppelklicken, um es im Fenster „Signale“ anzuzeigen. Sie können auch alle auswählen (STRG + A) und in das Fenster „Signale“ einfügen (siehe Abbildung 9).
Die Signale werden nun zum Signalfenster hinzugefügt, müssen aber noch simuliert werden. Nachdem Sie die gewünschten Signale zum Signalfenster hinzugefügt haben, klicken Sie auf um die Signale an die aktuelle Breite des Fensters anzupassen und dann die Signale aus dem Reload-Fenster neu zu laden.
Symbol in der Symbolleiste. Sie können jetzt die Signale mit ihren jeweiligen Werten sehen.
Signalwerte
Standardmäßig liegen die Werte der Signale im Hexadezimalformat vor und alle Wellen sind (bei korrektem Ablauf) grün gefärbt.
Der Benutzer kann die Eigenschaften dieser Signale ändern, indem er mit der rechten Maustaste auf das Signal klickt und Datenformat oder Farbformat wählt. Der Benutzer kann auch ein leeres Signal einfügen, um Abschnitte zwischen Signalgruppen zu erstellen. Wenn Sie das gewünschte optische Ergebnis haben, können Sie Ihre Konfigurationen speichern, indem Sie File → Schreiben Speichern File.
GTKWave-Symbolleiste
Über die Symbolleiste (siehe Abbildung 10) kann der Benutzer grundlegende Funktionen für das Signal ausführen. Lassen Sie uns die einzelnen Optionen der Symbolleiste von links nach rechts besprechen.
- Menüoptionen: Mit dieser Option können wir view alle verschiedenen Funktionen der Software, die zum Ausprobieren der Software verwendet werden können. Die Einzelheiten zu dieser Menüoption finden Sie in Abschnitt 8 dieses Benutzerhandbuchs.
- Spuren schneiden: Dient zum Löschen/Ausschneiden des ausgewählten Signals aus dem Signalfenster
- Spuren kopieren: Dient zum Kopieren des ausgewählten Signals aus dem Signalfenster
- Spuren einfügen: Der kopierte/ausgeschnittene Trace kann an einer anderen Stelle im Signalfenster eingefügt werden
- Zoom-Anpassung: Es wird verwendet, um die Signale entsprechend der Größe des Fensters anzupassen, das der Benutzer anzeigen möchte.
- Vergrößern: Dient zum Vergrößern des Signalfensters
- Verkleinern: Dient zum Verkleinern des Signalfensters
- Zoom Rückgängig: wird verwendet, um das Vergrößern/Verkleinern des Signalfensters rückgängig zu machen
- Zum Anfang zoomen: Dadurch wird das Signalfenster vergrößert und die Startzeit der Signale angezeigt.
- Bis zum Ende zoomen: Dadurch wird das Signalfenster vergrößert und die Endzeit der Signale angezeigt
- Vorherige Kante suchen: Dadurch wird der Marker nach links verschoben, um die vorherige Kante anzuzeigen
- Nächste Kante finden: Dadurch wird der Marker nach rechts verschoben, um die nächste Kante anzuzeigen
- Scrollen untere/obere Bindung: Hiermit können wir den Zeitrahmen festlegen, in dem der Benutzer anzeigen möchte. Zum BeispielampWir können den Zeitrahmen beispielsweise auf 0 Sek. bis 500 ns einstellen, es werden nur die Signale mit einer kürzeren Dauer angezeigt.
- Neu laden: Die Schaltfläche „Neu laden“ wird gedrückt, wenn sich das angezeigte Signal ändert. Dadurch wird das Signal gemäß den neuen Parametern neu geladen und angezeigt. Zum BeispielampDas heißt, nachdem wir den Zeitrahmen des Signals geändert haben, müssen wir das Signal neu laden, um das Signal im neu eingestellten Zeitrahmen anzuzeigen.
Menüoptionen
In der oberen linken Ecke der GTKWave-Software kann der Benutzer auf die Menüoptionen zugreifen, indem er auf die drei vertikalen Linien klickt (siehe Abbildung 11). Unter den Menüoptionen findet der Benutzer die folgenden Optionen:
File
Der File Untermenü enthält verschiedene Elemente zum Zugriff auf files, Importieren/Exportieren von VCD files, Drucken und Lesen/Schreiben files und beenden.
Bearbeiten
Das Untermenü „Bearbeiten“ dient zum Ausführen verschiedener Hilfsfunktionen, beispielsweise zum Ändern der Datendarstellung von Werten im Wellenunterfenster. Mit den Optionen im Untermenü „Bearbeiten“ kann der Benutzer das Datenformat der Signale ändern, sie neu anordnen, verschieben, zuschneiden, hervorheben, Signale gruppieren, Signale kommentieren, die Farbe der Signale ändern usw.
Suche
Das Untermenü „Suchen“ dient zur Suche nach Netznamen und -werten. Es hilft bei der Ausführung von Funktionen auf verschiedenen Hierarchieebenen der Signale und Instanzen im VCD. file.
Zeit
Das Zeituntermenü enthält eine Obermenge der Funktionen, die durch die Navigations- und Statusfeldtasten ausgeführt werden.
Es ermöglicht einfache, zeitbezogene Funktionen wie Zoomen, Wechseln zu einem bestimmten Zeitpunkt, Verschieben des Signals in eine bestimmte Richtung usw.
Marker
Über das Markierungsuntermenü können Sie verschiedene Manipulationen an der Markierung vornehmen und das Scrollen außerhalb des Bildschirms steuern.
Es ermöglicht die Funktion, mehrere Markierungen im Signalfenster hinzuzufügen. Es sind maximal 26 Namensmarkierungen zulässig und die Zeiten für alle müssen unterschiedlich sein.
a. So fügen Sie Marker im Signalfenster hinzu
Klicken Sie mit der linken Maustaste auf die gewünschte Stelle, an der der Marker platziert werden soll, und drücken Sie ALT + N. Dadurch wird ein benannter Marker (A, B, C usw.) an der gewünschten Stelle platziert. Der Benutzer kann dies für 26 verschiedene Zeitpositionen wiederholen.
Um die Zeitwerte an allen Ortsmarkierungen zu vergleichen, wählen Sie Menü → Markierungen → Änderungsmarkierungsdaten anzeigen.
Dadurch wird ein Fenster mit dem Zeitwert an jedem Marker geöffnet. Der Benutzer kann den Zeitwert an jedem gesetzten Marker manuell notieren und abziehen, um die Zeitdifferenz zwischen zwei Markern zu berechnen.
b. So entfernen Sie Marker im Signalfenster
Der Benutzer kann zu Menü → Markierungen → Benannte Markierung sammeln gehen. Dadurch wird die letzte benannte Markierung entfernt, die im Signalfenster platziert wurde. Der Benutzer kann alle benannten Markierungen entfernen, indem er zu Menü → Markierungen → Alle benannten Markierungen sammeln geht (Abbildung 12).
In Abbildung 13 können wir sehen, wie die Signalfarben geändert wurden. Sie können auch ein leeres Signal mit dem Kommentar „Leeres Signal“ zum Signalfenster hinzufügen.
Beachten Sie auch das Vorhandensein von 6 benannten Markierungen (A - E) und die Berechnung des Zeitwerts zwischen diesen Markierungen in ps.
View
Der View Das Untermenü dient zur Steuerung verschiedener Attribute, die sich mit der grafischen Darstellung von Statuselementen sowie Werten im Signalunterfenster befassen. Von diesem Menü aus können Sie das Signalfenster auch in Schwarzweiß oder Farbe umwandeln. Das View Untermenü können Sie auch die Zeitdimension von Sekunden (Sek.) bis Fikosekunden (fs) ändern. Der Benutzer findet diese Option View → Auf Zeitdimension skalieren → fs.
Helfen
Das Hilfe-Untermenü enthält Optionen zum Aktivieren der Online-Hilfe sowie zum Anzeigen von Informationen zur Programmversion.
Abschluss
Dieses Dokument wurde erstellt, um den Benutzer bei der erfolgreichen Simulation seines Designs und der Überprüfung der Funktionalität zu unterstützen, indem der Entwurf des erforderlichen Testbench korrigiert und Icarus Verilog zusammen mit GTKWave verwendet wird, um die Wellenformen anzuzeigen und die Ergebnisse zu beobachten.
Änderungsverlauf
Revision | Datum | Beschreibung |
1.00 | 20. Mai 2024 | Erstveröffentlichung. |
R19US0011EU0100 Rev.1.0
20. Mai 2024
© 2024 Renesas Electronics
Dokumente / Ressourcen
![]() |
RENESAS ForgeFPGA Softwaresimulation [pdf] Benutzerhandbuch REN_r19us0011eu0100, ForgeFPGA Softwaresimulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA Simulation, Softwaresimulation, Simulation, Software |