Forum: FPGA, VHDL & Co. Functional Simulation mit Modelsim


von Modelsim (Gast)


Lesenswert?

Guten Abend,
ich bin gerade dabei, eine komplexere Schaltung in Verilog zu 
programmieren. Zur Simulation verwende ich hierbei Modelsim. Um Zeit zu 
sparen verwende ich allerdings nicht die Post-Fit-Simulation, sondern 
die Functional Simualtion. Jedes Mal Quartus zu bemühen dauert mir 
einfach zulange.
Nun zu meinem Problem:
 Evtl. habe ich einen Knoten im Kopf, mir macht das Lesen der Functional 
Simulation allerdings größte Probleme,  weil die Reaktionen der 
abhängigen Signale ohne Verzögerung auf die unabhängigen Signale 
erfolgen.
Gibt es eine Möglichkeit ein statisches Delay einzufügen um der 
Notwendigkeit der  Post-Fit-Simulation zu entgehen?

Vielen Dank
Torsten

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Modelsim schrieb:
> Um Zeit zu sparen verwende ich allerdings nicht die Post-Fit-Simulation,
> sondern die Functional Simualtion.
Das ist die übliche Vorgehensweise.
Ob das Timing passt, sagt einem die statische Timinganalyse.

> Gibt es eine Möglichkeit ein statisches Delay einzufügen um der
> Notwendigkeit der  Post-Fit-Simulation zu entgehen?
Leider kann ich dir das für Verilog nicht sagen, aber in VHDL ginge das, 
indem du einfach ein
a <= b or c after 4 ns;
schreiben würdest.

ABER: lies dir zum Thema "symbolische Laufzeiten" mal diesen Post aus 
dem Beitrag "Re: Frage zu Pseudozufallsgenerator!?" durch. Dann 
WILLST du das gar nicht mehr. Denn die Nachteile und Probleme 
überwiegen! Ich vermute, für Verilog trifft die Problematik in ähnlicher 
Weise auch zu...

von Modelsim (Gast)


Lesenswert?

Hallo Lothar,
vielen Dank für Deine Hinweise. Ich verwende nur synchrone Designs. 
Meine Problem bei der funktionalen Simulation ist, dass Aktion und 
Reaktion gleichzeitig sind. Mich macht das ganz kirre. Ich versuche mal 
ein Beispiel:
always@(posedge clk)
 begin
 adr <= adr + 1;
 end

always@(posedge clk)
 begin
 if(adr == 0)
    Mache irgendwas
 end

Würde "adr", wie in der Realität auch nur ein paar ns später 
aktualisiert werden, hätte ich beim Lesen des Diagramms keine Sorgen.
(
always@(posedge clk)
 begin
 #1;
 adr <= adr + 1;
 end
)

Ich weiss, dass "#1" je nach timescale eine ns einfügt. Allerdings sind 
die Konsequenzen bei einem größerem Design nicht tragbar. Meine Frage 
zielt eher darauf ab, ob es nicht irgendwie möglich ist, Aktion und 
Reaktion mit einem statischen Delay sichtbar zu machen.

Viele Grüße
Torsten

von Modelsim (Gast)


Lesenswert?

Nochmal ;)


always@(posedge clk)
 begin
 adr <= adr + 1;
 end

Hier ändert sich adr gleichzeitig mit der positiven Flanke von clk. In 
einem realen Design würde sich adr aber erst nach einem gewissen Delay 
ändern. Oomph, schwer zu erklären. Ist das Delay (das wünsche ich mir 
grafisch) vorhanden, hätte ich keine Probleme. Die Gleichzeitigkeit der 
Änderung von clk UND der adr macht mir Probleme.

von user (Gast)


Lesenswert?

ich glaub er will nur das signal verzögern

wenn ich mich richtig erinner geht das so in verilog (ich schreibe 
eigendl. nur VHDL)

always@(posedge clk)
 begin
 adr <= adr + 1 #10;
 end

das sollte das signal erst nach 10 zeiteinheiten zuweisen

von dito (Gast)


Lesenswert?

Als ich mit VHDL und Modelsim angefangen habe, hat mich das auch immer 
irritiert. Aber man gewöhnt sich dran... :-)

von Modelsim (Gast)


Lesenswert?

Hi,

user schrieb:
> ich glaub er will nur das signal verzögern

Modelsim schrieb:
> always@(posedge clk)
>  begin
>  #1;
>  adr <= adr + 1;
>  end

Nicht ganz. Das tue ich ja.

dito schrieb:
> Als ich mit VHDL und Modelsim angefangen habe, hat mich das auch immer
> irritiert. Aber man gewöhnt sich dran... :-)

Hmm. Bei mir stellt sich keine Gewöhnung ein. Liegt evtl. auch an mir in 
Verbindung mit Modelsim. Ausgesprochen spröde dieses Werkzeug.

von Christian R. (supachris)


Lesenswert?

Das ist doch völlig korrekt, an die Lesart muss man sich einfach 
gewöhnen. Zur Flanke ändert sih der Ausgang. Nicht die Taktflanke ist 
die Ursache für die Daten am Ausgang, sondern die Daten, die vor der 
Flanke am Eingang anlagen. Da das eine Bauteil-abhängige Zeit ist, 
wieviele ps oder gar ns danach das wirklich passiert, kannst du das gar 
nicht selbst sinnvoll angeben. Fang bitte bloß nich mit den statischen 
Delays in der Simulation an. Das macht man ausschließlich in der 
Testbench um externe Komponenten abzubilden.

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.