konto usunięte

Temat: preferowany język

Witam

Zanim grupa umrze, proponuję nowy temat. Podzielmy się swoimi preferencjami odnośnie poszczególnych języków modelowania/weryfikacji.
Co doceniacie szczególnie w języku którego używacie, co Wam się nie podoba, co chcielibyście przenieść z innego języka? itd. itp.

Coś od siebie na początek: begin i end w Verilogu. Nie wiem dlaczego język nie mógł zapożyczyć z C nawiasów klamrowych, skoro i tak w nim sporo C-like'owych naleciałości. Osobiście, nawet jeśli nie muszę (pojedyncza instrukcja w bloku), to stosuję begin/end, bo lubię mieć wyraźnie rozgraniczone bloki, rzucające się od razu w oczy.
Marcin Bońka

Marcin Bońka Programista, Neubloc
Polska Sp. z o.o.

Temat: preferowany język

No coz, ja osobiscie wole Verilog'a, choc nie mam nic przeciwko VHDL'owi.

- VHDL ma jedna wade - jest za bardzo opisowy. Co prawda jest bardziej abstrakcyjne od Verilog'a, ale jak dla mnie troche za duzo sie pisze. Na poczatku powstal na potrzeby wojska, wiec troche mnie dziwi, ze jest taki opisowy i abstrakcyjny.

- Verilog - zostal zaprojektowany na potrzeby przemyslu, stad jego prostota. Co prawda ma duzo nalecialosci z C, ale to sprawia, ze latwiej sie go nauczyc. W przeciwinstwie do Verilog'a, SystemVerilog znowu robi sie bardzo abstrakcyjny (klasy, interfejsy, modporty, itp.), co troche zaczyna mi nie odpowiadac, ale dawno juz nie pisalem.

Co do innych jezykow:

- OVA vs. PSL - pomimo, ze OpenVera Assertions (OVA) nie jest uznanym standardem wsrod jezykow weryfikacyjnych, osobiscie podoba mi sie bardziej od PSL'a. Byc moze to tez dlatego, ze nauczylem sie go przed PSL'em.

- EDIF, SDF - no coz, pomimo, ze nie sa to trudne jezyki do zapisu i zrozumienia, nie polecam pisac ukladow "z palca" :) Te jezyki uzywane sa przez programy generujace kod do syntezy.

Co do weryfikacji ukladow za pomoca jezykow programowania:

- SystemC - zbior klas template'owych do C++, ktore umozliwiaja szybka implementacje ukladow za pomoca tego jezyka. Wraz z SPV (SimPlus Verification ) - innym nie-ustandaryzowanym zestawem bibliotek, sa jak dla mnie troche na wyrost rozbudowane. Wydaje mi sie, ze mozna bylo nieco lepiej/prosciej zaprojektowac te biblioteki.

- PLI - interfejs jezyka C do Verilog'a - latwy, prosty i przyjemny. Wystarczy wypelnic odpowiednia tablice i juz mozemy sie podpiac do ukladu.

- VPI - druga wersja interfejsu jezyka C do Verilog'a - nieco bardziej rozbudowany i posiadajacy nieco wiecej funkcji niz PLI.

- VHPI - interfejs jezyka C do VHDL'a - coz mozna powiedziec - masakra. Kiedys probowalem sie wglebic w ten interfejs, ale "wypytywanie" symulatora co chwile, z jakim sygnalem, jakiego typy, w jakim procesie, w jakiej architekturze mam do czynienia, skutecznie mnie zniechecilo.

- Handel-C - jest cos takiego, bodajze stwozone przez Denali, w tej chwili jest standardem IEEE. Jest to dosc mocno zmodyfikowany standard jezyka C, jak dla mnie za mocno zmodyfikowany.

Hm... w sumie to dosc duzo ponarzekalem.
Jesli mialbym wybrac jezyk projektowania, to wybralbym: Verilog, SystemVerilog, VHDL - w tej kolejnosci. W Verilog'u podoba mi sie prostota, VHDL'a lubie dlatego, ze nauczylem sie go jako pierwszego (sentyment). Poza tym wszystkie trzy jezyki maja wsparcie symulatorow i syntezerow.

A jesli chodzi o konstrukcje begin/end w Verilog'u: stosuje tu zasade znana z C/C++, tzn. jezeli mam do zapisania pojedyncza instrukcje w bloku np. always, wpisuje ja bez begin/end.

konto usunięte

Temat: preferowany język

Dzięki Marcinie za wyczerpującą odpowiedź :)
Ja też znałem najpierw VHDL'a ale jakoś sentyment nie pozostał :), może dlatego że od 2 lat z drobnymi wyjątkami zajmuję się tylko Verilogiem, to wiele z VHDL'a muszę sobie teraz przypominać... tak więc wolę Veriloga, bo już poniekąd w nim myślę ;)

Co do SystemC... nie uważam żeby był rozbudowany. Oczywiście, jeżeli ktoś chce opisać moduł na poziomie RTL, to narzut kodu w SystemC jest tragicznie duży. Z tym, że SC nie powstał do pisania RTL, ale do tworzenia modeli transakcyjnych, a to już jest o wiele przyjemniejsze (nie mam niestety porównania z SystemVerilog bo go jeszcze nie poznałem).

konto usunięte

Temat: preferowany język

Paweł Duc:
...begin i end w Verilogu. Nie wiem dlaczego język nie mógł zapożyczyć z C nawiasów klamrowych, skoro i tak w nim sporo C-like'owych naleciałości. Osobiście, nawet jeśli nie muszę (pojedyncza instrukcja w bloku), to stosuję begin/end, bo lubię mieć wyraźnie rozgraniczone bloki, rzucające się od razu w oczy.

Zapomniałem dodać, że mimo, iż stosuję begin/end zawsze, bo lubię mieć wyraźnie rozgraniczone bloki, ale to nie zmienia faktu że bardzo denerwują mnie rozwleczone przez to konstrukcje if/else czy case. Poszedłem na kompromis pomiędzy rzucającym się w oczy rozgraniczeniem, a irytującym narzutem kodu... ponoć życie to sztuka kompromisu :)

Aha, jeszcze jedno. Moja wypowiedź trochę się minęła z tematem :) Nadrabiając: do projektowania preferuję Veriloga, do testbench'y.... zależy. Wyznaję zasadę: najprostsze rozwiązania są najlepsze (czasem w wyjątkowych sytuacjach się nie stosuję, ale o tym innym razem). Jeśli środowisko testowe nie wymaga funkcjonalności wykraczających poza w miarę łatwe użycie behawioralnych elementów HDL'a w którym piszę RTL to go po prostu używam. Jeśli trzeba coś ekstra, wtedy sięgam po inny język (obecnie tylko SystemC, bo jak już wspomniałem SystemVerilog jeszcze nie miałem czasu ani okazji poznać, podobnie jak asercji).
Marcin Bońka

Marcin Bońka Programista, Neubloc
Polska Sp. z o.o.

Temat: preferowany język

Kolega (programista) napisal kiedys w SystemC opis procesora AVR Atmela. Co prawda z RISC'a zrobil CISC'a, a kodu bylo co nie miara, ale stwierdzil, ze pisal to dwa tygodnie i wedlug niego poszlo to szybko. Moze wroce jeszcze do przejrzenia SystemC, na razie niestety nie mam czasu.

Do testbench'y chyba tez wole VHDL'a. Dawno juz nie pisalem skomplikowanych testbench'y, z ladowaniem danych z kilku plikow, itp., ale wydaje mi sie, ze w VHDL latwiej sie to robi. Chociaz z drugiej strony gdyby opisac testbencha w SystemC... Mozliwosci bylyby niesamowite.

Następna dyskusja:

Język słowacki




Wyślij zaproszenie do