Forum: FPGA, VHDL & Co. FPGA, Verilog - innere Signale auf Pins führen


von ElKo (Gast)


Lesenswert?

Liebe Community,

ich habe ein Design für einen ASIC, was ich auf einem FPGA (Altera 
Cyclone) testen möchte. Um besser die inneren Abläufe zu sehen, möchte 
ich einige Signale auf die IO-Pins legen.

Beispiel:

module FPGA_Design (GPIOs zu FPGA...);
    ASIC_Design ASIC_Design_0 (
        .Standard_Ports ()
        ...
    );
endmodule

module ASIC_Design (Standard_Ports ...);
    Inneres_Modul Inneres_Modul_0(...);
endmodule

module Inneres_Modul(...);
    reg Beliebiges_Signal;
endmodule

Wie kann ich einfach auf die inneren Signale wie Beliebiges_Signal 
zugreifen? Ich erzähl mal, was ich bisher mit wenig zufriedenstellenden 
Erfolg probiert habe und würde mich freuen, wenn ihr mir einen 
Fingerzeig geben könntet, wie man sowas elegenat machen kann.

Variante 1: XMR - xross module reference. In Verilog gibt es wohl die 
Möglichkeit auf Signale anderer Module über XMR zuzugreifen. Das ähnelt 
etwas der Objektorientierten Programmierung und würde hier nach meinem 
Verständnis wie folgt aussehen:
FPGA_Design.ASIC_Design_0.Inneres_Modul_0.Beliebiges_Signal
Funktioniert leider aber nicht. Zumindest beschwert sich entweder 
Quartus oder es kommt nichts raus. Stimmt es, dass dieses Konstrukt 
tatsächlich nicht Synthesefähig ist? Wäre schade, denn sonst könnte ich 
gleich noch weitere Auswertelogik auf dem FPGA platzieren, die die 
inneren Zustände automatisch auswertet.

Variante 2: SignalProbe Pins nutzen. Damit kann ich Pins des FPGA 
definieren, die bestimmte Signale nach außen führen können. Zwei 
Nachteile: Es können nur Signale genutzt werden, die nach der Synthese 
zur noch vorhanden sind. Und nach jedem Compile-Vorgang muss per Hand 
jedes Mal erneut Quartus angewiesen werden, die Signale auf die Pins zu 
routen und erneut fast komplett compiliert werden. Also leider nicht 
praktikabel.

Variante 3: Die Ports von meinem ASIC_Design und Inneres_Modul usw. 
immer wieder anpassen und die Debug-Signale nach außen führen. Absolutes 
NoGo für mich, weil ich erstens im Design Änderungen vornehmen müsste 
und ich zweitens enormen Aufwand mit der Portdefinition hätte, nur um 
ein Signal nach außen zu routen.

Variante 4: Das LogicAnalyzer Interface nutzen. Ich habe zwar einen 
guten LA von Agilent zur Verfügung, aber leider kein Altera-Interface um 
die JTAG-Schnittstelle zu nutzen. Deswegen diese Variante nicht weiter 
verfolgt.

Variante 5: SignalTab II. Prinzipiell keine schlechte Erfindung, nützt 
mir aber nur bedingt, da ich auf zwei verschiedenen FPGAs arbeite, die 
miteinander kommunizieren. Deswegen würde ich gern auf einem LA 
zeitbezogen die Signale sehen wollen, auch über längere Zeiträume die 
der interne FPGA-Speicher nicht abdecken könnte.

Was habe ich übersehen? Oder gibt es wirklich keine einfache 
Möglichkeit, sein Design zu debuggen, ohne es bearbeiten zu müssen? Wie 
macht ihr sowas? Würde mich über eine einfache Variante freuen, weil die 
bisherigen für mich so leider nicht zufriedenstellend sind... :-(

Viele Grüße, ElKo

von bko (Gast)


Lesenswert?

Variante6: Simulieren und Waveform anschauen, denn
> (...) habe ein Design für einen ASIC, was ich auf einem FPGA (...)
wenn es vorher ein Asic war, sollte es zu diesem eine testbench
mit vielen testcases für die Simulation geben, da im Asic noch weniger
observierungsmöglichkeiten als im FPGA vorhanden sind. Ein Asic sollte
ausführlich mittels Simulation auf seine Funktionalität verifiziert
worden sein.

von Trundle T. (shaheed)


Lesenswert?

Also wenn ich mir Signale aus inneren Modulen nach außen legen will, 
dann mach ich das immer mit Variante 3 und kotze dabei ab.... aber ne 
andere kenn ich nicht! Bin aber auch kein pro!
Wäre interessant zu wissen ob es sowas gibt und wie es umgesetzt ist!

von ElKo (Gast)


Lesenswert?

bko schrieb:
> wenn es vorher ein Asic war, sollte es zu diesem eine testbench
> mit vielen testcases für die Simulation geben ...

Ich habe mich anscheinend etwas missverständlich ausgedrückt. Das Design 
gibt es noch nicht als ASIC, sondern soll später als ASIC gefertigt 
werden. Ich entwickle gerade ein Design aus dem Nichts, inklusive 
Testbenches usw. Aber Testbenches in allen Ehren, manche Sachen möchte 
ich doch direkt auf dem FPGA testen, weil es eben doch noch etwas 
realitätsnäher ist. Ansonsten geb ich dir recht, dass die Testbenches 
und Simulationen auf jeden Fall ein komfortabler Ansatz sind, um das 
Verhalten des Systems zu beobachten.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Es gibt ab VHDL2000 und richtig erst ab VHDL2008, um auf interne Signale 
zuzugreifen. Da wird der Instanzname und er Pathname miteinader 
kombiniert. Ich hatte es mal bei Xilinx ISE ausprobiert wurder leider 
unterstützt und dann habe ich es nicht weiterverfolgt. Könnte sein dass 
es jetzt unterstützt wird.
Must mal unter Neuerungen VHDL2008 suchen da steht es meistens dabei.
Ob es dier bei deinem Verilog hilft weiß ich nicht. Kannst ja eine 
VHDL-top Instanz davorsetzen.

Eigener eigen Logik-Analyser im Design nutzen. Internem RAM des FPGAs 
nutzen.
Ein Dual Ram von der einen Seite mit den Testsignalen füllen und auf der 
Anderen Seite herausholen. (z.B. über eine Uart Leitung)

In VHDL gibt es den Typ record. Ich habe mein Design mit Records durch 
verdrahtet und wenn ich mal so ein Debugsignal brauche dann wird dem 
Record ein Signal hinzugefügt und es wird durch alle Instanzen mit 
geschleppt. So muss ich nicht so aufwendig das Design geändert werden.

von abcd (Gast)


Lesenswert?

Ich bau hier ein System mit einigen Timing-kritischen Signalen. Alles wo 
es auf korrektes Timing ankommt verifiziere ich immer mit Modelsim.
Ist zwar sicher etwas komplexer wenn ein zweites System dazu kommt, aber 
auch das sollte sich mit Modelsim darstellen und testen lassen. Der 
unschlagbare Vorteil ist halt, dass du wirklich auf alle Signale Zugriff 
hast.
Wenn das Timing in Modelsim stimmt (und keine Latches oder so ein Käse 
drin sind) dann stimmt bei mir das Timing in Realität immer!

Ach ja, Modelsim unterstützt auch Variante 1, ich bin allerdings noch 
nie auf die Idee gekommen das in der Synthese zu testen da mein Design 
Rule Subprozessor im Hirn droht, die Zehennägel hochzurollen ;-)

von Christoph Z. (christophz)


Lesenswert?

abcd schrieb:
> Ach ja, Modelsim unterstützt auch Variante 1, ich bin allerdings noch
> nie auf die Idee gekommen das in der Synthese zu testen da mein Design
> Rule Subprozessor im Hirn droht, die Zehennägel hochzurollen ;-)

Da er es ja explizit für die Verifikation auf einem FPGA einsetzen will, 
ist das aus meiner Sicht legitim. Für das eigentliche Design ist das 
klar ein No-Go (Er will ja auch explizit verhindern, dass durch die 
Verifikation das Ursprungsdesign verändert wird, was auch zu begrüssen 
ist).

ElKo schrieb:
> Variante 4: Das LogicAnalyzer Interface nutzen. Ich habe zwar einen
> guten LA von Agilent zur Verfügung, aber leider kein Altera-Interface um
> die JTAG-Schnittstelle zu nutzen. Deswegen diese Variante nicht weiter
> verfolgt.

Wenn ihr schon Geld habt, einen ASIC zu fertigen, sollten das Geld für 
diese SW Option auch vorhanden sein. Bei deinem beschriebenen Multi-FPGA 
System mit zusätzlicher externer Hardware lohnt sich das auch.

Hatte diese Option mal mit Xilinx für kurze Zeit zur Verfügung.

von Christoph Z. (christophz)


Lesenswert?

René D. schrieb:
> Es gibt ab VHDL2000 und richtig erst ab VHDL2008, um auf interne Signale
> zuzugreifen. Da wird der Instanzname und er Pathname miteinader
> kombiniert. Ich hatte es mal bei Xilinx ISE ausprobiert wurder leider
> unterstützt und dann habe ich es nicht weiterverfolgt. Könnte sein dass
> es jetzt unterstützt wird.

Habe das gerade schnell mit dem Synplify Pro 2012 (Bei Lattice Diamond 
dabei) ausprobiert. Damit verwende ich erfolgreich schon andere 
VHDL-2008 Features.
"Hierarchical names", wie das Feature in VHDL-2008 genannt wird, werden 
nicht unterstützt.

von bko (Gast)


Lesenswert?

>Ich habe mich anscheinend etwas missverständlich ausgedrückt. Das Design
>gibt es noch nicht als ASIC, sondern soll später als ASIC gefertigt
>werden. Ich entwickle gerade ein Design aus dem Nichts,
Ah sorry, ich korrigiere mich:
Ein Asic muss ausführlichst mittels Simulation auf seine Funktionalität 
verifiziert werden!

So ab dem 5 ASIC redesign herrschen in einer Firma  meine Erfahrung nach
Kriegsähnliche Zustände ...

von ElKo (Gast)


Lesenswert?

bko schrieb:
> So ab dem 5 ASIC redesign herrschen in einer Firma  meine Erfahrung nach
> Kriegsähnliche Zustände ...
:-) Das glaub ich dir gerne!

Christoph Z. schrieb:
> Wenn ihr schon Geld habt, einen ASIC zu fertigen, sollten das Geld für
> diese SW Option auch vorhanden sein. Bei deinem beschriebenen Multi-FPGA
> System mit zusätzlicher externer Hardware lohnt sich das auch.
Naja, das mit dem Geld zur Verfügung haben, ist leider so eine Sache. 
Geld ist da, wenn entsprechende Projekte da sind, auf die das Geld 
ausgegeben werden kann. Ist aber nicht. Und deswegen ist zur Zeit gerade 
kein Geld da. Der LA wurde mal zu anderer Gegelegenheit angeschafft. 
Vielleicht kennt sich jemand anderes da in den UNI-Strukturen besser 
aus. Als Student sind mir da ein wenig die Hände gebunden...



Vielen Dank für die zahlreichen Rückmeldungen und Erfahrungsberichte! 
Ich bin schonmal froh, dass ich keine grundlegende Vorgehensweise 
übersehen habe. Wenn auch leider keine einfacherer Lösung zu Tage kam. 
Naja, in dem Fall werde ich wohl, wie ihr emfohlen habt, einfach mehr 
simulieren müssen. In der Hoffnung, dass ich da die meisten Fehler 
aufdecken kann. Leider kann ich dadurch immer noch nicht richtig die 
analoge Schnittstelle zwischen den FPGAs testen, aber das schaffe ich 
dann hoffentlich auch ohne tieferen Einblick in das Design.

von Christoph Z. (christophz)


Lesenswert?

ElKo schrieb:
> Vielleicht kennt sich jemand anderes da in den UNI-Strukturen besser
> aus. Als Student sind mir da ein wenig die Hände gebunden...

Du hast Glück, es geht auf Ende Jahr zu. Geh mal zu deinem Prof und 
frag, ober noch irgendein Buchhaltungskonto hat, mit Geld das er bis 
Ende des Jahres ausgeben muss (damit im nächstes Jahr das Geld nicht 
gekürzt wird).
Und dann "wünscht" du dir die FPGA Debug Option für den LA zu 
Weihnachten.

Im Januar musst du mit so einer Anfrage dann nicht mehr kommen :-)

von Duke Scarring (Gast)


Lesenswert?

Christoph Z. schrieb:
> Und dann "wünscht" du dir die FPGA Debug Option für den LA zu
> Weihnachten.
Die "FPGA Debug Option" taugt nix. Das ist nur, damit der LA im FPGA 
einen Multiplexer steuern kann. Wenn man aber z.B. nur vier Signale 
rausgelegt hat, kann man auch nur vier Signale gleichzeitig sehen. So 
einen Multiplexer kann man auch anders ansteuern, da braucht man kein 
JTAG dafür.

Duke

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.