2013-08-23 25 views
6

Czy są jakieś cechy SV, które oferuje blok programu, które nie mogą być powielone z innymi metodami?Blok programu SystemVerilog w porównaniu z tradycyjnym testbenchem

Mniej konkretna wersja tego pytania brzmi: czy powinienem zawracać sobie głowę blokami programu do weryfikacji? Przechodzę od środowiska, w którym byliśmy ograniczeni do Verilog-95 do środowiska, w którym jest obsługiwane SV, i zastanawiam się, czy tworzę dodatkową pracę dla siebie, nie używając bloków programu.

Odpowiedz

9

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ę.

+0

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

1

Nie polecam używania bloków programu - zamiast tego użyj modułu. Napisałem o tym detailed article o tym kilka lat temu.