Tutorials im Zusammenhang mit Verilog

Transcription

Tutorials im Zusammenhang mit Verilog
Tutorials im Zusammenhang
mit Verilog-Simulation
Installation, Konfiguration, Simulation
15. Oktober 2008
Autoren: Wolfgang Heenes, Jacqueline Vogel, Joscha Drechsler
Zusammenstellung: Joscha Drechsler
joscha_d@rbg.informatik.tu-darmstadt.de
FB Informatik
FG Rechnerarchitektur
1
Inhaltsverzeichnis
1 Simulation mit dem Xillinx ISE WebPack
1.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Erstellung und Simulation eines Projektes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
2 Tutorial für Icarus und GTKWave
2.1 Icarus Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 GTKWave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
3 Tutorial für Integration von Icarus Verilog und GTKWave in Eclipse unter Windows
3.1 Verwendete Pakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Eclipse developement platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2 Icarus Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 „Verilog Editor“ Plugin für Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.4 Gimp Tool Kit (GTK) for Windows . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.5 GTKWave (Win32 Version) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Eclipse developement platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Icarus Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3 Gimp Tool Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.4 GTKWave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.5 Verilog Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Einstellen der Verilog-Ansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Erstellen des Verilog-Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3 Konfiguration des Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Beispiel und Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Die Testumgebung testbed.v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 Das Modul clockInverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3 Ausgabe der Waveform in GTKWave . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
10
10
10
10
10
10
10
11
11
11
13
13
14
16
18
18
19
19
4 Tutorial für Quartus II
4.1 Anlegen eines Projekts . . . .
4.2 Eingabe eines Design-Files . .
4.3 Übersetzung des Design-Files
4.4 Simulation des Design-Files .
4.5 Benutzung des RTL Viewers .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
22
23
23
23
25
5 Tutorial für Verilogger Pro
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
2
1 Simulation mit dem Xillinx ISE WebPack
1.1 Installation
Als erstes muss die Entwicklungsumgebung ISE installiert werden. Die Software ist für Windows und Linux verfügbar.1
Als Programmpaket wird das ISE WebPACK verwendet, um es herunterzuladen muss man bei Xilinx registriert sein.
Die URL zum Download lautet:
• http://www.xilinx.com/ise/logic_design_prod/webpack.htm
Fertig installiert nimmt das Tool etwa 4 GB Speicherplatz ein!
Außerdem sollten die folgenden zwei Dokumentationen heruntergeladen werden:
1. http://toolbox.xilinx.com/docsan/xilinx10/books/manuals.pdf
2. http://toolbox.xilinx.com/docsan/xilinx10/books/docs/qst/qst.pdf
1.2 Erstellung und Simulation eines Projektes
Legen Sie mit Xilinx ISE ein neues Projekt an. Nutzen Sie dazu den New Project Wizard (File → New Project. . . ). Als
Projektname geben Sie z. B. uebung1_2 ein. Außerdem können Sie ein Arbeitsverzeichnis wählen.
Geben Sie als Family Virtex2P, als Device XC2VP30, als Package FF896 und für Speed -5 an. Wichtig ist, dass Sie
als Simulator ISE Simulator (VHDL/Verilog) auswählen. Die folgende Abbildung zeigt das Auswahlfenster.
1
Studierende mit anderen Betriebssystemen können die Übungen im Pool durchführen. Auf den Rechnern der RBG ist ebenfalls eine Installation vorhanden. Dazu muss in einem Terminalfenster source/usr/local/CAD-Tools/ise-9.1/settings.sh ausgeführt werden. Mit ise wird das
Programm gestartet.
3
Das nächste Fenster erlaubt es neue Quellcodedateien zu erstellen. Klicken Sie auf New Source. . . .
Geben Sie als Dateinamen hadd.v an und wählen Sie als Typ Verilog Module.
Der New Source Wizzard erlaubt die Eingabe der Eingänge und Ausgänge. Erstellen sie zwei Eingänge (a und b)
sowie zwei Ausgänge (c und s).
In den folgenden Fenstern klicken Sie Next bzw. Finish. Danach geht ein Fenster zur Eingabe des Quellcodes auf.
Sie können nun folgendes Beispiel eines Halbaddierers vervollständigen.
Listing 1.1: Halbaddierer
1
2
3
4
5
6
7
8
9
module hadd(
input a,
input b,
output c,
output s
);
assign s = a ^ b; // ^ exklusiv -oder
assign c = a & b; // & und
endmodule
Nach der Eingabe soll die Syntax des Programms überprüft werden. Oben links bei Sources for muss Implementation
ausgewählt und das Programm hadd.v markiert sein. Unter dem Punkt Synthesize-XST kann die Syntaxüberprüfung
durch Check Syntax gestartet werden.
4
Erzeugen Sie nun eine Testbench2 . Dazu starten sie den New Source Wizzard (Project → New Source). Wählen Sie
diesmal Verilog Test Fixture und als Dateinamen testbed.v.
Die nächsten Fenster werden mit Next und Finish bestätigt. Es wird wieder ein Verilog HDL File vorgegeben, welches
entsprechend folgendem Beispiel zu ergänzen ist. Natürlich können auch andere Zeiten angeben werden.
Listing 1.2: Testbett
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module testbed ;
// Inputs
reg a;
reg b;
// Outputs
wire c;
wire s;
// Instantiate the Unit Under Test (UUT)
hadd uut (
.a(a),
.b(b),
.c(c),
.s(s)
);
initial begin
// Initialize Inputs
a = 0; b = 0;
// Simulate
#10 a = 1; b = 0;
#20 a = 1; b = 1;
end
endmodule
Für die Simulation muss im Fenster oben links bei Sources for jetzt Behavioral Simulation ausgewählt werden. Nach
Markieren von testbed kann unter Xilinx ISE Simulator mit Simulate Behavioral Model die Simulation gestartet werden.
2
Simulationsfile, Stimuli
5
Das Simulationsergebnis sollte etwa so aussehen:
6
2 Tutorial für Icarus und GTKWave
Icarus Verilog ist ein Verilog Simulations und Synthesetool. Es verhält sich wie ein Compiler und übersetzt den Verilog
Code in ein bestimmtes Zielformat. Icarus Verilog ist kommandozeilenbasiert. Es ist sowohl für Linux als auch für
Windows verfügbar. Im Rechnerpool ist Icarus installiert und kann mit iverilog gestartet werden.
2.1 Icarus Verilog
Das berühmte Hallo Welt Programm kann natürlich auch mit Verilog ausgeführt werden.
Listing 2.1: Hallo Welt (hello.v)
1
2
3
module hello;
initial $display ("Hallo Welt");
endmodule
Um es zu kompilieren muss iverilog aufgerufen werden. In den Poolräumen erfolgt das über die Kommandozeile
durch Eingabe des entsprechenden Befehls. Unter Windows ist ebenfalls eine Kommandozeile erforderlich. Hierfür
eignet sich am besten cygwin oder die windowsinterne Kommadozeile. Cygwin ist eine linuxähnliche Umgebung für
Windows.
Mit dem Befehl
% iverilog -o hello hello.v
wird die Kompilierung der Datei hello.v, die in Listing 2.1 angeben ist, gestart. Die Ergebnisse der Kompilierung
werden in die Datei hello geschrieben. Wird keine Ausgabedatei angegeben, wird das Ergebnis standardmäßig in die
Datei a.out geschrieben.
Das übersetzte Programm kann nun mit dem Befehl
% vvp hello
ausgeführt werden.
Die Ausgabe sollte jetzt so aussehen:
7
Im folgenden soll ein Halbaddierer simuliert werden.
Listing 2.2: Halbaddierer mit Testumgebung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module hadd2(a, b, c, s);
input a, b;
output c, s;
assign s = a ^ b; // ^ exklusiv -oder
assign c = a & b; // & und
endmodule
module testbed (c,s);
reg a,b;
output c,s;
hadd2 test(a,b,c,s);
initial begin
a = 0; b = 0;
# 10 a = 1; b = 0;
# 20 a = 1; b = 1;
end
initial #50 $finish ;
always@ (c or s)
$display (" Ausgang s (Summe) ist %b. Ausgang c ( Carry ) ist %b. Zeitpunkt %0d",s ,c , $time );
endmodule
In Zeile 23 des Listings 2.2 erfolgt die Ausgabe der Simulationsergebnisse. Bei jeder Änderung der an den Ausgängen anliegenden Werte wird der Befehl display aufgerufen und erwirkt die Ausgabe der jeweiligen Werte.
2.2 GTKWave
Für eine graphische Ausgabe der Simulation kann GTKWave benutzt werden. Daz muss in der Simulation eine Ausgabedatei für GTKWave erstellt werden. Mit den folgenden Zeilen, eingefügt in das Top-Level Modul des Verilogprogramms, wird eine solche Datei geschrieben.
Listing 2.3: Erstellen der Ausgabedatei für GTKWave
1
2
3
4
5
initial
begin
$dumpfile ("und.vcd");
$dumpvars (0);
end
Mit dem Befehl $dumpfile wird der Name der Ausgabedatei für die graphische Darstellung mit GTKWave angegeben. Der zweite Befehl bestimmt welche Variablen aufgezeichnet werden. Mit $dumpvars(1) werden nur die Variablen
des aktuellen Moduls protokolliert, mit $dumpvars(0) werden die Variablen im eigenen und in allen untergeordneteten Modulen aufgezeichnet.
Als Beispiel greifen wir hier erneut zurück auf den Halbaddierer. Die Ausgabe der Testumgebung wird durch den
in Listing 2.3 geschriebenen Code ersetzt.
Listing 2.4: Erstellen der Ausgabedatei für GTKWave
1
2
3
4
module hadd(a, b, c, s);
input a, b;
output c, s;
assign s = a ^ b; // ^ exklusiv -oder
8
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
assign c = a & b; // & und
endmodule
// Simulationsumgebung
module testbed_1 (c,s);
reg a,b;
output c,s;
hadd test(a,b,c,s);
‘timescale 1ns/1ns
initial
a =
# 5 a =
# 5 a =
# 5 a =
begin
0; b =
1; b =
1; b =
0; b =
0;
0;
1;
0;
end
initial #30 $finish ;
initial begin
$dumpfile ("hadd.vcd");
$dumpvars (0);
end
endmodule
Damit das Dumpfile geschrieben wird, muss die Datei neu kompilliert und gestartet werden.
Mit dem Befehl gtkwave dateiname.vcd öffnet sich ein graphisches Interface. Vorerst sind hier noch keine Signale
zu sehen.
In GTKWave müssen noch die darzustellenden Signale ausgewählt werden. Dazu muss man in der Auswahlbox
SST (Signal Search Tree) den gewünschten Eintrag auswählen. In der Auswahlbox Signals erscheinen nun die auf-
9
gezeichneten Variablen aus dem Verilog Programm. Auch hier müssen die gewünschten Signale ausgewählt werden
und die Auswahl muss danach mit Append bestätigt werden.
Im rechten Teil des GTKWave-Fensters ist jetzt die Simulation in graphischer Form dargestellt.
10
3 Tutorial für Integration von Icarus Verilog und GTKWave in Eclipse unter Windows
3.1 Verwendete Pakete
3.1.1 Eclipse developement platform
• Website: http://www.eclipse.org/
• Hier benutzt: Eclipse SDK Version 3.2.1
3.1.2 Icarus Verilog
• Website: http://www.icarus.com/eda/verilog/
• Hier benutzt: iverilog-0.8-setup.exe (Version 0.8.3)
3.1.3 „Verilog Editor“ Plugin für Eclipse
• Website: http://veditor.sourceforge.net/
• Hier benutzt: net.sourceforge.veditor_0.5.0.zip
3.1.4 Gimp Tool Kit (GTK) for Windows
• Website: http://www.gimp.org/~tml/gimp/win32/downloads.html
• Hier benutzt: GTK+ 2 Runtime Environment (version 2.10.6 for Windows 2000 and newer)
3.1.5 GTKWave (Win32 Version)
• Website: http://home.nc.rr.com/gtkwave/
• Hier benutzt: GTKWave 2.0.20 for Win32
3.2 Installation
3.2.1 Eclipse developement platform
Die Installation von Eclipse bedarf keiner besonderen Richtlinien und kann völlig normal vorgenommen werden.
3.2.2 Icarus Verilog
Zum installieren von Icarus Verilog muss lediglich die heruntergeladene Installationsdatei gestartet werden.
Hier benutzt: Installationsverzeichnis C:\Programme\IcarusVerilog\ (ein Pfadname ohne Leerzeichen ist nötig,
der Standardpfad kann nicht verwendet werden. Die restlichen Einstellungen sind frei wählbar, „Add executable to
System PATH variable“ am Ende der Installation ist nicht zwingend notwendig).
11
3.2.3 Gimp Tool Kit
Zur Installation von GTK das heruntergeladene Zip-Archiv entpacken und die darin enthaltene Installtionsdatei ausführen.
Hier benutzt: Installationsverzeichnis C:\Programme\GTK2\, Einstellungen für Zusatzpakete sind frei wählbar.
3.2.4 GTKWave
Das heruntergeladene Archiv enthält hier keine Installation sondern die auführbare standalone Executable. Diese
kann in ein beliebiges Verzeichnis entpackt werden.
Hier benutzt: C:\Programme\GTKWave.exe.
3.2.5 Verilog Editor
Entweder das heruntergeladene Archiv direkt ins Eclipse-Verzeichnis entpacken oder manuell entpacken und den
Ordner net.sourceforge.veditor_0.5.0 im enthaltenen Unterverzeichnis plugins in das plugins-Verzeichnis der
Eclipse-Installation kopieren oder verschieben.
Zunächst jetzt Eclipse starten. Dort unter Help → About Eclipse SDK auf Plugin Details klicken.
12
In der erscheinden Liste steht jetzt, vorausgesetzt, die Installation war Erfolgreich, das Verilog Editor Plugin.
13
3.3 Konfiguration
3.3.1 Einstellen der Verilog-Ansicht
Nun zunächst wieder ins Eclipse. Unter Window → Open perspective → Other... Verilog auswählen und bestätigen.
14
Jetzt sollte im Eclipse-Fenster neben Java auch Verilog/VHDL auftauchen.
3.3.2 Erstellen des Verilog-Projekts
Als nächstes wird das Verilog-Projekt 1 erstellt. Dazu im Projekt-Wizard unter Verilog/VHDL den Typ Verilog/VHDL
project auswählen und bestätigen. Die Wahl des Speicherorts für das Projekt ist beliebig, der Pfad unterliegt keinen
weiteren Einschränkungen und muss auch nicht im Standard Eclipse Workspace liegen.
1
Die in diesem Tutorial erstellte Konfiguration ist darauf ausgelegt, dass lediglich ein einziges Verilogprojekt verwendet wird. Die später erstellte
Datei testbed.v dient in dem gesamten Projekt als Basis und muss für sämtliche Programmierungen angepasst oder neu angelegt werden. Mit
einer besseren Kentnis der Eclipse-Funktionen ließe sich selbstverständlich auch eine Methode finden, eine allgemeine Konfiguration zu erstellen,
welche für mehrere Projekte verwendet werden könnte. Dies ist jedoch nicht Bestandteil dieses Tutorials.
15
In dem Projekt wird nun ein neues Verzeichnis angelegt. Hier wird es bench genannt da dieses Verzeichnis später
die Arbeitsbank des Compilers und des Simulators sein wird.
In bench wird nun noch eine Batch-Datei (hier run.bat) angelegt.
16
Beim bestätigen dieses Fensters produziert Eclipse einige Fehler da es die Datei offenbar direkt versucht auszuführen was jedoch fehlschlägt da sie noch leer ist. Diese Fehler können einfach ignoriert und weggeklickt werden.
run.bat wird dafür zuständig sein, auf Knopfdruck die kompilierte Verilog-Datei zu Simulieren und anschließend ihr
Waveform-Diagramm in GTKWave anzuzeigen.
Diese Datei jetzt mit Rechtsklick → Open with → Text editor im Eclipse öffnen und bearbeiten. Sie sollte folgenden Inhalt (Pfad- und Dateinamen müssen angepasst werden sollten bei den vorigen Installationen andere Einstellungen verwendet worden sein als in diesem Dokument) bekommen:
Listing 3.1: run.bat
1
2
3
4
5
6
7
@echo off
PATH =% PATH %;C:\ Programme \gtk2\bin
PATH =% PATH %;C:\ programme \ icarusverilog \bin
echo Now statring vvp ( simulation )...
vvp testbed .out
echo Simulation done , now starting gtkwave (wave form display )...
c:\ programme \ gtkwave testbed .vcd
Die Datei speichern und wieder schließen.
3.3.3 Konfiguration des Projekts
Auf das Projekt einen Rechtsklick → Properities um die Eigenschaften zu öffnen. Dort links Verilog/VHDL Simulator auswählen und die Einstellungen wie folgt setzen:
17
Außerdem ganz oben Enable Verilog/VHDL Builder anhaken und das ganze bestätigen.
Zuletzt im Verilog-Projekt Hauptverzeichnis (nicht im bench-Verzeichnis) ein neues Verilog File anlegen mit
Namen testbed.v. Sollte ein anderer Name gewählt werden müsste sowohl die Batch-Datei run.bat als auch die
Simulatorparameter angepasst werden.
18
Die angelegte Datei sollte sich direkt in Eclipse öffnen. testbed.v ist jetzt das „Kontrollzentrum“ und Simulationsumgebung. Welche Toplevel-Module auch immer getestet oder simuliert werden sollen müssen in dieser Datei
instanziert und mit Eingaben gefüttert werden.
3.4 Beispiel und Test
Im Folgenden wird testbed.v mit einem Beispielprogramm gefüllt welches die Benutzung des nun erstellten Systems
klarstellen soll:
Als erstes braucht man für eine Simulation ein Testobjekt. Das zu testende Modul in diesem Fall ist ein ClockInverter der ein Taktsignal als Eingangssignal aufnimmt und Phaseninvertiert wieder ausgibt.
3.4.1 Die Testumgebung testbed.v
testbed.v muss nun also eine Instanz des Inverters erstellen und einen Takt generieren der an den Inverter gegeben
wird. Des weiteren muss testbed.v die Ausgabeparameter für den Simulator bestimmen, zum Einen, welche Signale
alle in die Waveform-Datei geschrieben werden sollen und zum Anderen, wo die Waveform-Datei erstellt werden
soll2 . Der Inhalt der Datei sollte also wie folgt aussehen:
Listing 3.2: testbed.v für die Simulation des Clock-Inverters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
module testbed (q);
output q;
// ---TESTZONE --clockInverter clkInv (clk ,q);
initial #10 $finish ;
// ---Ende der Testzone --// clock generation
reg clk;
initial clk =1;
always #2 clk =~ clk;
// waveform settings
initial begin
$dumpfile (" testbed .vcd");
$dumpvars (0);
end
endmodule
In diesem Fall muss die Ausgabedatei immer testbed.vcd heißen, es sei denn man ändert die Batch-Datei run.bat.
19
Sobald diese Datei gespeichert wird sollte der Verilog-Builder einen Fehler produzieren:
{}
Elaboration failed
*** These modules were missing:
clockInverted referenced 1 times.
***
Dieser Fehler ist selbstverständlich, testbed.v benutzt schließlich ein Modul namens clockInverter welches noch
nicht existiert.
3.4.2 Das Modul clockInverter
Also wird eine Datei gleichen Namens auf die selbe Weise wie testbed.v erstellt und mit folgendem Inhalt gefüllt:
Listing 3.3: clockInverter.v
1
2
3
4
5
module clockInverter (clkin , clkout );
input clkin;
output clkout ;
assign clkout =~ clkin;
endmodule
Beim speichern dieser Datei sollte in der Konsole erneut ein build erfolgen, diesmal jedoch ohne Fehler. Ist das der
Fall war der build erfolgreich und die Simulation kann gestartet werden.
3.4.3 Ausgabe der Waveform in GTKWave
An dieser Stelle hat die Batch-Datei run.bat ihren Einsatz. Man kann sie sowohl manuell ausführen als auch Eclipse
konfigurieren, dass die Datei auf Knopfdruck gestartet wird. Dafür erstellt man unter External tools (der grüne
Play-Knopf mit rotem Werkzeugkasten davor in der Menüleiste) per Rechtsklick auf Program → New eine neue RunKonfiguration.
20
In dieser neuen Konfiguration, hier Simulate+Display genannt, sollte man nun über die Browse WorkspaceButtons die Batch-Datei run.bat beziehungsweise ihr Verzeichnis auswählen.
21
Die Konfiguration abspeichern und Run drücken. Dadurch läuft das Output der Batch-Datei mit dem Simulator über
die Konsole. An dieser Stelle sieht man dann auch eventuelle Textausgaben aus den Verilog-Modulen die ausgeführt
werden. Anschließend wird GTKWave mit der frisch erzeugten Waveform-Datei gestartet. Dort muss nurnoch aus
unter testbed das Modul clockInverter ausgewählt werden, clkIn und clkOut markiert und über Insert- oder
Append-Button am unteren Rand in die Darstellung aufgenommen werden. Die Verlaufskurven der Werte erscheinen
Dann im Darstellungsfenster.
Jetzt kann man jederzeit nach Änderungen in der Kontrollumgebung testbed.v oder in den Modulenvornehmen
und wenn der build nach dem Speichern fehlerfrei durchgelaufen ist einfach über den grünen Play-Knopf mit dem
roten Werkzeugköfferchen mit einem klick die Simulation ablaufen lassen und bekommt direkt GTKWave mit der
entsprechenden Waveform-Datei geladen auf den Bildschirm.
22
4 Tutorial für Quartus II
Diese Kurzanleitung beschreibt anhand eines einfachen 4-Bit Zählers die Eingabe, Simulation, Synthese und Programmierung mit der Entwicklungsumgebung Quartus II.
4.1 Anlegen eines Projekts
Nach dem Start von Quartus II in der Menüleiste unter Files New Project Wizard auswählen. Mit dem Wizard wird
u. a. das Projektverzeichnis , die im Projekt benutzten Design-Files (VHDL, Verilog HDL etc.) ausgewählt. Im ersten
Schritt des Wizards muss das TopLevelModul angegeben werden, der Name muss identisch mit dem Namen des
Verilog-Hauptmoduls sein. Weiterhin kann an dieser Stelle schon die Device-Family angegeben werden (zum Beispiel
der Cyclone EP1C20F324C7). Durch Drücken des Button Finish wird der Project Wizard geschlossen.
23
4.2 Eingabe eines Design-Files
In der Menüleiste wird unter Files New ausgewählt. Dort wählt man den File-Typ aus (Device Design Files, Software
Files, Other Files). Bei den Device Design Files kann man zwischen AHDL, Block Diagram, EDIF, Verilog HDL und
VHDL wählen. Nach Auswahl von z.B. Verilog HDL hat man ein Syntax Highlighting für Verilog HDL. Nach Eingabe
des Codes File speichern.
4.3 Übersetzung des Design-Files
Der Übersetzungsvorgang (Netzlistengenerierung, Synthese) wird durch Auswahl von Start Compilation (Strg + L)
im Processing- Menü ausgeführt. In der Regel wird es immer einige Warnings geben, da in der WebEdition einige
Features nicht vorhanden sind.
4.4 Simulation des Design-Files
Zur Simulation wird unter Files New die Registerkarte Other Files ausgewählt. Dort wird dann Vector Waveform File
ausgewählt. Daraufhin öffnet sich ein Fenster „Waveform1.vwf“.
24
Durch drücken der rechten Maustaste im linken Teil des Fenster (Name, Value at) kommt man zum Node Finder
(Insert Node or Bus). Im Node Finder kann man durch Klick auf „List“ alle Signale anzeigen lassen. Diese werden
durch den Button » in das Fenster „Selected Nodes“ kopiert und mit „OK“ bestätigt.
Im Waveform-Fenster sind jetzt alle ausgewählten Pins angezeigt.
Wenn man die Eingänge in der Waveform auswählt, kann man über die Buttons links neben der Waveform-Ansicht
die Werte für die markierten Bereiche ändern.
Über das Menü „Processing“, „Start Simulation“ kann die Simulation gestartet werden, vorher muss jedoch die
Waveform-Datei gespeichert werden.
25
4.5 Benutzung des RTL Viewers
Der RTL Viewer befindet sich im Menü „Tools“, „Netlist Viewers“, „RTLViewer“.
26
5 Tutorial für Verilogger Pro
Vorgehensweise für eine Simulation mit dem SynaptiCAD VeriLogger am Beispiel des Halbaddierers.
Für die Simulation sind die notwendigen Dateien in ein Projekt einzubinden. Dazu sind folgende Schritte notwendig.
1. Hinzufügen von Files zu einem Projekt: Im Projektfenster (links oben) mit rechter Maustaste und Add HDL
File(s) die Dateien zu einem Projekt hinzufügen.
2. Mit dem gelben Button werden die Files übersetzt (Simulation Built).
3. Simulation mit dem grünen Button starten.
Die Signale des Top-Level-Moduls werden automatisch im Fenster Diagram angezeigt.