www.mikrocontroller.net

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


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/model...

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

Autor: FPGAkuechle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke schoen werde ich heute abend ausprobieren und berichten.


Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGAkuechle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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".

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke werde die Sachen mal ausprobieren und mich melden.

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGAküchle (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.