Wielokrotnego użytku zadania sprawdzające
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 27 z 38.
task w Verilogu grupuje pracę proceduralną i może zwracać wyniki za pomocą argumentów wyjściowych lub wejściowo-wyjściowych. Zadania w środowisku testowym ograniczają powielanie sprawdzeń. W przeciwieństwie do kombinacyjnej function, task może zawierać sterowanie czasem, jeśli jest to odpowiednie, ale te zadania sprawdzające wykonują wyłącznie porównania bez upływu czasu. Używaj zadań automatycznych, jeśli oddzielne wywołania współbieżne wymagają niezależnej pamięci lokalnej; podane tu wywołania są sekwencyjne.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
task check_value;
input [7:0] actual,expected;
output ok;
begin ok = (actual === expected); end
endtaskWywołujący otrzymuje wynik sprawdzenia przez jawny argument wyjściowy.
Określ kierunki argumentów task i resetuj zmienne wynikowe przy każdym wywołaniu przed zebraniem niepowodzeń.
Wyzwanie
ŚredniZaimplementuj check_value tak, aby ok miało wartość jeden, gdy actual i expected są zgodne przy porównaniu czterostanowym, a w przeciwnym razie zero. Ten moduł zawiera wywoływane przez zablokowany testbench zadanie task, przeznaczone wyłącznie do symulacji. Kolumny wyjściowe: ok.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany testbench.v wprowadza zmiany na wejściu 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 wyników i sterowanie scenariuszem pozostaw w zablokowanym testbench; zaimplementuj tylko treść zadania task. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych na każdą obserwację, rozdzielonych pojedynczą spacją i zakończony znakiem nowej linii.
Spróbuj swoich sił
module dut;
task check_value;
input [7:0] actual,expected;
output ok;
begin
// Uzupełnij zadanie sprawdzające.
ok=0;
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