Forum: FPGA, VHDL & Co. Hochsprachencompiler für FPGA (z.B. Handel-C)


von Jason H. (jason80)


Lesenswert?

Hallo,
ich suche Infos, was aktuell an Hochsprachen zur FPGA-Entwicklung zur 
Verfügung steht, noch dazu im Opensource Bereich. Mit Hochsprachen meine 
ich nicht VHDL oder Verilog, sondern z.B. modifizierte C-Dialekte wie 
http://en.wikipedia.org/wiki/Handel-C oder 
http://de.wikipedia.org/wiki/SystemC.
(Es steht außer Diskussion, dass mit C nicht die gleiche Performance 
erreicht wird, wie z.B. mit VHDL, aber es gibt immer Anwendungsfälle, in 
denen z.B. die schnelle Portierbarkeit vorhandenen Codes eine größere 
Rolle spielt als maximale Performance.)

Ich kann außer FpgaC (http://fpgac.wiki.sourceforge.net/) kein solches 
Programm als Opensource finden, und die Entwicklung an FpgaC läuft wenn 
überhaupt sehr schleppend. Sind euch andere bekannt?
SystemC ist ein offener Standard. Existieren nur kommerzielle Compiler, 
die darauf basieren?

Danke
Jason

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Jason Hadley wrote:
> Es steht außer Diskussion, dass mit C nicht die gleiche Performance
> erreicht wird, wie z.B. mit VHDL

Warum?

> SystemC ist ein offener Standard. Existieren nur kommerzielle Compiler,
> die darauf basieren?

Wie kommst Du darauf? Die Referenz Library der OSCI läuft doch mit GCC.

Gruß
Marcus

von Mathi (Gast)


Lesenswert?

StreamsC ist die Vorlage zu ImpulseC gewesen und die Quellen finden sich 
hier: http://www.rasr.lanl.gov/StreamsC/

von Jason H. (jason80)


Lesenswert?

>> Es steht außer Diskussion, dass mit C nicht die gleiche Performance
>> erreicht wird, wie z.B. mit VHDL
> Warum?
Dies soll nicht Thema meiner Frage sein, aber ich gehe davon aus, dass 
viele VHDL-Programmierer C verteufeln würden, weil manuell optimiertes 
VHDL in den meisten Fällen mehr oder weniger große Performancevorteile 
gegenüber C hat. Wenn nicht, um so besser.

>> SystemC ist ein offener Standard. Existieren nur kommerzielle Compiler,
>> die darauf basieren?
>
> Wie kommst Du darauf? Die Referenz Library der OSCI läuft doch mit GCC.

Kannst du dies genauer ausführen? Kann ich den GCC so erweitern, dass 
ich SystemC code in eine Netlist übersetzen kann? Wie? Gibt es ein 
Tutorial für Anfänger? Es geht mir um die praktische Anwendung, nicht um 
die theoretische Möglichkeit, SystemC zu parsen in ein Format, das ich 
nicht weiter verwenden kann.

Danke
Jason

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Jason Hadley wrote:
> Kannst du dies genauer ausführen? Kann ich den GCC so erweitern, dass
> ich SystemC code in eine Netlist übersetzen kann? Wie? Gibt es ein
> Tutorial für Anfänger? Es geht mir um die praktische Anwendung, nicht um
> die theoretische Möglichkeit, SystemC zu parsen in ein Format, das ich
> nicht weiter verwenden kann.

Mir war nicht klar, das Du auf SystemC Synthese hinaus willst. Niemand 
verwendet SystemC ernsthaft für die Synthese... }:^)

Dafür gibt es meines Wissens keine OpenSource Werkzeuge.

Gruß
Marcus

von Jason H. (jason80)


Lesenswert?

>Mir war nicht klar, das Du auf SystemC Synthese hinaus willst. Niemand
>verwendet SystemC ernsthaft für die Synthese... }:^)

Jetzt verstehe ich dich gar nicht mehr. Erst zweifelst du an, dass 
C-Dialekte bei der FPGA-Entwicklung Performancenachteile bringen. Jetzt 
dies.

Wozu ist die OSCI-Referenzimplementirung gedacht? Führt sie eine reine 
Codevalidierung durch, oder liefert sie compilierten Output? Wenn ja, 
könnte ich diesen Output eventuell weiter prozessieren.

Es wäre nett, wenn du in ein paar Zeilen einen kurzen Überblick über 
Stand und praktische Einsatzmöglichkeiten von SystemC gibst, da ich auf 
deren Webseite keine Zusammenfassung finden kann, die etwas anderes 
beschreibt als Zweck und Ziele der Initiative, also keine praktisch 
verwertbaren Infos.

Dass niemand SystemC ernsthaft für die Synthese verwendet, impliziert, 
dass es für etwas anderes verwendet wird. Wofür?

Danke
Jason

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Jason Hadley wrote:
> Jetzt verstehe ich dich gar nicht mehr. Erst zweifelst du an, dass
> C-Dialekte bei der FPGA-Entwicklung Performancenachteile bringen. Jetzt
> dies.

Ich bin von Simulation ausgegangen, nicht von Synthese. Aber auch bei 
letzterem hat SystemC keine grundsätzlichen Nachteile -- höchstens 
welche die von der Implementierung abhängen.

> Wozu ist die OSCI-Referenzimplementirung gedacht?

Simulation. Ein Schritt, der bei FPGA Entwicklung gern mal ausgelassen 
wird.

> Führt sie eine reine Codevalidierung durch, oder liefert sie
> compilierten Output? Wenn ja, könnte ich diesen Output eventuell
> weiter prozessieren.

Die OCSI library ist ein Simulator. Der Output ist entweder Text (cout 
-- normales C++ eben) oder VCD (Verilog Change Dump, auch Text).

> Es wäre nett, wenn du in ein paar Zeilen einen kurzen Überblick über
> Stand und praktische Einsatzmöglichkeiten von SystemC gibst, da ich auf
> deren Webseite keine Zusammenfassung finden kann, die etwas anderes
> beschreibt als Zweck und Ziele der Initiative, also keine praktisch
> verwertbaren Infos.

> Dass niemand SystemC ernsthaft für die Synthese verwendet, impliziert,
> dass es für etwas anderes verwendet wird. Wofür?

Entwurf und Verifikation des Entwurfs auf Systemebene. Algorithmen, 
Kommunikation, Referenzmodelle für spätere RTL Simulation, etc. Viel 
höhere Abstraktionsebene als RTL.
Natürlich musste man in diese Bibliothek auch Konstrukte einbauen, die 
Register beschreiben. Mit der Folge, dass einige Tool Hersteller es sich 
nicht nehmen ließen, solche Beschreibungen zu synthetisieren.

http://www.doulos.com/knowhow/systemc/

Gruß
Marcus

von Jason H. (jason80)


Lesenswert?

Vielen Dank!

von Günter -. (guenter)


Lesenswert?

Wenn du dich nicht auf C festlegst, dann gibt es als OpenSource noch 
MyHDL http://myhdl.org.

Ein anderer Ansatz war Confluence, das ist aber leider vollkommen von 
der Bildfläche verschwunden. Es gibt noch einige Projekte auf OpenCores, 
wie z.B.

* http://www.opencores.org/projects.cgi/web/cf_cordic/overview
* http://www.opencores.org/projects.cgi/web/cf_fft/overview
* http://www.opencores.org/projects.cgi/web/cf_fp_mul/overview

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.