Wyjazd IEEE Std 1800-2012 § 3,4 & § 24. Dla pełnego opisu o program
bloków.
W skrócie, niekompletnego Podsumowując, program
bloku:
- nie może nie zawierać
always
procedury, primitive
instancje module
instancje interface
przypadkach (virtual interface
i port interface
jest dozwolony) lub inne program
przykłady.
- określa planowanie w regionie reakcyjnym. Zapobiega to wyścigowi.
- ma dodatkowe zadanie systemowe
$exit
, które kończy instancje program
, które je wywołują.
- Symulacja zakończy się po zakończeniu wszystkich instancji
program
.
- jest w większości podobny do bloku
module
, z wyjątkiem przypadków opisanych powyżej.
Idea bloku program
polega na wyraźnym oddzieleniu testu od projektu. We wcześniejszych wersjach SystemVerilog (pre IEEE 1800) instancowanie class
było często ograniczone do bloków program
. Podkreśliło to podział testu i projektu. Zrobił także program
bloki kluczowe dla inżynierów weryfikacji, którzy chcieli używać programowania zorientowanego obiektowo w ich przepływu. Od IEEE 1800 można zdefiniować i wykonać instancję class
niemal w dowolnym miejscu. W rezultacie bloki program
stały się mniej wystarczające.
Dziś opinia użyteczności bloku program
jest podzielona. Od ostatnich kilku konwencji, w których byłem, tendencja wydaje się być oparta na porzucaniu bloków program
. Jest tak dlatego, że korzyści można osiągnąć innymi metodami. Planowanie w regionie reaktywnym można wykonać za pomocą bloków clocking
. A mailbox
, kolejka ([$]
) lub tablica asocjacyjna ([*]
) może być użyta do inteligentnego przetwarzania symulacji, kończąc wykonywanie wielu testów. Osobiście wciąż lubię używać bloków program
i w razie potrzeby używam initial forever
jako odpowiednika always
. Jeśli planujesz używać UVM, to blok testowy inny niż program
może działać lepiej.
Ostatecznie to naprawdę sprowadza się do preferencji metodologicznych. Najlepiej jest ocenić i wypróbować to na własną rękę.
Dzięki!Bawiłem się blokami programu, odkryłem, że podczas gdy podstawowe bloki programowe działają, niektóre funkcje nie są obsługiwane przez mój symulator (błąd podczas kompilacji "Konstrukta SystemVerilog jeszcze nie zaimplementowany"). Nie wydaje się, że warto próbować dowiedzieć się, jakie funkcje bloków programu działają, a co nie, ponieważ brzmi to tak, jak mogę uzyskać wszystkie zalety bloków programu za pomocą innych środków. – dan