Hardwarebeschreibungssprachen und Verifikation
In der obigen Beschreibung wird in der Verilog-Simulation für y der Wert b gewählt, wenn sel X (unbestimmt) ist. Warum ist diese Eigenschaft bei der Verifikation ein Problem?
always @(*)
if (sel) y = a;
else y = b;
- AWeil y stets X wird und die Simulation anhält
- BWeil bei sel gleich X auch im realen Chip stets b gewählt wird
- CWeil X als „falsch“ behandelt wird und der feste Wert b herauskommt, sodass der Fehler eines unbestimmten sel in der Simulation unsichtbar wird
Antwort und Erläuterung anzeigen
Antwort: C. Weil X als „falsch“ behandelt wird und der feste Wert b herauskommt, sodass der Fehler eines unbestimmten sel in der Simulation unsichtbar wird
Eine if-Anweisung in Verilog behandelt eine Bedingung X als falsch und führt den else-Zweig aus. Dadurch ergibt sich für y der feste Wert b, und der Fehler, dass sel unbestimmt ist, wird in der Simulation verdeckt. In der realen Schaltung ist sel entweder 0 oder 1, und auch a kann gewählt werden. Das heißt X-Optimismus; Gegenmaßnahmen sind eine Schreibweise, die X weitergibt, oder Assertions, die X erkennen.