Forum: FPGA, VHDL & Co. Flow Simulation mit Lattice Diamond 2 und Active-HDL 9.1


von LatticeAnfänger (Gast)


Lesenswert?

Ich versuche, mich gerade in die Simulation von Lattice Diamond 2
und Active-HDL 9.1 einzuarbeiten.
Leider fehlt es noch an Wissen an allen Stellen (VHDL, neue Umgebung),
so dass alles noch recht mühsam ist.

Könnt Ihr mir bei folgenden Fragen weiterhelfen:

1) Ich arbeite mit VHDL. Ist es richtig, dass ich mit 3 Files
arbeiten kann:
a) einem für die Synthese und Simulation, in dem ich im Endeffekt
die eigentliche Implementierung reinpacke
b) einem nur für die Synthese, in dem ich die "Verdrahtung"
der realen Hardware vornehme
c) einem nur für die Simulation, in der die Testbench reinkommt.

2) Wenn ich diese 3 Files habe und jetzt meine Implementierung
in der Simulation testen will, dann erzeuge ich als erstes
in
Lattice Diamond -> Process -> Map Design -> VHDL Simulation File
und
Lattice Diamond -> Process -> Export Files -> VHDL Simulation File
Ich gehe davon aus, dass die Übersetzung in Lattice Diamond stattfindet?
Was macht der Export? Oder brauch ich den gar nicht,
wenn ich Active-HDL 9.1 von Lattice Diamond 2 aus aufrufe?

3) Für meine aktuelle Vorgehensweise habe ich jetzt mal beide
Punkte angewählt (Map Design und Export Files).
(Tools -> Simulation Wizard hatte ich bereits mal aufgerufen).
Ich starte jetzt direkt Active-HDL durch Click auf den Button
in Lattice Diamond. Active-HDL wird geöffnet.
Dort wähle ich meine Projekt, dann Simulation -> Initialize Simulation.
Jetzt fordert er mich auf, die Top-Level-Design-Unit auszuwählen.
Ich wähle die Testbench aus und sehe meine (exportierten) Signale.
Jetzt trage ich oben z.B. 20 ms ein und drücke Run (F5).
Die Simulation scheint gelaufen zu sein.
Ich wähle ein paar meiner Signale aus, rechte Maustaste,
"Add to Waveform". Die Waveform-Darstellung erfolgt,
aber noch leer, es sind aber schon irgendwie die Werte vorhanden
aber keine Kurven. Gehe ich auf "<<" (Restart Simulation)
und Run (F5), dann werden die Kurven aber dargestellt.

Soweit so gut, die Simulation scheint grundsätzlich zu
funktionieren.

A) Wenn ich jetzt die Implementierung ändere, muss ich den ganzen
langen Weg erneut machen, oder geht es schneller?
In Active-HDL gibt es Workspace -> Compile Workspace.
Kann man dies benutzen, oder muss man grundsätzlich den Weg
via Lattice Diamond 2 gehen?

B) Die Bedienung von Active-HDL, dass man im ersten Anlauf
keine WAVE-Darstellung sieht, beim 2. Mal aber schon,
schaut irgendwie auch komisch aus. Ist das normal?

C) Ich habe die Waveform mal via Waveform -> Save to Macro
exportiert. Damit geht es dann etwas schneller, naja.

D) Kann man vielleicht in Lattice Diamond ändern,
übersetzen und Active-HDL erkennt, dass die Source-Files
(oder VHDL-Simulation-Files) geändert wurden und
führt die Simulation von alleine wieder aus und zeichnet Kurven.
Vermutlich aber nur eine Wunsch-Vorstellung?

Vielleicht geht das ganze ja viel komfortabler
und ich wähle einfach die falschen Punkte aus?

von LatticeAnfänger (Gast)


Lesenswert?

Eine Frage habe ich noch vergessen:

4) Ich habe z.B. eine Implementierung mit 2 Eingängen, 2 Ausgängen
und zig internen Signalen. In der Testbench sehe ich (bei Port)
nur die 2 Eingänge und 2 Ausgänge. Muss ich die internen Signale
auch nach außen führen, damit ich sie in der Wave-Darstellung sehen
kann? Eigentlich möchte ich sie aber nur in der Testbench sehen,
in der realen Implementierung sollen sie nicht nach außen geführt sein.
Wie macht man das am Besten?

von Duke Scarring (Gast)


Lesenswert?

Vorab: Ich verwende weder Lattice, noch Active-HDL. Aber die Prinzipien 
sollten grundsätzlich die gleichen sein.

LatticeAnfänger schrieb:
> 1) Ich arbeite mit VHDL. Ist es richtig, dass ich mit 3 Files
> arbeiten kann:
> a) einem für die Synthese und Simulation, in dem ich im Endeffekt
> die eigentliche Implementierung reinpacke
> b) einem nur für die Synthese, in dem ich die "Verdrahtung"
> der realen Hardware vornehme
> c) einem nur für die Simulation, in der die Testbench reinkommt.
Die Dateien a) und b) würde ich für den Anfang zusammenlegen.
In Deinem Fall brauchst Du für die Synthese a) und b).
Falls Du Dein Gesamtsystem simulieren möchtest (und in aller Regel 
möchte man das), brauchst Du a), b) und c) für die Simulation.

Um Module (wie a) zu simulieren, kann man eine weiter Testbench speziell 
für das Modul erstellen. Das kann aber recht aufwendig werden, wenn sich 
die Modulschnittstelle häufig ändert.


> 2) Wenn ich diese 3 Files habe und jetzt meine Implementierung
> in der Simulation testen will,
Die häufigste (und schnellste) Simulation, ist die sogenannte 
funktionale Simulation. Dafür brauchst Du Lattice gar nicht, das sollte 
direkt mit ActiveHDL gehen.

> dann erzeuge ich als erstes
> in
> Lattice Diamond -> Process -> Map Design -> VHDL Simulation File
> und
> Lattice Diamond -> Process -> Export Files -> VHDL Simulation File
Mit diesen Aufrufen erzeugst Du Netzlisten, die Du natürlich auch 
simulieren kannst, aber in aller Regel gar nicht simulieren musst.

> Ich gehe davon aus, dass die Übersetzung in Lattice Diamond stattfindet?
Nein. ActiveHDL übersetzt sich die Quelltexte für die Simulation und 
Lattice Diamond übersetzt sich die Quelltexte (ohne Testbenches) für die 
Synthese.


> Soweit so gut, die Simulation scheint grundsätzlich zu
> funktionieren.
Ja, klingt gut.

> A) Wenn ich jetzt die Implementierung ändere, muss ich den ganzen
> langen Weg erneut machen, oder geht es schneller?
Die ausgewählten Waveforms sollten sich speichern lassen.
Und vielleicht gibt es eine Möglichkeit zum Recompile. Das wäre dann der 
kürzere Weg.

> In Active-HDL gibt es Workspace -> Compile Workspace.
> Kann man dies benutzen, oder muss man grundsätzlich den Weg
> via Lattice Diamond 2 gehen?
Diamond brauchst Du nur zur Synthese und auch erst, wenn Deine 
funktionale Simulation zufriedenstellend läuft.

> B) Die Bedienung von Active-HDL, dass man im ersten Anlauf
> keine WAVE-Darstellung sieht, beim 2. Mal aber schon,
> schaut irgendwie auch komisch aus. Ist das normal?
Ja. Du kannst auch erst die Signale hinzufügen und dann auf "Run" 
drücken. Dann sollten die Signalformen gleich erscheinen.

> D) Kann man vielleicht in Lattice Diamond ändern,
> übersetzen und Active-HDL erkennt, dass die Source-Files
> (oder VHDL-Simulation-Files) geändert wurden und
> führt die Simulation von alleine wieder aus und zeichnet Kurven.
> Vermutlich aber nur eine Wunsch-Vorstellung?
Keine Ahnung. Klingt aber nach einem netten Feature.

Duke

von Duke Scarring (Gast)


Lesenswert?

LatticeAnfänger schrieb:
> Eine Frage habe ich noch vergessen:
>
> 4) Ich habe z.B. eine Implementierung mit 2 Eingängen, 2 Ausgängen
> und zig internen Signalen. In der Testbench sehe ich (bei Port)
> nur die 2 Eingänge und 2 Ausgänge. Muss ich die internen Signale
> auch nach außen führen, damit ich sie in der Wave-Darstellung sehen
> kann?
Nein, üblicherweise kannst Du Dich durch Deine Designhierarchie klicken 
und Dir alle gewünschten internen Signale zur Wavedarstellung 
hinzufügen.

Duke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.