Forum: FPGA, VHDL & Co. Co-Simulation mit open source


von Tobias (. (Gast)


Lesenswert?

Beim Durchstöbern des Verkaufs-Themen-Bereiches kam mir gerade folgende 
Idee:
Beitrag "Re: [V] Xilinx Artix-7 A200T AC701 FPGA Eval Kit"

Gibt es eine tool chain, welche eine hardware-Co-Simulation von 
Verilog-HDL-Programmen direkt auf einer fpga-Plattform ermöglicht?

Soweit ich es kenne, geht das nur mit kommerziellen tools der 
Hersteller?

Ich würde gerne vorhandene und neu zu bauende Verilog-Beschreibungen in 
Echtzeit / möglichst schnell simulieren. Wenn machbar auch C-Programme 
übersetzen lassen.

von Martin S. (strubi)


Lesenswert?

Renode, Verilator?

Die passen fuer nicht allzu tiefgehende Verifikation ganz gut und sind 
flott.

von Joe F. (easylife)


Lesenswert?

Tschuldigom, du willst FPGA Code auf einem FPGA simulieren?

Warum lässt du nicht einfach den Code auf dem FPGA ausführen?

von Tobias (. (Gast)


Lesenswert?

Joe F. schrieb:
> Warum lässt du nicht einfach den Code auf dem FPGA ausführen?

Weil z.B. Modelle der Umgebung einer Schaltung und die auftretenden 
Szenarien nicht herstellbar sind oder sich nicht ausführen / erzeugen 
lassen, weil damit etwas kaputt gehen, oder GEfahr erzeugt werden kann.

Darüber hinaus gelten alle anderen Gründe, warum überhaupt simuliert 
wird.

Man sollte auch nicht immer die intention infragestellen. Das, was ich 
ohne Simulation machen kann, mache ich ohne.

Und das, was ohne HW-Beschleunigung machbar ist, mache ich natürlich. Es 
ist aber eine Zeit- und Kostenfrage, ob ich 2min oder 20min warten muss, 
bis ein Ergebnis kommt.

Gewisse Entwicklungen sind dann nicht machbar oder führen zu Kosten, die 
das Produkt für Viele unerschwinglich machen.

Somit ist open source Simulation ohne extreme Kosten eine nachfragbare 
Sache, finde ich.

von daniel__m (Gast)


Lesenswert?

Tobias N. schrieb:
> hardware-Co-Simulation

Davon habe ich noch nichts gehört, und ich denke ich kenne zumindest das 
Xilinx-Portfolio. D.h. Xilinx bietet sowas nicht an.

Ich kenne eine "Co-Simulation". Der Begriff kommt aus der HLS-Schiene 
und bedeutet nichts anderes als eine Simulation der erzeugten Logik auf 
dem PC (Modelsim/Questsim,XSim, etc).

Eine "hardware-Co-Simulation", die direkt auf einem FPGA läuft, ist mir 
nicht bekannt.

von Tobias (. (Gast)


Lesenswert?

daniel__m schrieb:
> Eine "hardware-Co-Simulation", die direkt auf einem FPGA läuft, ist mir
> nicht bekannt.

Ich meine das, was MATLAB darunter versteht, nämlich einen Algorithmus 
nicht nur in MATLAB, als auf der CPU in C zu simulieren, sondern 
parallel auch das bitgenaue Modell in integer. Und das eben a) in 
hardware, um es zu beschleunigen und b) auch Software in C oder nicht 
nur Verilog.

Möglicherweise ist der Begriff nicht gut gewählt.

von Martin S. (strubi)


Lesenswert?

@Tobias: Formuliere doch mal praezise aus, was du genau brauchst.
Es gibt einiges an OpenSource-Ansaetzen, aber du hast trotzdem die 
Aufgabe, die Simulation mit Hilfe der Tools selber zu stricken.
Die mir bekannte Methode der Co-Sim mit Matlab reicht, das Modell gegen 
die Implementierung zu verifizieren. Das ist aber a priori eine pure 
SW-Simulation. Wenn du was wie Simulink brauchst, um richtig SW mit HW 
'in the loop' zu simulieren,  gibt's nix kostenloses.
Wenn MyHDL nicht gerade in einem katastrophalen Zustand waere, haette 
ich das noch empfehlen koennen. Python ist fuer viele OpenSourceler 'das 
bessere Matlab'. Damit mache ich auch (per netzwerkfaehige FPGA-nodes) 
meine verteilte Co-Simulation/Implementierung von DSP-Pipelines.

von Duke Scarring (Gast)


Lesenswert?

daniel__m schrieb:
> Davon habe ich noch nichts gehört, und ich denke ich kenne zumindest das
> Xilinx-Portfolio. D.h. Xilinx bietet sowas nicht an.

Gab es mit ISM:

UG817
"ISim Hardware Co-Simulation Tutorial:
Accelerating Floating Point FFT Simulation"

Keine Ahnung, ob es das im Vivado auch noch gibt und ob bzw. welche 
Lizenz dafür nötig ist.


Tobias N. schrieb:
> Soweit ich es kenne, geht das nur mit kommerziellen tools der
> Hersteller?
Sowas hab ich mir schon 'zu Fuß' gebaut:

- Puffer für Eingangswerte
- Puffer für Ergebnisse
- FSM um das DUT zu triggern

Und dann das Ganze vom PC aus über die serielle Schnittstelle gesteuert.
Je nach Datenaufkommen würde ich aber heute eine schnellere 
Schnittstelle empfehlen.

Duke

von Christophz (Gast)


Lesenswert?

Tobias N. schrieb:
> Ich würde gerne vorhandene und neu zu bauende Verilog-Beschreibungen in
> Echtzeit / möglichst schnell simulieren. Wenn machbar auch C-Programme
> übersetzen lassen.

Nach dem was ich hier gelesen habe, klingt das für mich mehr nach dem 
Wunsch "Verification in Hardware" zu machen als das, was unter 
co-simulation (z. B. mit Renode, Verilator, Python/MyHDL oder Simulink) 
verstanden wird.

Um beliebige HDL-Blöcke in Hardware zu verifizieren kann man z. B. 
Testbenches schreiben die synthetisierbar sind. Dann lässt sich das 
ganze (Testbench + Design) im Simulator simulieren und läuft auch mit 
realer Geschwindigkeit im FPGA (an dem Punkt nenne ich das nicht mehr 
Simulation).

Die synthetisierbare Testbench kann dann nette komplexere features haben 
wie Kommunikation mit einem Entwicklungs PC etc. (Simulink nennt das 
dann FPGA-in-the-loop 
https://ch.mathworks.com/help/hdlverifier/fpga-in-the-loop.html?s_tid=srchtitle).

Mir ist bis jetzt kein Open Source Framework bekannt, dass diesen 
Prozess direkt adressiert.
Open Source IP Blöcke wie z. B. eine USB Whishbone Bridge könnten aber 
schon alles sein was du brauchst (Dein zu verifizierender Block braucht 
dann natürlich ein Whishbone Interface oder einen Wrapper).
https://workshop.fomu.im/en/latest/

von Strubi (Gast)


Lesenswert?

Am "höheren" Ende gäbe es sonst noch das:

https://www.missinglinkelectronics.com/images/files/papers/EW2016-Session18-MLE-PCIeOverIP_r09.pdf

Das ist zwar kaum OpenSource, aber das Konzept demonstriert, wie leicht 
sich dann die Cores zwischen Sim und Syn austauschen lassen.
Auf die Weise kann man auch ein zunächst co-simuliertes System (z.B. 
qemu und ghdl) in die Hardware migrieren. qemu steuert also einen aufs 
Netzwerk exportierten "Virtuellen Bus" an, erst die Simulation, dann die 
Hardware, und schliesslich packt man alles auf den SoC. Mit renode geht 
das vielleicht noch eleganter/homogener.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Martin S. schrieb:
> Wenn MyHDL nicht gerade in einem katastrophalen Zustand waere, haette
> ich das noch empfehlen koennen.

Inwiefern ist MyHDL "gerade" in einem katastrophalen Zustand?

von Martin S. (strubi)


Lesenswert?

In Kuerze:
Insbesondere die VHDL-Konversion ist in einem inkonsistenten Zustand und 
Fixes werden seit Jahren vernachlaessigt. Heisst, die aktiven Entwickler 
arbeiten mit ihren eigenen Forks, die Fuehrung scheint sich ausgeklinkt 
zu haben. Darum: Fuer (Python-)Anfaenger unter argem Vorbehalt.

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.