Hallo, Ich habe in meiner Testbench (entity TB) die eigentliche Schaltung als component deklariert. Ich instantiieren die Schaltung mit uut : schaltung In der Entity Schaltung gibt es das Signal Din_req. Dieses Signal möchte ich gerne in der Testbench verwenden. wait until rising_edge (/TB/uut/Din_req); Ich hätte erwartet, daß das funktioniert, da genau diese Syntax bei Modelsim funtkioniert um mit add wave diese Signal id der Waveform anzuzeigen. Aber es kommt immer illegal expression oder Syntax error auch bei allen mir sonst einfallenden Ausdrucksweisen für in die Klammer. Ich bin der Meinung das das gehen müßte, daß man ein Signal eines Untermoduls für die Testbench verwendet. Kann mir jemand helfen, wie es richtig heißen müßte. Danke Rita
Rita Szasz schrieb: > Ich bin der Meinung das das gehen müßte, daß man ein Signal eines > Untermoduls für die Testbench verwendet. Worauf basiert diese Meinung? In VHDL gibt es erst mal nur den Port als Schnittstelle zur Aussenwelt. Was dir der Simulator sonst noch an Hilfsmittel zur Verfügung stellt, hat mit VHDL in nichts zu tun. So sind z.B. Variablen in Prozessen auch nur für den Simulator sichtbar.
Rita P. schrieb: > Ich bin der Meinung das das gehen müßte, daß man ein Signal eines > Untermoduls für die Testbench verwendet. Hier findest Du ein paar Beispiele: http://www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008/vhdl_200x_ease/#hierarchicalnames -- Marcus
Lothar Miller schrieb: > Rita Szasz schrieb: >> Ich bin der Meinung das das gehen müßte, daß man ein Signal eines >> Untermoduls für die Testbench verwendet. > Worauf basiert diese Meinung? Ich bin der Meinung dieses in meinem VHDL Kurs der leider schon 2 Jahre her ist, verwendet zu haben. Seitdem habe ich zwar einige VHDL Projekte getestet, aber immer nur mit TCL Skripts. Im jetzigen Projekt muß ich aber eine VHDL Testbench verwenden. Ich benutze die Testumgebung eines anderen Projektes und möchte die nicht komplett umschreiben müssen. Dort ist das Signal Din_req auf dem Toplevel vorhanden, bei mir leider nicht und ich möchte aber auch das Signal nicht auf den Toplevel legen, denn dann würde ich ja später einen Pin dafür brauchen. Hast du einen guten Vorschlag wie ich es lösen kann, wenn man nicht auf ein signal eines Untermoduls abfragen kann?
Rita P. schrieb: > und ich möchte aber auch das Signal nicht auf den Toplevel legen, denn > dann würde ich ja später einen Pin dafür brauchen. Such mal nach translate_off und translate_on in Verbindung mit pragma oder synthesis oder synopsys im Handbuch für deinen Synthesizer. Siehe z.B. den Beitrag "Re: Simulation oder Synthese?" Oder nimm einen VHDL-2008 Simulator, richtig... ;-)
Rita P. schrieb: > Hast du einen guten Vorschlag wie ich es lösen kann, wenn man nicht auf > ein signal eines Untermoduls abfragen kann? Dass man das kann, ist doch in dem Beispiel beschrieben. Voraussetzung ist eben entweder ein VHDL-2008 Simulator, oder ein herstellerspezifisches package, dass einen auf hierarchische Namen zugreifen lässt. -- Marcus
@Marcus: Deine erster Beitrag hat sich mit meiner Antwort die du zitierst überschnitten. Ich habe deine Antwort noch nicht gesehen gehabt, als ich meine Antwort geschrieben habe. Leider nutzt mir das nichts direkt, da ich VHDL2008 nicht verwenden darf, Firmenvorgabe. Deine Antwort hat mir trotzdem genutzt, da ich mit dem Begriff hierarchical names über google diesen Link (http://www.fpgarelated.com/usenet/fpga/show/96143-1.php) gefunden habe. Mit Global signal über ein Global Package habe ich jetzt mein Problem gelöst. Zudem weiß ich jetzt, daß das was ich wollte in Verilog einfach geht. Daher war mein Gefühl das es gehen müßte, nicht so falsch. Es war nur die falsche Sprache. Ich habe mal Anfang 2000 etwas mit Verilog gearbeitet. Besten Dank, auch an Lothar Rita
Rita P. schrieb: > Leider nutzt mir das nichts direkt, da ich VHDL2008 nicht verwenden > darf, Firmenvorgabe. Ja, das ist die traurige Realität. Ich kann das ja für den synthetisierbaren Teil sogar noch nachvollziehen, aber die Testbench? Mit dieser Firmenvorgabe und Deinem unter diesen Bedingungen notwendigen Workaround hat sich die Firma leider einen Bock geschossen. Jetzt musst Du nämlich möglicherweise getesteten und abgesegneten Quellcode ändern, um auf das globale Signal zugreifen zu können. Ich würde daher empfehlen, die von Lothar vorgeschlagene Kapselung zu verwenden, oder eben herstellerspezifische packages zu nehmen. Wenn Du nicht mit unzähligen verschiedenen Tools arbeitest ist das die elegantere Methode, da Du in dem Fall gleich siehst, woher die Signale kommen. -- Marcus
Marcus Harnisch schrieb: > Wenn Du nicht mit unzähligen verschiedenen Tools arbeitest > ist das die elegantere Methode Richtig, denn elegant oder gar übersichtlich ist das Herumgewürge mit den Pragmas nun wirklich nicht...
Da ich es auch nicht so toll fand, etwas im eigentlich Code ändern zu müssen, auch wenn der Compiler die Zeile rausschmeisen sollte, habe ich noch etwas rumgesucht. Dabei bin ich auf die Funktion init_signal_spy von ModelSim gestoßen. Dies ist auch in dem Link den ich eingestellt habe, man muß nur etwas weiter runterscrollen. Im Usermanual von Modelsim ist die Funktion gut beschrieben. Diese Funktion legt ein beliebiges hierarchisches Signal auf ein anderes beliebiges Signal. Die Actel-Software meldet zwar einen Fehler bei check HDL file, aber Modelsim versteht es richtig. Damit kann ich jetzt ganz gut leben, da ich immer Modelsim zum simulieren benutzte. @Markus: was sind herstellerspezifische packages? Etwas von Actel oder Xilinxs würde mir da ja nichts nützen. Oder meinst du soetwas wie das init_signal_spy aus der Modelsim_lib?
Rita P. schrieb: > was sind herstellerspezifische packages? Das da ist sowas: > Dabei bin ich auf die Funktion init_signal_spy von ModelSim gestoßen. Denn so eine Funktion findest du bei einem anderen Simulator nicht.
Rita P. schrieb: > Oder meinst du soetwas wie das init_signal_spy aus der Modelsim_lib? Genau das. -- Marcus
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.