Hallo, ich hab mich gestern ein bischen mit Modelsim angefreundet. In den weiten des Internet hab ich ein Tcl script für Modelsim gefunden. http://www.doulos.com/knowhow/tcltk/examples/modelsim/compile_script.zip In diesen Beispiel wird ein Counter ueber Modelsim dargestellt. Dieser Zaehler besitzt das interne Signal "Cnt". Ich hab versucht das interne Signal mittels "add wave Cnt" zum Wave Window zuadden, aber leider ohne grossen Erfolg. Kann mir jemand erklaeren wie ich interne Signale in das Tcl Script mit aufnehme? Ich hab gestern schon das Internet mit google durchsucht, aber wirklich eine richtige Hilfe konnte ich nicht finden. In einem anderen Thread stand etwas von "examine" in das Tcl Script zuschreiben. Ich hab unter diesen Befehl mit dem Zusammenhang Modelsim gesucht und konnte keinen groesseren Erfolg verbuchen. Als Anfänger moechte man gerne auch die internen Signale des VHDL Module betrachten und nicht jedesmal die internen Signale auf externe Port Maps legen. Gruß, Dirk
z.B. so add wave -noupdate -format Literal /dut/design_1/hcount_q vielleicht stimmt bei dir der Instanz-Pfad (dut/design_1/ ) nicht, oder das design ist noch nicht aktiviert (vsim (?)). Beim Abspeichern des Waveform - formats (im wave fenster sowas wie save format) wird ein tcl geschrieben. Da stehen die gesuchten tcl commandos zum Hinzufügen von (internen) Signal ins wave fenster drin. Schau dir das file mal im texteditor an.
Hi, danke schoen werde ich heute abend ausprobieren und berichten. Gruß, Dirk
Hallo, Ich hab mit VSIM geprueft ob sich der Counter im Work befindet. Danach hab ich mir das Waveform Window gespeichert 'wave.do' add wave -noupdate -format Literal /countertb/q Nun wollte ich mit: add wave -noupdate -format Literal /countertb/Cnt das interne Signal zur Waveform adden. Leider bekomme ich diese Fehlermeldung: # (vish-4014) No objects found matching '/countertb/cnt'. Hast du noch ein Tipp ? Gruß, Dirk
Hm, kann es sein das im "Pfad" das signal fehlt? Ist /countertb/Cnt wirklich ein Signal oder der name einer instanziierte componente? Vielleicht kennt modelsim wildcards also: add wave -noupdate /countertb/* Die Option "-format Literal" könnte auf eine Typen beschränkt sein, also mal weglassen. Die Doc hat vielleicht auch noch tips, eine kurzdoc wird im modelsim commandfenster nach eingabe von "help add wave" ausgegeben. Im Signalfenster werden die vorhanden Signale angezeigt: im Modelsim hauptfenster (nicht im wave fenster) View -> Signals klicken. Dort werden aber nur die Signale der ausgewählten Hierarchie (top-level,componente, subcomponente) angezeigt. Durch die Hierarchie klickt man sich im sim Fenster (siehe screenshot). Nur(?) die dort aufgeführten kannst du per "add wave" zum wave hinzufügen. Die erwähnte durchzukliegende Hierarchie ist der erwähnte "Pfad".
Hi, danke werde die Sachen mal ausprobieren und mich melden. Gruß, Dirk
Hi, interne Signale kann ich mir nun anschaun, aber nur vom Top RTL. Ich hab hier mehrere Componenten in meinem Design z.B. Toplayer (Komponete: BRAM_CRTL) unter dieser Komponente sind viele kleinere Componenten (Komponenten: RAM_STAGE, ADRESS_COUNTER usw.) Ich wuerde gerne mir interne Signale und die Outputs der unter Komponenten anschaun. In dem Testbench befindet sich als Komponente das Toplayer mit allen Ports und Signalen. Füge ich jetzt zu den Signalen z.B. ein Output vom ADRESS_COUNTER hinzu zeigt er mir leider keine Aenderung in Modelsim an. SIGNAL CNT : std_logic_vector(7 downto 0) := "00000000"; -- DAS IST DER OUTPUT SIGNAL cnt_int : std_logic_vector(7 downto 0) := "00000000"; -- DAS IST DAS INTERNE SIGNAL VOM ADRESS_COUNTER Wie instanziere ich diese beiden Signale auf die Componente ADRESS_COUNTER? extern Komponente ADRESS_COUNTER ???? Ich wuerde mich ueber eine Antwort freuen. Best Regards, Dirk
Hm, also modelsim zeitgt sehr wohl interne Signal und Ports von instanziierten Komponenten an. Allerdings muss man dazu in mehreren Fenstern klicken, das ist etwas unübersichtlich. Hier mal die KlickKlacki Anleitung, siehe beigefügten screenshot: -Lade ein design -> im fenster Workspace erscheint unten ein Kartereiter sim (im screenshot orange markiert). -Klicke diesen an -> du bis im Instanzbrowser -Öffne das "signal -Fenster" (View-> Signals) -Überprüfe die Einstellungen File -> Enviroment (siehe Screenshot) -Wenn diese stimmen kannst du jetzt im Instanzbrowser durch Klicken auf die Kästchen mit dem Plus oder auf den Namen der Instanz (neben +) in der Hierarchie in die tieferen (internen) komponenten "hinabsteigen" -im Signalfenster werden jetzt die Signale,Ports zu dieser internen Komponente angezeigt. -im signalfenster kanns du nun per Add -> Wave -> selcted signals ausgewählte Signale dem Wave-fenster hinzufügen (Evtl. sollte das Wave fenster vorher geöffnet sein. -Im transcript fenster (im Screenshot links neben fenster workspace) wird das tcl Kommando für diese Aktion angezeigt (nicht im screenshot). Das kannst du in dein script schreiben.
Hi, vielen Dank ich kann es kaum erwarten bis Feierabend ist und das testen kann. Gruß, Dirk
Hallo, @FPGAküchle danke schoen, ich hab es hinbekommen. Ich dachte immer man muesste im Testbench auch die internen Signale instanzieren (SIGNAL CNT_INT : std_logic_vector(7 downto 0) := "00000000"). Ein kleines Problem hab ich aber, wenn ich das interne Signal zum Wave Window adde zeigt er -No Data- an. Starte ich erneut mit -continue die Simulation werden mir die Daten vom Zaehler angezeigt, natuerlich aber erst nach der ersten Simulation. Wie fuege ich das interne Signal fest in das projekt ein? Jedesmal wenn ich aus ISE Modelsim starte muss ich das Signal neu aufnehmen ins Wave Window und die Simulation neu starten und zur zweiten Simulation zoomen. Ich dachte ich koennte mir das unter wave.do abspeichern bloss wenn ich dann Modelsim starte und das makro starte werden mir garkeine Daten angezeigt. Gruß, Dirk
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.