Pokrycie warunków brzegowych i sterowania
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 29 z 38.
Zaliczenie kilku testów różni się od sprawdzenia ważnych scenariuszy. Śledź, czy przetestowano wartości minimalne, maksymalne i zwykłe oraz czy konkurujące ze sobą elementy sterujące wystąpiły jednocześnie. Flaga pokrycia odnotowuje, że zaobserwowano case; nie dowodzi, że projekt zareagował prawidłowo. Połącz pokrycie ze sprawdzaniem wyników.
Odpowiedni fragment; pozostałe deklaracje i połączenia znajdują się w wyzwaniu.
if(value==0) seen[0]=1;
else if(value==15) seen[1]=1;
else seen[2]=1;Maska bitowa zapamiętuje, które kategorie już wystąpiły, nie zastępując wcześniejszych trafień.
Połącz pokrycie przypadków brzegowych i kombinacji sterujących z niezależnymi kontrolami poprawności.
Wyzwanie
ŚredniŚledź trzy kategorie pokrycia wejściowego w seen, nie zerując wcześniejszych trafień: bit 0 rejestruje value=0, bit 1 rejestruje value=15, a bit 2 rejestruje wartości od 1 do 14. Wejścia zawierają znane bity. Wywołujący inicjalizuje seen=0 przed scenariuszem. Ten moduł zawiera przeznaczone wyłącznie do symulacji task, wywoływane przez zablokowany testbench. Kolumny wyjściowe: seen w zapisie dziesiętnym.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany testbench.v dostarcza zmiany wejść i wyświetla wyjścia po ich ustaleniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Wyświetlanie i sterowanie scenariuszami pozostaw w zablokowanym testbench; zaimplementuj tylko treść task. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych na każdą obserwację, oddzielonych jedną spacją i zakończonych znakiem nowej linii.
Spróbuj swoich sił
module dut;
task observe;
input [3:0] value;
inout [2:0] seen;
begin
// Uzupełnij zadanie sprawdzające.
seen=seen;
end
endtask
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja
1Niezawodna logika kombinacyjna RTL
Wartości domyślne zapobiegają zatrzaskomKoder priorytetowyWeryfikacja kodu one-hotBezpieczne dekodowanie casePodsumowanie — router żądań2Szerokości i arytmetyka ze znakiem
Zachowywanie bitów przeniesieniaPorównania ze znakiemArytmetyczne przesunięcia w prawoPrzepełnienie i nasyceniePodsumowanie — różnica ze znakiem3Wielokrotnego użytku RTL
Funkcje kombinacyjneParametry bezpieczne pod względem szerokościPętle generateWarunkowe generatePodsumowanie – wielokrotnego użytku maska bitowa6Testbenche z autotestowaniem
Sprawdzanie stanów czterowartościowychWielokrotnego użytku zadania sprawdzająceModele referencyjne i wynikiPokrycie warunków brzegowych i sterowaniaPodsumowanie — audyt sumatoraPoćwicz samodzielnie: Kompilator Verilog online