Forum: FPGA, VHDL & Co. Modelsim Verhalten bei Simulationsende


von Simon (Gast)


Lesenswert?

Ich verwende normalerweise die Methode, über ein Flag in der Testbench 
alle Clocks anzuhalten und Prozesse in "wait;" zu führen um die 
Simulation in Modelsim zu beenden.

Das funktioniert auch sehr schön und ich kann die Simulation mit "run 
-all" durchlaufen lassen und sie beendet automatisch.

Nun habe ich jedoch ein Design bei dem ich Komponenten von Lattice mit 
simuliere, die intern unabhängig toggelnde Signale verwenden und meine 
Simulation läuft dementsprechend bis in alle Ewigkeiten.

Natürlich kann ich die Standard-Methode mit "assert failure" verwenden 
um die Simulation zu beenden. Was mich dabei jedoch stört, ist dass 
Modelsim jedesmal von meiner Wave Window zur Source .vhd mit diesem 
assert springt.

Kennt ihr eine Möglichkeit Modelsim beizubringen hier nicht jedes Mal 
das Fenster mit der Source aufzumachen und dort hin zu springen?

von user (Gast)


Lesenswert?


von Duke Scarring (Gast)


Lesenswert?

Simon schrieb:
> Nun habe ich jedoch ein Design bei dem ich Komponenten von Lattice mit
> simuliere, die intern unabhängig toggelnde Signale verwenden und meine
> Simulation läuft dementsprechend bis in alle Ewigkeiten.
Sowas hatte ich bei der Xilinx-PLL auch. Die ließ sich mit Reset 
beruhigen. Jetzt ist zwar das PLL-Reset etwas unorthodox, da das Flag 
mit beachtet wird, aber es geht.
Vielleicht ist das auch für Dich ein Weg.

Duke

von Simon (Gast)


Lesenswert?

PLL mit Reset beruhigen wie bei Xilinx geht leider bei der Lattice PLL 
(und besonders der Embedded Function Block) nicht, da gibt es interne 
Signale die weiter toggeln. Ich habe schon versucht die Signale mit 
-force zu beruhigen, im Wave ändert sich dann auch nichts mehr, aber die 
Simulation stoppt trotzdem nicht.

Danke für den den Tipp mit 
http://www.ht-lab.com/howto/modelsim/Modelsim_tips.html.
1
when -label end_of_simulation {/x_tb/running == false} {echo "End of simulation" ; stop ;}

Das funktioniert! Wenn ich diese Zeile jetzt noch in der Testbench 
definieren könnte wäre ich absolut glücklich.

von berndl (Gast)


Lesenswert?

Duke Scarring schrieb:
> Sowas hatte ich bei der Xilinx-PLL auch.

Sicher? Auch wenn du die in der TB generierte Clock anhaelst? Dann geht 
halt der Einzeiler 'clk <= not clk after 5 ns;' nicht mehr, aber wenn du 
die clk in einem Prozess generierst und auf ein 'wait;' laufen laesst, 
dann tut das zumindest bei mir (S3, S3E, S6)

von Duke Scarring (Gast)


Lesenswert?

berndl schrieb:
> Duke Scarring schrieb:
>> Sowas hatte ich bei der Xilinx-PLL auch.
>
> Sicher?
Jepp. Sicher.
> Auch wenn du die in der TB generierte Clock anhaelst? Dann geht
> halt der Einzeiler 'clk <= not clk after 5 ns;' nicht mehr, aber wenn du
Mein Einzeiler sieht immer so aus:
1
    clock <= not clock after clock_period / 2 when simulation_run;
> dann tut das zumindest bei mir (S3, S3E, S6)
Das tut es be mir auch.

Aber nicht mehr mit pll_base. Dort wird ein VCO simuliert, der sich 
von meinem simulation_run nicht beeindrucken lässt.

Duke

von MarioStinkt (Gast)


Lesenswert?

>Kennt ihr eine Möglichkeit Modelsim beizubringen hier nicht jedes Mal
>das Fenster mit der Source aufzumachen und dort hin zu springen?


VHDL-2008:
1
library std;
2
3
process begin
4
...
5
std.env.stop;
6
end process;

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.