Forum: FPGA, VHDL & Co. QSYS Platform-designer Testbench / Simulation mit ModelSim, wie macht man das richtig?


von Christian G (Gast)


Lesenswert?

Hallo,

ich versuche mich schon seit geraumer Zeit daran vom Quartus Platform 
designer generierte QSYS Systeme und deren Komponenten mit dessen 
generierten Testbenches vernünftig in ModelSim zu simulieren aber 
irgendwie gelingt mir das nur ansatzweise.

Vielleicht hat ja Jemand Erfahrung damit und kann mir evtl. einen Tipp 
geben was ich falsch mache...

Meine Erste Beobachtung, es scheint leichte Unterschiede zu geben je 
nachdem ob man verilog oder vhdl als Sprache bei der Generierung der 
sources / Testbench durch den QSYS Platform designer auswählt.
Z.B. hat der generierte sdram controller in vhdl nicht funktioniert, in 
verilog aber schon... ?!
Daher hab ich mich durchgerungen dort verilog zu nutzen (natürlich hab 
ich  mir aber vhdl angeeignet und nicht verilog! ...
Ein weitere Ungereimtheit die mir bei der benutzung aufgefallen ist, 
wenn ich z.B. bei einer PIO einstelle es ist ein input und soll in der 
Testbench auf einen festen Wert eingestellt werden ist das nachher in 
der Testbench die der Platform designer generiert einfach nicht da und 
in der
Simulation in ModelSim wird der input auch nicht gesetzt.?!
Unabhängig davon ob ich verilog oder vhdl beim generieren der Testbench 
auswähle.

Jetzt hab ich weiter herausgefunden das der eigentlich Ablauf der 
Testbench in einem "Master Test Programm" beschrieben werden soll, also 
hab ich mir entprechend eines (system verilog) erstellt und das von Hand 
in die Testbench eingefügt...
funktioniert, aber auch irgendwie komisch das sowas nicht direkt mit 
angelegt und eingebunden wird beim Erstellen der Testbench durch den 
Platform designer.
Ich meine dafür ist doch so eine GUI und ein designer eigentlich da, 
oder sehe ich das falsch?

So weit so gut aber dann wollte ich den Altera embedded IP UART core 
simulieren und da wurde es dann noch komischer.
Mein Plan war das UART RX pin conduit BFM, was der Platform designer 
generiert, in dem Master Test Programm zu nutzen um den Pin zu 
manipulieren / den Empfang eines characters zu simulieren.
Klappt auch, ABER der UART tut einfach nichts in der Simulation!
Ich sehe der rx Pin nimmt entsprechende Zustände an wenn mein Master 
Test Programm das Zeichen "sendet" aber der UART core reagiert einfach 
nicht darauf!
Ich habe dann versucht aus dem generiertem verilog source des UART 
schlau zu werden und da wird alles noch komischer für mich, also in der 
Simulation wird der divisor für die clock entsprechende verringert um 
wohl einfach Simulations-Zeit zu sparen,
OK muss man auch vorher wissen sonst klappt der Empfang nicht wegen 
falscher Baudrate (framing error), OK kein Problem, aber dann... es gibt 
darin Funktionalität die es ermöglicht automatisch ein Character an den 
internen UART Empfänger senden zu lassen,
toll, aber ich sehe nirgends etwas was ermöglicht diesen Character von 
"Aussen" einzustellen, im Prinzip kann ich ihn nur nachträglich 
hardwiren in dem vom Platform designer generiertem verilog source, was 
echt blöde ist da alles überschrieben wird wenn man das QSYS / die 
Testbench
neu generieren lässt.
Dazu kommt aber auch noch das dieses interne senden in dem UART core 
niemals ausgeführt wird weil dessen "enable" irgendwie auf dem 
eingesynchten internen rx PIN beruht der in der Simulation aber nie 
gesetzt wird weil das durch diese interne sende Funktionalität passieren 
soll (so fern ich die verilog source richtig verstehe),
also der Hund beißt sich da meiner Meinung nach selbst in den Schwanz.

Ich habs nur hinbekommen in dem ich dieses interne senden einfach aus 
dem UART core rausgenommen habe.... DAS kann doch so nicht richtig 
sein!!!

Btw. ich nutze die aktuelle 20.1.1 Quartus lite Version...

Also falls jemand eine Idee hat was da falsch läuft... bitte sagt es 
mir!!!

thx

von Gustl B. (gustl_b)


Lesenswert?

Huiuiuiui, also erstmal darfst du die Sprachen mischen. Also du kannst 
ein Verilog Modul in VHDL einbinden und anders herum.

Dann kannst du alle Module einzeln in Testbenches testen. Also den UART, 
den RAM Controller ...

Das mit dem QSYS erzeugt dir aber ein System. Und das testest du dann 
als Ganzes. Das hat im Toplevel Ein- und Ausgänge, die kannst du in 
einer Testbench bespaßen.

Da habe ich noch nicht so wirklich deinen Ansatz verstanden was du genau 
in den Testbenches machst. Du könntest hier auch Code hochladen.

Zu deinem UART:
Ja der hat interne Anschlüsse wie Takt und Daten und Busy oder Ready, 
... Und extern RX und TX Pins. Wenn du den testen willst, dann musst du 
auch zumindest manche interne Signale bespaßen. Z. B. mit einem Takt.
So eine Testbench ist schnell geschrieben für einen UART. Aber zeig 
gerne her was du aktuell hast.

: Bearbeitet durch User
von Christian G (Gast)


Angehängte Dateien:

Lesenswert?

ich hab einfach mein test Projekt nur mit dem uart mal angehängt, das 
libraries Verzeichnis was ModelSim anlegt hab ich aus Platzgründen 
gelöscht, hier sieht man das der UART die character empfängt "Hallo" ... 
dazu habe ich die "testsys_uart.v" anpassen müssen, Zeilen 357-368.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Huiuiuiui, also erstmal darfst du die Sprachen mischen. Also du kannst
> ein Verilog Modul in VHDL einbinden und anders herum.

Das geht aber nur wenn seine Modelsim Lizenz dieses Feature 
freigeschaltet hat. Ist das beim integrierten Modelsim in den neuesten 
Quartus Varianten der Fall?

: Bearbeitet durch User
von Christian G (Gast)


Lesenswert?

Tobias B. schrieb:
> Das geht aber nur wenn seine Modelsim Lizenz dieses Feature
> freigeschaltet hat. Ist das beim integrierten Modelsim in den neuesten
> Quartus Varianten der Fall?

also man kann vhdl und verilog/system verilog mischen bis zu nem 
gewissen Grad. Z.B. kann man von vhdl aus anscheinend keine verilog 
tasks oder functions ausführen und umgedreht funktionieren da auch ein 
paar Dinge nicht.
Aber ne vhdl testbench / top level zusammen mit den vom Platform 
designer generierten verilog files geht ohne weiteres.

von Blechbieger (Gast)


Lesenswert?

Tobias B. schrieb:
> Das geht aber nur wenn seine Modelsim Lizenz dieses Feature
> freigeschaltet hat. Ist das beim integrierten Modelsim in den neuesten
> Quartus Varianten der Fall?

Ja, ist auch notwendig da mehr und mehr der Intel IP-Cores nur noch in 
Verilog mit VHDL-Wrapper vorliegen.

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.