Forum: FPGA, VHDL & Co. Sensitivity list: Simulation vs. Synthesis


von F. D. (floriade)


Lesenswert?

Hallo,

ich habe ein Frage zur sensitivity list eines Prozesses: In der Theorie 
wird der Prozess neu ausgeführt, sobald sich ein Signal in der 
sensitivity Liste (SL) ändert.

Sobald ich ein Signal innerhalb meines Prozesses lese, welches nicht in 
der SL vorkommt, kriege ich vom Synthesizer eine Warnung. Diese Warnung 
muss ja nichts schlechtes bedeuten, da ich möglicherweise genau dieses 
Verhalten will? Bspw: D-FF mit sync reset

Meine Frage ist nun wie verhält es sich von der Simulation zur Synthese. 
Ich habe gelesen, dass bei einer 'fehlerhaften' SL das Verhalten von 
Simulation und der synthetisierten Schaltung abweicht. Dies wäre ganz 
schlecht, da die Simulation dann total sinnlos wäre? Werden während der 
Synthese fehlende Signale zur SL hinzugefühgt? Hängt es vom Synthesetool 
ab?

Weiss das jemand genauer?

Grüsse,

Florian

von Christian R. (supachris)


Lesenswert?

Für die Synthese ist die Sensitivitätsliste völlig_irrelevant! Die hat 
nur für die Simulation was zu sagen. Da wird einfach der Prozess nur 
dann neu berechnet, wenn sich an den Signalen was ändert, die in der 
Liste sind. Daher können die Ergebnisse abweichen. Und daher sollte die 
Liste dringend immer vollständig sein. Die Synthese warnt dich nur, dass 
eventuell deine Simulation dann falsch ist und nicht zur Hardware passt.

von Alexander F. (alexf91)


Lesenswert?

F. D. schrieb:
> Bspw: D-FF mit sync reset
1
process begin
2
    wait until rising_edge(clk);
3
    if sync_reset = '1' then
4
        q <= '0';
5
    else
6
        q <= d;
7
    end if;
8
end process;

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


Lesenswert?

F. D. schrieb:
> ich habe ein Frage zur sensitivity list eines Prozesses: In der Theorie
> wird der Prozess neu ausgeführt, sobald sich ein Signal in der
> sensitivity Liste (SL) ändert.
Der Blickwinkel ist falsch!
Ein Prozess wird nicht ausgeführt und er kann sich auch nicht selber 
ausführen. Es ist einfach so, dass der Simulator den Prozess neu 
berechnen muss, wenn sich eines der Signale in der Sensitivliste ändert.

> Weiss das jemand genauer?
Such mal hier im Forum, die Frage kommt immer wieder mal...
Mit http://www.mikrocontroller.net/search?query=sensitivliste&forums[]=9
hättest du z.B. den Beitrag "Re: Sensitivity list wird ignoriert" 
gefunden.

> Sobald ich ein Signal innerhalb meines Prozesses lese, welches nicht in
> der SL vorkommt, kriege ich vom Synthesizer eine Warnung.
> Verhalten will? Bspw: D-FF mit sync reset
Hast du da mal ein Beispiel? Mich würde wundern, wenn in einem komplett 
getakteten Prozess ein beliebiges Signal (nicht der Takt) als fehlend 
angemeckert würde...

Die narrensichere Methode hat Alexander schon gepostet:
http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html

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.