Menu
Coddy logo textTech

Sprawdzanie stanów czterowartościowych

Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 26 z 38.

Testbench musi celowo obsługiwać wartości nieznane. Zwykłe porównanie może zwrócić X, co może ukryć błąd w warunku if. Porównania równości i nierówności case, === i !==, porównują dosłownie wszystkie cztery wartości i zwracają znaną wartość logiczną. Redukcja XOR, po której następuje porównanie case z X, może wykryć nieznane bity. Używaj ich jako kontroli w symulacji, a nie jako modelu sprzętu wykrywającego fizyczne wartości X.

Odpowiedni fragment; pozostałe deklaracje i połączenia podano w wyzwaniu.

if(actual !== expected) errors = errors + 1;

Różnica obejmująca X lub Z jest zliczana, zamiast znikać w nieznanym warunku.

W modułach sprawdzających symulację stosuj jawne porównania czterostanowe i określ, jak należy traktować wartości nieznane.

challenge icon

Wyzwanie

Średni

To wyłącznie symulator sprawdzający, a nie syntezowalna logika toru danych. Ustaw mismatch, gdy actual i expected różnią się przy porównaniu czterowartościowym. Jeśli oba mają takie samo X lub Z w tych samych pozycjach, są uznawane za równe. Wynik musi always być znanym 0 lub 1. Kolumny wyjściowe: mismatch. Wszystkie wartości pobudzające są znanymi wartościami binarnymi.

Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany testbench.v podaje zmiany wejść i wypisuje wyjścia po ich ustaleniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wypisywania, opóźnień ani kończenia symulacji. Oczekiwany wynik to jeden wiersz wartości dziesiętnych dla każdej obserwacji, rozdzielonych pojedynczą spacją i zakończonych znakiem nowej linii.

Spróbuj swoich sił

module dut (input [3:0] actual, input [3:0] expected, output mismatch);
    // Zastąp ten kod zastępczy swoim projektem.
    assign mismatch = 0;
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online