Forum: FPGA, VHDL & Co. Modelsim Tcl Script Interne Signale


von Dirk (Gast)


Lesenswert?

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

von FPGAkuechle (Gast)


Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

Hi,

danke schoen werde ich heute abend ausprobieren und berichten.


Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

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

von FPGAkuechle (Gast)


Angehängte Dateien:

Lesenswert?

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".

von Dirk (Gast)


Lesenswert?

Hi,

danke werde die Sachen mal ausprobieren und mich melden.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

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

von FPGAküchle (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Dirk (Gast)


Lesenswert?

Hi,

vielen Dank ich kann es kaum erwarten bis Feierabend ist und das testen
kann.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.