Anleitung ModelSim

Transcription

Anleitung ModelSim
Anleitung ModelSim
ModelSim SE6.3j, PE (Mentor Graphics)
Designflow
1/14
Aktualisiert: 11/2012 Pal
Inhaltsverzeichnis
1
Konfiguration
3
1.1 Projekterstellung
3
1.2 Einbinden von Dateien in das Projekt
4
2
5
Funktionale Simulation
2.1 Compilieren
5
2.2 Fehlerkorrektur beim Compilieren
6
2.3 Starten der Simulation
7
2.4 Stimulation ohne DO-Datei
2.5 Stimulation, Ausführen einer DO-Datei
8
9
2.6 Bedienung Wave-Fenster
10
3
Timing Simulation, Start der Simulation
11
3.1
Start der Simulation mit der DO-Datei
11
3.2
Timing Simulation mit der Testbench
13
3.3
Testbench für die Timing Simulation
14
2/14
Starten von
vom Desktop :
1. Konfiguration
1. 1 Projekterstellung
Ein neues Projekt (Projektordner, Projektdatei ~.mpf) wird angelegt mit:
→ File → New → Project
Das Menü „Create Project“ erscheint:
Der einzig zu tätigende Eintrag ist die Angabe eines Namens für das Projekt.
Hierbei ist zu beachten, daß
keine Sonderzeichen (ausgenommen Unterstrich),
kein Leerzeichen,
keine Umlaute und
nicht mehr als 20 Zeichen
verwendet werden.
In den Feldern „Project Location“, „Default Library Name“, und
„Copy Settings From“ ist darauf zu achten, dass die obigen Einträge
übereinstimmen. Hier sind normalerweise keine Änderungen nötig.
Weiter mit Klick auf
Es geht automatisch weiter mit dem Auswahlmenü „Add Items to the Project „ .
3/14
1.2 Einbinden von Dateien in das Projekt
Die zu verwendenden Quelldateien sind in das Projekt einzubinden mit:
→ Project → Add to Project → Existing File
(Wird auch erreicht mit : Rechter Mausklick in das „Workspace“-Feld → Add to Project → Existing File)
Das Auswahlmenü
„Add Items to the Project „ erscheint
:
Klicke „Add Existing File“, um die benötigten Dateien (~.vhd, evtl. ~.do) über das
darauf folgende Menü „ Add file to Project“ einzubinden:
Über die Schaltfläche „Browse“ die Quelldatei(en) im Open-Menü auswählen.
Weiter mit Klick auf:
Schließe das Menü „ Add Items to the Project“ mit:
Im Feld „Workspace“ , unterer Reiter „Project“ im Vordergrund, sieht man den
Dateinamen der in das Projekt eingebundenen Datei.
4/14
2. Funktionale Simulation
2.1 Compilierung
Vor der Simulation müssen die VHD-Quelldatein fehlerfrei compiliert sein.
Dazu ist der Eintrag der angesprochenen Quelldatei im „Workspace“ zu markieren und folgendes
auszuführen:
→ Compile → Compile Selected
Der Compiliervorgang wird gestartet mit ausgewähltem Dateieintrag (markiert) im „Workspace“ und :
→ Compile → Compile Selected
oder rechte Maustaste auf den Dateieintrag und:
→ Compile Selected
auch möglich:
→ Compile All
Wenn kein Fehler vorliegt erscheint im Transcript-Fenster die Meldung:
# Compile of >Dateiname< was successful.
S.u.
Der Status der Datei erhält einen grünen Haken.
Hier kann man weitergehen zum Punkt :
Starten der Simulation.
Ein Fehler beim Compilieren wird durch ein rotes Kreuz in der Status-Spalte angezeigt:
.
Und durch eine Fehlermeldung im Transcript-Fenster:
Hier muss man weitergehen zum Punkt :
Fehlerkorrektur beim Compilieren
5/14
2.2 Fehlerkorrektur beim Compilieren
Fehlerkorrektur beim Compilieren
Doppelklick mit der linken Maustaste auf den Dateinamen im „Workspace“ öffnet diese in einem Editor.
Doppelklick mit der linken Maustaste auf die Fehlermeldung im „Transcript“-Fenster öffnet ein Fenster
mit näherer Fehlerbeschreibung:
Hierbei wird der Dateiname mit dem kompletten Pfad angegeben
und in runden Klammern die Zeilennummer hier z.B.: (3)
Dahinter folgt eine Fehlerbeschreibung.
Doppelklick auf diese „Error“-Zeile markiert die fehlerhafte Zeile des Quelltextes im Editor:
Nun muss der Fehler im Quelltext korrigiert, die Datei abgespeichert, das Fehlerfenster wieder
geschlossen und erneut compiliert werden.
Empfohlenes Vorgehen:
Den obersten Fehler in der Fehlerliste korrigieren ( die weiteren Fehler sind meist nur Folgefehler ),
Quelltext abspeichern und neu compilieren
Es kann auch durchaus vorkommen, dass nach einer Fehlerkorrektur beim erneuten Compilieren noch
mehr Fehler angezeigt werden als zuvor. Das kann z.B. daran liegen, dass bei einem Fehler in der
Portbeschreibung, die Architektur gar nicht compiliert wird.
Manchmal ist der eigentliche Fehler eine Zeile darüber zu finden z.B. fehlendes Semikolon.
Auch Warnungen sind zu korrigieren.
Dieser Kreislauf muss ggf. noch weitere Male
wiederholt werden, bis die Compilierung fehlerfrei ist.
.
Der Status der Datei erhält ein grünes Häkchen:
Nun kann man weitergehen zum Punkt :
6/14
Starten der Simulation.
2.3
Starten der Simulation
Die Simulation ist erst nach fehlerfreier Compilierung zu starten mit:
→ Simulation → Start Simulation
Das Menü „Start Simulation“ öffnet sich:
Hier ist unter →
Design → Work unter
E = Entity die A = Architektur auszuwählen.
Die Zeitauflösung ist in unserer Modelsim-Ini für die timing-Simulation auf „ps“ = Pikosekunde gesetzt.
Weiter geht es mit:.
Es entstehen neue Fenster: „Objects“, „Active Processes“ und zusätzliche hinterlegte Fenster im
Bereich „Workspace“: „Sim“,
„Files“,
„Memories“:
7/14
2.4 Stimulation ohne Do-Datei
Stimulation ohne DO-Datei
Nach → Simulate → Start Simulation mit Auswahl der „Entity“ oder Architektur sieht man im
Fenster „Objects“ die verfügbaren Ein- und Ausgangssignale.
Hier mit rechter Maustaste auf ein Signal klicken und auswählen:
→ Add to Wave → Signals in Region
Darauf öffnet sich das „Wave“-Fenster für die Zeitdarstellung mit den Signalen in der linken Spalte.
Mit rechter Maustaste auf ein Signal klicken und auswählen:
→ Force
Ermöglicht im Fenster „Force Selected Signal“ (siehe darunter) im Feld „Value“ eine Wertzuweisung
( Nur Eingangssignale stimulieren ! Bit als 0 oder 1, Vektoren in Hex: z.B. 1E3 )
Dann eine Laufzeit „Run Length“ in das kleine Feld der Buttonleiste eingeben
z. B. 100 ns und den Button rechts daneben „Run“ klicken:
8/14
2.5 Stimulation, Ausführen einer DO-Datei
→ Tools → TCL → Execute Makro
Die erste Anweisung „restart“ in der DO-Datei erzeugt dieses Menü:
Deaktiviere
→ Keep → Wave Format
(Beim 1. Mal nicht nötig.)
Über die Schaltfläche „Restart“ wird
die DO-Datei fortgesetzt.
DO-Datei schnellerer Start:
Mit rechter Maustaste auf den „Workspace“ klicken und
→ Add to Project → Existing File .
Im Menü „ Add File to Project“ „Browse“ ausführen und die DO-Datei importieren.
Dabei den Extensionfilter rechts unten auf „All Files (*.*)“ setzen.
Damit erscheint die DO-Datei zusätzlich im „Workspace“ und kann leicht mit:
Rechte Maustaste auf den Eintrag der DO-Datei und → Execute gestartet werden.
3 Beispiele einer Stimulation (DO-Datei):
Minimal benötigt werden die Anweisungen:
„restart“, „add wave2 und „force“.
Um das Zahlenformat zu setzen :
radix hex { bin, dec, oct }
„Force“ ist die Wertezuweisung und wird wie folgt verwendet:
force >Signalname< >Wert< [ >Zeitpunkt< , >Wert< >Zeitpunkt< , >Wert< >Zeitpunkt< ]
Im „Repeat“-Mode „-r“ besonders für einen Takt (Clock) :
force >Signalname< >Wert< >Zeitpunkt< , >Wert< >Zeitpunkt< -r >Periodenzeit<
9/14
2.6 Bedienung Wave-Fenster
Das Wave Fenster
Das Wave-Fenster öffnet sich mit der kleinsten Auflösung, d.h. man sieht evtl. nur das letzte Ende. Mit
Klick auf die Funktion „Full Zoom“ wird das Ergebnis vom Zeitpumkt 0 an dargestellt.
Zoomfunktionen:
1. Zoom In :
Vergrößern
2. Zoom Out : Verkleinern
3. Zoom Full : Alles im Fenster
4. Zoom In on active Cursor : Vergrößern an der Position des aktiven Cursors
In der ersten Spalte werden die Signalnamen aufgelistet. In der zweiten erscheint der numerische Wert
der Daten an der Cursorposition.
Weitere Cursor werden durch Klicken auf den kleinen grünen
- Button der Zeitskalenzeile , erste
Spalte eingesetzt:
Der Bildhintergrund des Wave-Fensters lässt sich durch vorbereitete TCL-Kommandodateien ändern:
Mit
im Ordner
die Datei
oder
→ Tools → TCL → Execute Makro
D:/ISE_Lab_Files/ModelSim_Makros
WaveBackgroundBlack.tcl
WaveScreenshotFormat.tcl
für schwarzen
für weißen Hintergrund auswählen.
Vergrößerung des Wave-Fensters mit:
1. Vergößerung auf die gesamte Bildschirmbreite
2. Auskoppeln des Wave-Fensters
Die Cursor können mit Hilfe der „Buttons“
„ Find Previous Transition“ und „Find Next Transition“
genau auf die Flanken eines Signals gesetzt werden:
10/14
3.1 Timing Simulation, Start der Simulation mit der DO-Datei
Timing simulation
→ Simulation → Start Simulation
Benötigt werden zwei Dateien, die vom Implementierungstool ISE (Xilinx) durch Ausführen der Funktion
→ Implementation → Optional Implementation Tools --> „Generate Post-Fit Simulation Model“
in den Unterordner <projektname>/netgen/fit bei CPLDs oder <projektname>/netgen/par bei FPGAs
gelegt werden:
<Entity_name>_timesim.vhd
und
<Entity_name>_timesim.sdf
(Standard Delay Format)
Die Datei ~_timesim.vhd ist dem Projekt hinzuzufügen mit „Rechtem Mausklick“ in das „Workspace“-Feld“
und Auswahl von :
→ Add to Project → Existing File und Schaltfläche „Browse“ zur o.g. Datei.
Diese ist mit „Rechtem Mausklick“ zu compilieren und Auswahl von:
→ Compile → Compile Selected
Beim Menüpunkt → Simulate → Start Simulation ist zusätzlich auszuführen:
Im folgenden Menü jetzt zuerst den „SDF“-Tab anklicken und über „Add“ die SDF-Datei aus dem
ISE-Projektordner auswählen:
Mit Delete oder Modify kann dies korrigiert werden.
Fortfahren über das „Design“-Tab :
Der von ISE gelieferte Logikentwurf ~_timesim.vhd besteht aus einer Entity gleichen Namens wie der
eigene Ursprungsentwurf, jedoch unterschiedlich ist der Architekturname hier: structure
Die Zeitauflösung „Resolution“ kann im Labor auf „default“ bleiben, da „default“ :“ps“.
( Bei anderen als der Laborinstallation ist auf „ps“ zu stellen).
11/14
Ergebnis:
Die internen Signale sind im obigen Bild gelöscht ( oberes Signal markieren , Strg-Taste
Ein zweiter Cursor ist durch „Linker Mausklick“ auf den kleinen grünen Knopf mit dem
Die Cursor sind mit Hilfe der „Buttons“
„ Find Previous Transition“ und „Find Next Transition“
genau auf die Flanken des Eingangssignals X1 und
des Ausgangssignals Q1 gesetzt.
12/14
unteres und Entf-Taste.
Zeichen entstanden.
3.2 Timing Simulation mit der Testbench
Timing simulation
→ Simulation → Start Simulation
Von ISE (Xilinx) erhält man durch:
→ Implementation → Optional Implementation Tools -->
unter
/netgen/fit bei CPLDs
~_timesim.vhd und
„Generate Post-Fit Simulation Model“
oder
/netgen/par bei FPGAs
~_timesim.sdf
Die Datei ~_timesim.vhd ist dem Projekt hinzuzufügen mit:
→ Add to Project → Existing File
und zu compilieren mit:
→ Compile → Compile Selected
Beim Menüpunkt → Simulate → Start Simulation ist zusätzlich auszuführen:
Im folgenden Menü jetzt zuerst den „SDF“-Tab anklicken und über „Add“ die SDF-Datei aus dem
ISE-Projektordner auswählen:
Mit Delete oder Modify kann dies korrigiert werden.
In das Feld „Apply to Region“ ist der Instanzname einzutragen (incl. „/“ „Slash“).
Die Zeitdaten in der SDF-Datei müssen der jeweiligen Instanz zugeordnet werden.
Oft z.B. DUT (Device under Test) oder UUT ( Unit under Test)
In der Testbench wird die Komponente des Entwurfs als Instanz aufgebaut und in der „port map“ werden
die Signale verbunden.
Nun geht es weiter mit dem Tab: „Design“.
Dann weiter im Tab „Design“ die Entity der Testbench markieren und unten starten mit:
Die Zeitauflösung „Resolution“ kann im Labor auf „default“ bleiben, da „default“ :“ps“.
( Bei anderen als der Laborinstallation ist auf „ps“ zu stellen).
13/14
Eine minimale DO-Datei oder „zu Fuß“ liefert das hardwarenahe Ergebnis:
Ein zweiter Cursor ist durch „Linker Mausklick“ auf den kleinen grünen Knopf mit dem
Zeichen entstanden.
Die Cursor sind mit Hilfe der „Buttons“
„ Find Previous Transition“ und „Find Next Transition“
genau auf die Flanken des Eingangssignals X1 und
des Ausgangssignals Q1 gesetzt.
3.3 Testbench für die Timing Simulation
Testbench
Der von ISE gelieferte ~timesim.vhd-Entwurf bedingt Änderungen in der Testbench.
Durch das benutzte Datenformat „std_logic“ und „std_logic_vector“ sind folgende Anpassungen erforderlich:
1. Zusätzliche Bibliotheksangaben:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
2. Alle „ bit“ ändern auf „std_logic“ , alle „bit_vector“ ändern auf std_logic_vector“
mit
→ Edit → Replace
Die Signale erscheinen in der ~_timesim.vhd“-Datei gewöhnlich nicht in der gleichen Reihenfolge. D.h.
3. In der Instanziierung ist die „port map“-Verbindungsliste reihenfolgeunabhängig zu machen:
z.B.
port map ( X1 => X1_TB,
X2 => X2_TB,
Q1 => Q1_TB );
„Generics“ werden nicht unterstützt. D.h.
4. „Generics“ müssen ersetzt werden.
Zur einfacheren Bedienung ist eine minimale DO-Datei sinnvoll:
restart
view signals
view wave
add wave EXOR_TB/*
run 200 ns
14/14

Documents pareils