Forum: FPGA, VHDL & Co. Post Map Simulation - Lattice / Active HDL


von Till V. (schlupp)


Lesenswert?

Hallo,

ich hätte eine Frage zur Bedienung des Programms Active-HDL(Lattice 
Edition). Ich würde gerne eine Post Map Simulation durchführen und weiss 
nicht genau wie ich vorgehen soll (habe vor kurzem mit VHDL angefangen).

Nach dem Map-Prozess besitze ich zwei Files mit den Endungen .vho und 
.sdf.
Soweit ich verstanden habe enthält die Datei mit der Endung .sdf die 
Verzögerung der Logikgatter und die Datei mit der Endung .vho die 
Netzliste (die Verschaltung der Bauelemente).

Momentan gehe ich folgendermaßen vor:

1) Ich öffne das Active HDL-Programm
2) Ich lege ein neues Projekt an und füge die Dateien mit den Endungen 
.vho, .sdf und die Testbench aus der funktionellen Simulation hinzu.
3) Ich lege die Testbench als Toplevel-Entity Fest
4) Simulation - > Initialize Simulation
5) Rechtsklick auf die Top-Level-Entity -> Add to Waveform

Da ich die Testbench aus der Funktionellen Simulation verwende (das 
eigentliche VHDL-Programm ist als Component eingebunden) besitzt diese 
keinen Verweis auf die Netzliste im .vho File? Muss ich meine Testbench 
für die neue Simulation anpassen?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Till V. schrieb:
> Ich würde gerne eine Post Map Simulation durchführen
Zu deinem Problem kann ich allerdings leider nicht helfen, denn es liegt 
sicher schon über 15 Jahre zurück seit ich die letzte deratige 
Simulation gemacht habe.

Trotzdem (oder deshalb) stellt sich mir dei Frage:
Mit welchem Ziel machst du diese Simulation? Welche Fehler erhoffst du 
damit zu finden?

: Bearbeitet durch Moderator
von Till V. (schlupp)


Lesenswert?

Ich bin Student und will die Simulation einfach einmal ausführen (aus 
Interesse). Bei meinem Beispiel handelt es sich auch nur um ein 
einfaches Schieberegister.

: Bearbeitet durch User
von Vancouver (Gast)


Lesenswert?

Till V. schrieb:
> Muss ich meine Testbench
> für die neue Simulation anpassen?

Eigentlich nicht, die Entity ist ja die gleiche. Wenn der Simulator das 
vho-Format versteht, sollte das gehen. Funktioniert es denn, so wie du 
es geschildert hast?

Nur die Signalnamen innerhalb des Moduls haben sich durch die Synthese 
und das Mapping wahrscheinlich geändert.

von Till V. (schlupp)


Lesenswert?

Hallo,

und schonmal vielen Dank für die Antworten. Ich habe es bisher versäumt 
(habe sie auch irgendwie übersehen...) folgende Warnung durchzugeben:

# ELBREAD: Warning: ELBREAD_0080 sipo_register_tb.vhd (125): Design unit 
behavioural:SIPO_Register_NEU instantiated in 
test.sipo_register_tb(testbench) not found in searched libraries: test.

Die Simulation startet, aber die Diagramme bleiben auf Undefiniert.

Die Testbench versucht meine VHDL-Beschreibung des Schieberegisters 
(SIPO_Regsiter_NEU) zu laden. Aber eigentlich möchte ich ja die 
Netzliste aus dem .vho File benutzen. Muss ich irgendwo explizit 
auswählen, dass es sich um eine Gate-Level-Simulation handelt?

: Bearbeitet durch User
von Duke Scarring (Gast)


Lesenswert?

Möglicherweise muß die vho-Datei in vhd umbenannt werden.
Vorher sollte die Originaldatei irgendwohin weggesicher werden.

DUke

von Till V. (schlupp)


Lesenswert?

> Nur die Signalnamen innerhalb des Moduls haben sich durch die Synthese
> und das Mapping wahrscheinlich geändert.

Nicht nur die Namen... sondern auch die Anzahl der Ein- und 
Ausgangssignale unterscheidet sich. Ich werde jetzt versuchen das 
eigentliche Programm mit in die Testbench zu schreiben, statt dieses 
durch eine Komponente aufzurufen.

Duke Scarring schrieb:

> Möglicherweise muß die vho-Datei in vhd umbenannt werden.

Das hat leider auch nicht funktioniert.

Ich denke mit dem Hinweis, dass man außer diesen drei Dateien nichts 
anderes mehr benötigt, werde ich das Problem wohl irgendwann lösen :)

: Bearbeitet durch User
von Vancouver (Gast)


Lesenswert?

Ich schätze mal, du musst dem Simulator klarmachen, dass er eine 
Netzliste für die Komponente bekommt, und keinen VHDL-Code. Vielleicht 
hilft dir das weiter:

https://www.intel.com/content/www/us/en/programmable/quartushelp/15.1/index.htm#eda/simulation/activeHDL/eda_pro_aldec_vhdl_sim_d4193e763.htm

Das ist zwar über Quartus, aber die verwenden auch ActiveHDL soweit ich 
weiß.

>Ich werde jetzt versuchen das
>eigentliche Programm mit in die Testbench zu schreiben, statt dieses
>durch eine Komponente aufzurufen.

Nein, das versuchst du nicht. Das Schieberegsiter ist eine 
Hardwarebeschreibung, de irgendwann einmal im FPGA instanziiert werden 
soll, und die Testbench ist eine reine Simulationsumgebung. Das musst du 
sauber getrennt halten, denn die Testbench kommt nicht mit in den FPGA. 
Denk bitte nicht in Softwarekategorien, das geht schief bei VHDL.

von Till V. (schlupp)


Lesenswert?

Vancouver schrieb:
> Ich schätze mal, du musst dem Simulator klarmachen, dass er eine
> Netzliste für die Komponente bekommt, und keinen VHDL-Code. Vielleicht
> hilft dir das weiter:
>
> 
https://www.intel.com/content/www/us/en/programmable/quartushelp/15.1/index.htm#eda/simulation/activeHDL/eda_pro_aldec_vhdl_sim_d4193e763.htm

Guten Morgen,

ich habe es jetzt geschafft. Der Link hat mir sehr geholfen. Zusätzlich 
musste ich in der Testbench den Eintrag
"use entity work.Name(behavioral)"zu "use entity work.Name(structural)" 
ändern (Modul liegt nach Synthese im .vho File als structural vor).


Danke für die Hilfe

von Christophz (Gast)


Lesenswert?

Till V. schrieb:
> ich habe es jetzt geschafft. Der Link hat mir sehr geholfen. Zusätzlich
> musste ich in der Testbench den Eintrag
> "use entity work.Name(behavioral)"zu "use entity work.Name(structural)"
> ändern (Modul liegt nach Synthese im .vho File als structural vor).

Es liegt nicht als "structural" vor, sondern das ist simple der Name den 
du bzw. das Tool der Architecture gegeben hat.

Beim Instanzieren von Komponenten ist es ungewöhnlich, dass man den 
Architekturnamen mitgibt (Das ist ja etwas internes, das ändern könnte 
ohne dass sich am Interface - die Entity - etwas ändert). Ein "use 
entity work.Name" sollte für beide Simulationsarten funktionieren.

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.