Hardwarebeschreibungssprachen und Verifikation
Die obige Beschreibung sollte eine kombinatorische Schaltung sein. Welches mögliche Problem ist korrekt beschrieben?
always @(a)
y = a & b;
- Ab wird aus der Schaltung entfernt, und y wird gleich a
- BDie Synthese schlägt mit einem Fehler fehl, und es wird keine Schaltung erzeugt
- CÄndert sich nur b, wird y in der Simulation nicht aktualisiert, und das Verhalten weicht von der synthetisierten Schaltung ab (in der sich y bei Änderung von b ändert)
Antwort und Erläuterung anzeigen
Antwort: C. Ändert sich nur b, wird y in der Simulation nicht aktualisiert, und das Verhalten weicht von der synthetisierten Schaltung ab (in der sich y bei Änderung von b ändert)
Der Simulator führt den Block nur bei Änderung der in der Sensitivitätsliste genannten Signale aus, sodass y bei einer Änderung nur von b den alten Wert behält. Die Logiksynthese erzeugt dagegen ohne Beachtung der Liste aus dem Blockinhalt ein UND-Gatter, sodass in der realen Schaltung auch die Änderung von b auf y wirkt. Das ist ein gefährlicher Zustand, in dem die Simulation korrekt aussieht, die Schaltung sich aber anders verhält. Mit „@(*)“ lässt sich dies vermeiden.