Forum: FPGA, VHDL & Co. Frage: VHDL <-> Verilog Umwandlung oder Gemischte Verwendung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Haydar B. (haydar)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe wenig Erfahrung mit Verilog/VHDL und den Entwicklungstools.
Daher eine Frage an die Experten:

Angenommen man hat die Quelldateien für bestimmte Komponenten (z.B. 
Schnittstellen) die man nutzen möchte in Verilog vorliegen, möchte aber 
im Projekt bei VHDL bleiben.

Ist es möglich beide Sprachen in einem Projekt zu mischen?

Kann man von der einen Sprache in die andere automatisch Übersetzen 
lassen?

Ist eine solche Übersetzung eindeutig, frei von Fehlern?

Oder würde man immer empfehlen die Übersetzung manuell durchzuführen, 
wenn die Anwendung hohen Sicherheitsansprüchen genügen muss?

Danke und Gruß
Haydar

von daniel__m (Gast)


Bewertung
1 lesenswert
nicht lesenswert
hi,

nimm die Sourcen wie sie sind. Mir ist keine automatischen Tool zur 
Konvertierung bekannt und frei von Fehlern würde das sicherlich auch 
nicht sein.

Das übliche Vorgehen wäre, einfache einen VHDL Wrapper 
(Komponentenbeschreibung und Instanziierung) schreiben und im 
VHDL-Projekt verwenden. Die Synthese-Tools kommen damit i.d.R klar. 
Einzig Simulatoren könnten zicken, da sie das als Mixed-Language 
Simulation sehen und dafür eine extra/zusätzliche Lizenz verlangen (z.B. 
Modelsim).

grüße

von C. A. Rotwang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Haydar B. schrieb:
> Ist es möglich beide Sprachen in einem Projekt zu mischen?

Ist die Frage, ob der benutzte Simulator (bspw modelsim ) und das 
Synthesetool "mixed Language" unterstütz oder nicht. Und das hängt nicht 
selten von der Lizenz ab. In der Regel ist eine Umwandlung unnötig.

von Mampf F. (mampf) Benutzerseite


Bewertung
-1 lesenswert
nicht lesenswert
C. A. Rotwang schrieb:
> Haydar B. schrieb:
>> Ist es möglich beide Sprachen in einem Projekt zu mischen?
>
> Ist die Frage, ob der benutzte Simulator (bspw modelsim ) und das
> Synthesetool "mixed Language" unterstütz oder nicht. Und das hängt nicht
> selten von der Lizenz ab. In der Regel ist eine Umwandlung unnötig.

Simulatoren sind überbewertet ... imho^^

Simulation spare ich mir meist komplett ... Aber falls ich doch mal 
simulieren muss, verwende ich immer GHDL ... Glaub das kann kein 
Verilog, oder?

von Vancouver (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn deine Tools den Mixedlanguage-Mode unterstützen, dann lass die 
Sourcecodes so wie sie sind. In größeren Projekten ist es völlig normal, 
dass  Module aus beiden Sprachen zusammengelinkt werden. Ich habe fast 
kein Projekt gemacht, wo es anders ist.

Was die Tools angeht: GHDL kann nur VHDL. Modelsim PE (Student Edition) 
kann beides, aber nicht beides gleichzeitig - ein Witz. Die Vollversion 
von Modelsim kann alles (auch SystemC und SystemVerilog), kostet aber 
richtig Asche. Die Synthesetools von Vivado unterstützen hingegen schon 
in der freien Webpack-Version den Mixedlanguage-Mode.


Automatische Konverter sind mir nicht bekannt. Du kannst aber z.B. mit 
einem geeigneten Synthesetool aus dem Original-Sourcecode eine 
HDL-Netzliste erzeugen lassen. Die ist dann zwar nicht mehr so einfach 
human-readable, aber du kannst sie zumindest mitsimulieren. Ich hab 
allerdings noch nicht ausprobiert, ob man eine VHDL-Netzliste aus einem 
Verilog-Sourcecode erzeugen kann bzw. umgekehrt. Interessante Frage, 
müsste ich mal die Kollegen nerven.

Falls das alles nicht geht, musst du manuell übersetzen. Das ist 
natürlich fehleranfällig und mit viel Arbeit verbunden, und du musst 
beide Sprachen beherrschen - was übrigens ohnehin nicht dumm ist. Es ist 
immer ein großer Fehler, alle Probleme in seiner jeweiligen 
Lieblingssprache lösen zu wollen. Gegenstand endloser Diskussionen hier 
im Forum.

von VHDL hotline (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn die Lizenzen der Tools stimmen, kann man wie gesagt beide Sprachen 
mischen.

Es gibt einige wenige Stolpersteine, die aber schnell auffallen und für 
die es workarounds gibt. Z.B ist Verilog case sensitive und VHDL nicht, 
d.h. wenn bei einem Verilog Modul jemand die geniale 
Implementierungsidee hatte mehrere Interfacesignale gleichen Namens mit 
unterschiedlicher Schreibweise (groß/klein) zu nutzen oder ein parameter 
(generic in VHDL) gleich zu nennen wie ein interface wire (signal in 
VHDL), nur mit anderer Schreibweise, dann kann man das nicht einfach so 
in VHDL instanziieren, sondern ein wrapper muss her.

von Martin S. (strubi)


Bewertung
0 lesenswert
nicht lesenswert
Vancouver schrieb:
> Automatische Konverter sind mir nicht bekannt. Du kannst aber z.B. mit
> einem geeigneten Synthesetool aus dem Original-Sourcecode eine
> HDL-Netzliste erzeugen lassen. Die ist dann zwar nicht mehr so einfach
> human-readable, aber du kannst sie zumindest mitsimulieren. Ich hab
> allerdings noch nicht ausprobiert, ob man eine VHDL-Netzliste aus einem
> Verilog-Sourcecode erzeugen kann bzw. umgekehrt. Interessante Frage,
> müsste ich mal die Kollegen nerven.

Die X* und L*-Tools können das zumindest, aber bei X war man mit 
Verstümmelungen schon einfallsreich, damit es nicht mit allen 
VHDL-strikten Simulatoren geht. Heisst beim X 'Generate Post-Map 
Simulation model', geht auch in 'post PAR'.

Was Konvertierung angeht, mit icarus verilog kann man bisschen was 
machen, klappt aber auch nicht immer, und man muss mim Editor ran. Siehe 
dazu auch:

https://github.com/ghdl/ghdl/issues/711

von Haydar B. (haydar)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antworten, das hat mir schon mal geholfen.
Gruß
Haydar

von Vancouver (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Martin S.

Post-PAR ist aber dann doch ein Timing-Simulationsmodell mit Delays, 
oder? Kann man nach PAR auch noch ein rein funktionales Modell erzeugen?

von Martin S. (strubi)


Bewertung
0 lesenswert
nicht lesenswert
Vancouver schrieb:
> @Martin S.
>
> Post-PAR ist aber dann doch ein Timing-Simulationsmodell mit Delays,
> oder? Kann man nach PAR auch noch ein rein funktionales Modell erzeugen?

Nee, so richtig funktional ist es schon nach dem Mappen nicht mehr, da 
die HDL aus der bereits vom Synthesetool gemappten Netzliste (mit 
allfällig instanzierten FPGA-Primitiven) generiert wird. Wenn von den 
Primitiven die Simulationsmodelle nicht oder für den entsprechenden 
Simulator nicht lesbar (IEEE 1735 sei Dank) vorliegen, kommt man so 
schon mal nicht weiter.

Dementsprechend läuft die Simulation auch sehr langsam ab, oder macht 
Macken, wenn der Simulator mit VITAL-Kram nicht klarkommt. Das kann 
derart zum Showstopper werden, dass man sich eine andere FPGA-Plattform 
suchen muss, wenn durchgängige Verifikation ein Muss ist.

von Vancouver (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mit rein funktional meinte ich ohne Timing, d.h. kombinatorische Logik 
hat eine Delay von Null im Simulationsmodell. Technologieabhängige 
Primitive sind da natürlich drin, das ist schon klar. Aber abgesehen 
davon, dass sie die Simulation verlangsamen und auf einigen Simulatoren 
nicht funktionieren, haben sie keine weiteren Auswirkungen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.