Najpierw zderzenie z rzeczywistością
Do nauki Veriloga nie musisz niczego instalować. Każdy interaktywny edytor w tej dokumentacji uruchamia prawdziwy kod Veriloga przez Icarus Verilog w piaskownicy, łącznie z przeglądarką przebiegów. Jeśli chcesz poznać język, pomiń tę stronę i wróć, gdy zechcesz pracować lokalnie nad dłuższym projektem.
Nadal chcesz lokalnej instalacji? Czytaj dalej.
Co naprawdę oznacza "instalacja Veriloga"
Verilog to język, a nie program. Żeby go uruchomić, potrzebujesz:
- Symulatora, czyli narzędzia, które kompiluje pliki
.vi je uruchamia. Dla większości uczących się to Icarus Verilog, który daje kompilatoriverilogi środowisko uruchomieniowevvp. - Przeglądarki przebiegów, zwykle GTKWave, która odczytuje pliki
.vcdtworzone przez testbench. - Edytora tekstu. Popularnym wyborem jest VS Code z rozszerzeniem do Veriloga, ale nada się każdy.
Istnieją też narzędzia producentów (Xilinx Vivado, Intel Quartus, Synopsys VCS, Cadence Xcelium) do programowania FPGA i pracy nad układami ASIC. Są duże, często licencjonowane i to przesada do nauki. Zostań przy Icarusie.
Instalacja na macOS
Najszybsza droga to Homebrew:
brew install icarus-verilog gtkwave
To instaluje zarówno kompilator, jak i przeglądarkę przebiegów. Sprawdź:
iverilog -V
gtkwave --version
Powinny pojawić się numery wersji obu programów. iverilog automatycznie dodaje się do PATH. GTKWave instaluje pakiet aplikacji w /Applications oraz polecenie gtkwave, które uruchomisz z terminala.
Jeśli nie masz Homebrew, najpierw wykonaj instrukcje ze strony brew.sh (to jedno polecenie curl), a potem wróć tutaj.
Instalacja na Linuksie
W dystrybucjach opartych na Debianie (Ubuntu, Mint, Pop!_OS):
sudo apt update
sudo apt install iverilog gtkwave
W systemach Fedora / RHEL:
sudo dnf install iverilog gtkwave
W Archu:
sudo pacman -S iverilog gtkwave
Potem sprawdź tak samo:
iverilog -V
gtkwave --version
Wersja z repozytorium czasem jest o jedno wydanie za wersją źródłową. Do nauki zwykle to wystarcza. Jeśli potrzebujesz nowszego wydania, zbuduj program ze źródeł: repozytorium projektu na GitHubie zawiera instrukcje, a całość sprowadza się do ./configure && make && sudo make install.
Instalacja na Windows
Najprościej użyć gotowego instalatora utrzymywanego przez społeczność iverilog na bleyer.org (wyszukaj "iverilog Windows"). Zawiera Icarus Verilog, GTKWave i narzędzia GCC, których Icarus potrzebuje wewnętrznie.
- Pobierz najnowszy instalator (zwykle
iverilog-vXX-setup.exe). - Uruchom go. Zaakceptuj ustawienia domyślne, chyba że masz powód, żeby je zmienić.
- Gdy instalator zapyta, zostaw zaznaczoną opcję "Add to PATH".
- Otwórz nowe okno PowerShell albo wiersza poleceń i sprawdź:
iverilog -V
gtkwave --version
Jeśli opcja dodania do PATH nie jest zaznaczona, plik binarny znajdziesz w miejscu takim jak C:\iverilog\bin\iverilog.exe. Dodaj C:\iverilog\bin do PATH użytkownika we Właściwościach systemu albo uruchom instalator ponownie i zaznacz tę opcję.
Dobrym wyborem na Windows jest też WSL2: zainstaluj Ubuntu ze sklepu Microsoft Store i postępuj zgodnie z instrukcjami dla Linuksa. Dostaniesz bardziej znajomy, uniksowy sposób pracy.
Kompilacja i uruchomienie pierwszego pliku
Po instalacji praca wygląda tak. Zapisz plik jako hello.v:
module hello;
initial begin
$display("hello from verilog");
$finish;
end
endmodule
Skompiluj go do pliku binarnego symulacji:
iverilog -o hello hello.v
iverilog to kompilator. -o hello nadaje nazwę wynikowi. hello.v to twój plik źródłowy.
Uruchom symulację:
vvp hello
Powinno pojawić się:
hello from verilog
To cała lokalna pętla pracy. Od tego miejsca możesz podzielić projekt na wiele plików (iverilog -o sim *.v), włączyć funkcje SystemVerilog-2012 flagą -g2012 albo przekierować wyjście do własnych skryptów.
Tworzenie i oglądanie przebiegów
Dodaj do testbencha $dumpfile i $dumpvars, uruchom go i otwórz wynikowy plik VCD w GTKWave:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, test);
// ...
end
Gdy vvp sim skończy działanie, obok pliku źródłowego pojawi się dump.vcd. Otwórz go:
gtkwave dump.vcd
GTKWave wczytuje plik i pokazuje drzewo sygnałów. Przeciągnij interesujące cię sygnały do obszaru przebiegów. Szczegółowo omawiamy to w artykule Dumpfile i VCD.
Typowe błędy
iverilog: command not found: plik binarny nie jest w PATH. Na Windows zwykle oznacza to, że instalator działał bez aktualizacji PATH. Na macOS/Linuksie zwykle oznacza to, że Homebrew/apt nie dokończył instalacji albo używasz powłoki, która nie wczytała ponownie PATH (zamknij i otwórz terminal).
syntax error w linii, która wygląda poprawnie: sprawdź, czy nie używasz funkcji SystemVeriloga w trybie zwykłego Veriloga. Przekaż -g2012 do iverilog, żeby włączyć SystemVerilog-2012:
iverilog -g2012 -o sim main.v
Unknown module podczas kompilacji: albo plik źródłowy modułu nie został przekazany do iverilog, albo nazwa modułu w instancji nie zgadza się dokładnie z deklaracją module. Verilog rozróżnia wielkość liter.
Pusty przebieg w GTKWave: testbench nie wywołuje $dumpfile i $dumpvars albo symulacja dochodzi do $finish, zanim zmieni się jakikolwiek sygnał. Dodaj co najmniej jedno $dumpvars(0, top) i pozwól symulacji działać wystarczająco długo, żeby pojawiły się zmiany.
Co dalej
Niezależnie od tego, czy instalujesz lokalnie, czy zostajesz przy przeglądarce, następny artykuł pokazuje, jak od zera napisać pierwszy kompletny moduł: deklarację modułu, porty, mały fragment logiki kombinacyjnej i testbench wokół niego.
Najczęściej zadawane pytania
Jak zainstalować Veriloga?
Nie ma jednego programu 'Verilog': to język, a instaluje się kompilator i symulator. Do nauki standardowym wyborem jest Icarus Verilog (polecenia iverilog i vvp) w parze z GTKWave do oglądania przebiegów. Na macOS użyj brew install icarus-verilog gtkwave, na Debianie/Ubuntu apt install iverilog gtkwave, a na Windows pobierz gotowy instalator ze strony Bleyera.
Czy do nauki Veriloga trzeba cokolwiek instalować?
Nie. Edytor na tej stronie uruchamia twój kod przez iverilog i vvp w chmurze i wyświetla przebieg VCD bezpośrednio na stronie. Każdy artykuł z tych poradników możesz przerobić bez instalowania czegokolwiek. Lokalna instalacja przydaje się, gdy chcesz zapisywać pliki, trzymać projekt w systemie kontroli wersji albo pracować nad projektem zbyt dużym dla edytora w przeglądarce.
Jaka jest różnica między iverilog a vvp?
iverilog to kompilator: zamienia pliki źródłowe .v w plik binarny symulacji. vvp to środowisko uruchomieniowe, które ten plik wykonuje. Typowa sekwencja poleceń to iverilog -o sim main.v test.v, a potem vvp sim. Większość skryptów roboczych opakowuje oba kroki.
Czy Icarus Verilog jest darmowy?
Tak. Icarus Verilog to oprogramowanie open source na licencji GPL/LGPL. Nie ma serwera licencji ani okresu próbnego, a program nadaje się zarówno do nauki, jak i do zastosowań komercyjnych. Komercyjne alternatywy (ModelSim, VCS, Xcelium) są płatne. Do wszystkiego, co omawia ta dokumentacja, Icarus w zupełności wystarcza.
Jak sprawdzić wersję iverilog?
Otwórz terminal i uruchom iverilog -V. Powinien pojawić się numer wersji, na przykład Icarus Verilog version 12.0. Jeśli dostajesz 'command not found', plik binarny nie jest w PATH: uruchom instalator ponownie albo dodaj katalog bin do konfiguracji powłoki.