Hardwarebeschreibungssprachen und Verifikation
Ändert man in einer Testbench die Eingänge der Schaltung zum selben Zeitpunkt wie die steigende Taktflanke mit blockierender Zuweisung, kann ein Problem auftreten. Welche Kombination aus Hauptgrund und Gegenmaßnahme ist korrekt?
- AWeil je nach Ausführungsreihenfolge entweder der Wert vor oder nach der Änderung übernommen wird (Race). Eingänge werden etwas gegen die Taktflanke versetzt oder per nichtblockierender Zuweisung geändert
- BWeil die Taktfrequenz automatisch sinkt. Der Takt wird schneller gemacht
- CWeil blockierende Zuweisungen in Testbenches nicht verwendbar sind. Alles wird mit assign-Anweisungen geschrieben
Antwort und Erläuterung anzeigen
Antwort: A. Weil je nach Ausführungsreihenfolge entweder der Wert vor oder nach der Änderung übernommen wird (Race). Eingänge werden etwas gegen die Taktflanke versetzt oder per nichtblockierender Zuweisung geändert
Treffen im selben Zeitpunkt die Änderung der Eingänge durch die Testbench und die Übernahme der Eingänge durch die Flipflops der Schaltung zusammen, kann je nachdem, welches der Simulator zuerst ausführt, der alte oder der neue Wert übernommen werden. Das ist ein Race in der Simulation, und das Ergebnis kann je nach Simulator abweichen. Vermieden wird es, indem man Eingänge an der fallenden Flanke ändert, leicht verzögert, nichtblockierende Zuweisungen oder in SystemVerilog Clocking-Blöcke verwendet.