Forum: FPGA, VHDL & Co. Variablen in der Simulation


von Andreas Ehret (Gast)


Lesenswert?

Moin!

Ich hatte schon vor längerer Zeit mal einen Thread eröffnet, weil ich
nicht wusste, wie man Signale in Modelsim anzeigt. Gut, inzwischen kein
Problem mehr.

Aber, wie ist das mit Variablen, die nur innerhalb eines Prozesses
gültig sind? Ich finde in Modelsim keine Möglichkeit, die Dinger
anzuzeigen.

Hat jemand eine Idee?

Grüße
   Andy

von Ines (Gast)


Lesenswert?

Hallo Andreas,

seit dem Studium arbeite ich nicht mehr mit Modelsim, aber ich erinnere
mich, dass man sich schon irgendwie die Variablen anschauen konnte.
Allerdings nicht so schön als Signalverlauf, wie eben bei den Signalen,
sondern immer nur einen Wert - ich glaube den Wert zu dem Zeitpunkt an
dem der Zeit-Cursor steht.
Prinzipiell stellen sich aber die meisten Tools - und alle, mit denen
ich bisher gearbeitet habe - bei der Darstellung von Variablenwerten
doof an!

Wenn ich mir Variablen anzeigen lassen will, dann erzeuge ich mir daher
ein Signal, dem ich dann in der parallelen Umgebung den Wert der
Variablen zuweise. Ungefähr so:

  ...
  signal s_irgendeine : std_logic;
  ...

  process (Clk, Reset)
    variable v_irgendwie : std_logic;
  begin
    ...
    v_irgendeine := ...;
    ...
  end process;

  s_irgendwie <= v_irgendeine;

Wenn dann alles funktioniert, nehme ich das Signal wieder raus, damit
der Code nicht unnötig aufgebläht ist.

Ich hoffe, ich konnte Dir weiterhelfen.

Gruß
Ines

von Dirk (Gast)


Lesenswert?

Hi,

>Hallo Andreas,
>seit dem Studium arbeite ich nicht mehr mit Modelsim, ....

Ines mit was arbeitest du den jetzt oder brauchst du deine Programme
nicht mehr simulieren?

Gruß,
Dirk

von Ines (Gast)


Lesenswert?

@Dirk
Mit dem VHDL (ChipSim) von Mentor.

von Andreas Ehret (Gast)


Lesenswert?

Hallo Ines,

danke für Deine Idee, aber die Variable ist doch außerhalb des
Prozesses gar nicht gültig, so dass ich keine direkte Zuweisung machen
kann?

Gruß
   Andy

von Ines (Gast)


Lesenswert?

Sorry!!! Da war ich mal wieder etwas voreilig. So sollte es besser
funktionieren:

  ...
  signal s_irgendeine : std_logic;
  ...

  process (Clk, Reset)
    variable v_irgendwie : std_logic;
  begin

    if(Reset ...) then
      ...
    elsif(Clk ...) then
      v_irgendeine := ...;
      ...
    end if;

    s_irgendwie <= v_irgendeine;

  end process;

Gruß
Ines

von Ines (Gast)


Lesenswert?

Und bevor's ein anderer anmeckert: irgendwie und irgendeine sollten
natürlich nicht unterschiedlich sein. Nochmals Entschuldigung!

:-( Ines

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.