Verilator

Verilator
Autor Wilson Snyder
Aktualna wersja stabilna 5.048
(26 kwietnia 2026) [±]
Język programowania C++
System operacyjny Linux, FreeBSD, Microsoft Windows
Rodzaj Symulator
Licencja GNU Lesser General Public License i Licencja Artystyczna
Strona internetowa

Verilator – darmowy, otwarty symulator języka SystemVerilog (język opisu sprzętu). Obecnie jest używany w badaniach akademickich, projektach komercyjnych i jako część innych pakietów otwartego oprogramowania.

Verilator nie wykonuje symulacji bezpośrednio. Zamiast tego przekłada opis danego układu cyfrowego w SystemVerilogu na opis jego symulatora w C++ lub SystemC. W odróżnieniu od standardowych symulatorów, które dokładnie modelują zdarzenia zachodzące podczas pojedynczego cyklu zegara, wygenerowane przez Verilatora modele działają tylko z dokładnością do całego cyklu zegarowego i operują w logice dwustanowej, ale dzięki temu mogą osiągnąć wyższą wydajność[1.1].

Historia

Narzędzie powstało w 1994 roku w zespole kierowanym przez Paula Wassona z Core Logic Group w Digital Equipment Corporation (DEC). Zostało użyte do przekładu kodu w języku Verilog na C, co miało umożliwić wykorzystanie go w symulacji napisanego w C modelu procesora Alpha. W połowie lat 90., narzędzie zaczęło być wykorzystywane przez inne grupy wewnątrz DEC, a odpowiedzialność za jego rozwój przejął Duane Galbi. W 1998 DEC opublikował kod źródłowy[1.2].

Od 2001 roku narzędzie było rozwijane głównie przez Wilsona Snydera w ramach otwartoźródłowego projektu Veripool. Dodano możliwość generacji SystemC, a narzędzie przepisano od podstaw w C++, co doprowadziło do wzrostu jego wydajności. W 2009 roku Verilator zaczął częściowo wspierać SystemVerilog. W 2018 roku dodano możliwość generacji modeli działających współbieżnie. Od 2022 roku, Verilator w wersji 5 wykorzystuje algorytm planisty zgodny ze standardem IEEE oraz wsparcie dla modelowania opóźnień, co usuwa wcześniejsze ograniczenia, przez które wszystkie opóźnienia były ignorowane[1.2].

Działanie

Verilator wspiera większość funkcjonalności języka Verilog oraz SystemVerilog[1.3]. Podejście stosowane w Verilatorze jest bliższe syntezie układu niż jego symulacji[1.1].

Podczas konwersji, zawartości modułów są osadzane w miejscach ich użycia, aby utworzyć jeden moduł. Wykonywana jest też analiza statyczna projektu w celu eliminacji nadmiarowych przewodów i odgórnego zaplanowania kolejności wykonywania opisanych w nim procesów. Ostatecznie tworzona jest klasa w języku C++ zawierająca pola, którym można przypisywać wartości dla portów wejściowych modelowanego układu, a także metody wykonujące pojedynczy krok symulacji. W efekcie wykonania kroku symulacji, wartości portów wejściowych są odpowiednio przekształcane i zapisywane w polach zawierające wartości portów wyjściowych.

Verilator posiada opcję statycznego podziału projektu na kilka równoległych wątków, co potencjalnie może poprawić wydajność symulacji.

Dzięki temu, że SystemC jest zestawem klas C++, wsparcie dla niego jest zapewnione przez odpowiednio wygenerowaną klasę zapewniającą warstwę kompatybilności między SystemC a zawartym w niej modelem C++.

Zobacz też

Przypisy

  1. Wilson Snyder, Verilator 5.012 [online], Veripool, 13 czerwca 2023 [dostęp 2023-07-30] (ang.).
    1. a b S. 42.
    2. a b S. 126.
    3. S. 49.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Kembali kehalaman sebelumnya