Hallo zusammen,
ich möchte in meiner Testbench mir gern einen String zusammenbauen und
diesen anschließend mit einem Report Statement ausgeben. Leider stehe
ich gerade auf dem Schlauch, wie ich das am Besten anstelle. So schon
mal nicht ;-)
Fpga I. schrieb:> So schon mal nicht ;-)
Welcher Simulator meldet da was? Auf welche VHDL-Version ist dein
Simulator eingestellt?
BTW: kann dein Simulator was mit integer'image() anfangen?
Aktuell nutze ich Questsasim mit VHDL2008, wobei das ein VHDL-typisches
Problem ist und m.E. simulatorunabhängig.
In der Zeile 7 würde der Simulator melden, dass der Range nicht passt
(links 1024, rechts 1024 + 7 oder 8 (also die Länge von "World ").
Ich hab schon überlegt, ob mir eine line weiterhilft, da kann ich ja
mittels write werte anhängen, allerdings weiß ich nicht, wie ich eine
line in einen String konvertieren kann, damit er mittels Report
ausgegeben werden kann.
integer'image() funktioniert auch, wobei ich mir mit VHDL2008 die
to_string() Funktion angewöhnt habe.
P.S. in meinem Beispiel fehlt am Ende das report statement:
Vielen Dank, das werde ich mal ausprobieren. Ist access string das VHDL
Equivalent zu einem Pointer?
Markus F. schrieb:> Aber warum nicht einfach so:> report("Hello " & "World" & to_string(c_MyValue)) severity note;
In meinem Test sammle ich zu verschiedenen Zeitpunkten Informationen,
die im report statement als eine Zeile ausgegeben werden sollen. Zum
Zeitpunkt des Reset Statements weiß ich aber nicht mehr, wie viele und
welche Informationen im Laufe des Testcases gesammelt habe. Daher der
Wunsch, eine report Zeile stückweise zusammensetzen zu können.
Fpga I. schrieb:> Vielen Dank, das werde ich mal ausprobieren. Ist access string das VHDL> Equivalent zu einem Pointer?
Ja, access types sind praktisch Pointer.
Merke, dass jedes new ein korrespondierendes deallocate braucht, sonst
produzierst Du Speicherlecks - VHDL hat keinen Garbage Collector.
Simuliert wunderprächtigst. Der String ist eben fest 1024 Zeichen lang.
Wenn man da hinten was anhängen will, dann muss man den String schieben
und vorne was weglassen.
Gustl B. schrieb:> Simuliert wunderprächtigst. Der String ist eben fest 1024 Zeichen lang.> Wenn man da hinten was anhängen will, dann muss man den String schieben> und vorne was weglassen.
Na ja. Wir haben das Jahr 2023, ganze Zeitschriftenartikel,
Diplomarbeiten und Abiturprüfungen werden von AIs geschrieben, aber
unsereins soll Buchstaben abzählen wie vor 100 Jahren?
Ich würde - wenn ich so was machen wollte - wenigstens so was:
https://github.com/kevinpt/vhdl-extras verwenden. Dort gibt es eine
(soweit das in VHDL eben geht) VHDL-Implementierung des unbounded
strings Pakets "Ada.Strings.Unbounded".
Auch nicht unbedingt Raketentechnik, aber das bringt uns wenigstens auf
den Stand der Siebziger.
Wenn du schon feste Strings hast wie hier das "Hello " dann kannst du
beim Tippen mitzählen. Oder den String als Konstante ablegen. Oder beim
Report den noch undefinierten String mit einem & an den konstanten
String ranhängen. Ich finde es macht wenig Sinn da einen langen String
mit 1024 Zeichen haben zu wollen. Wo ist der Mehrwert? Ich würde immer
dort wo Informationen anfallen die ich haben will diese sofort reporten.
Im Terminal sind das dann viele Zeilen, aber das kann man ja schön
formatieren.
Wilhelm M. schrieb:> Konkatenieren
Auch richtig geschrieben ist das eins der schrecklichen IT-Denglisch
Wörter, die im Wortschatz normaler Menschen gänzlich fehlen.
Warum schreibt man nicht "verketten"?
> Warum schreibt man nicht "verketten"?
Warum sollte man?
Mann benutzt ja auch 'disjunkt', 'adjazent' oder 'imbazil'.
Bei "konkattinieren" dreht sich aber der Magen schon um.
Stefan F. schrieb:> Auch richtig geschrieben ist das eins der schrecklichen IT-Denglisch> Wörter, die im Wortschatz normaler Menschen gänzlich fehlen.
Wer sie gleichwohl benutzt, wird trotzdem nicht inkarzeriert.
Aber "normale Menschen" verständigen sich vermutlich ohnehin eher auf
Chinesisch. Hindi, Spanisch oder Punjabi. Oder Pidgin-Englisch.
Motopick schrieb:> Mann benutzt ja auch 'disjunkt',
wenn, dann diskret, selbst Frauen ...
> 'adjazent'
im Grenzbereich
> oder 'imbazil'.
Allenfalls zur Selbstdarstellung.
Percy N. schrieb:> 04:54: Bearbeitet durch User
Keinen Nachtschlaf gefunden?
> Allenfalls zur Selbstdarstellung.
Wenn man viel Kommunizieren muss, sind mir die viel lieber
als die, die einen Satz qualsam und langvoll mit dutzenden
"Aeeeh" fuellen muessen, weil deren (imbaziles) Gehirn beim
Sprechen nicht mit dem Denken nachkommt.
Motopick schrieb:>> Warum schreibt man nicht "verketten"?> Warum sollte man?> Mann benutzt ja auch 'disjunkt', 'adjazent' oder 'imbazil'.
Also ich benutze diese Wörter niemals. Andererseits muss ich zugeben,
dass ich meinen Computer häufig update.
Percy N. schrieb:> Wer sie gleichwohl benutzt, wird trotzdem nicht inkarzeriert.
Oha, dass muss ich googeln.
> Oha, dass muss ich googeln.
Wenn du schon dabei bist: "fuesilieren".
Und den lateinischen Wortstamm vom "konkatinieren" kannst du
dabei auch gleich nachschlagen.
Es ist mitnichten Denglisch.
Einem String wird dabei eigentlich zu viel der Ehre zuteil.
Die beiden Teile werden ja nur "zusammengepappt".
Im Gegensatz zu einer Liste die danach u.U. Vorwaerts- und
Rueckwaertsverkettung kennt.
Stefan F. schrieb:> Ich meinte natürlich den String, ihr Pappnasen.
Dann hast Du bei seiner Erziehung entweder alles richtig oder einiges
falsch gemacht. Ansichtssache.
SCNR