Hardwarebeschreibungssprachen und Verifikation

Die obige Beschreibung sollte eine kombinatorische Schaltung sein. Welches mögliche Problem ist korrekt beschrieben?

always @(a)
    y = a & b;
  1. Ab wird aus der Schaltung entfernt, und y wird gleich a
  2. BDie Synthese schlägt mit einem Fehler fehl, und es wird keine Schaltung erzeugt
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

  1. Was entsteht bei der Logiksynthese, wenn wie oben als kombinatorische Schaltung gedachter Code geschrieben wird?
  2. Welche Kombination aus Grund für das Entstehen eines Latches in der obigen Beschreibung und Gegenmaßnahme ist korrekt?
  3. Welche Schreibweise wird häufig verwendet, um in einem always-Block einer kombinatorischen Schaltung unbeabsichtigte Latches zu verhindern?
  4. Welche der folgenden Verilog-Beschreibungen wird bei der Logiksynthese nicht zur Schaltung, sondern ignoriert (Beschreibung für die Simulation)?
  5. Welche Schaltung entsteht bei der Logiksynthese der obigen Beschreibung, die die Einsen in 8-Bit-d zählt?

Vergleiche zu diesem Thema