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
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.
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!
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.
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.
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 ;-)
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.
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.
>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 ...
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.
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.