Сначала - отрезвляющая мысль
Чтобы учить Verilog, устанавливать ничего не нужно. Каждый интерактивный редактор в этих документах прогоняет реальный Verilog через Icarus Verilog в песочнице, включая waveform viewer. Если ты здесь, чтобы выучить язык, пропусти эту страницу и возвращайся, когда захочешь работать над более длинным проектом локально.
Всё ещё хочешь установить локально? Читай дальше.
Что на самом деле значит "установить Verilog"
Verilog - это язык, не программа. Чтобы его запускать, нужно:
- Симулятор - инструмент, который компилирует твои
.vфайлы и запускает их. Для большинства учащихся это Icarus Verilog, который даёт компиляторiverilogи runtimevvp. - Просмотрщик waveform - обычно GTKWave - который читает
.vcdфайлы, которые производит твой testbench. - Текстовый редактор - VS Code с расширением для Verilog - стандартный выбор, но подойдёт что угодно.
Вендорские тулчейны (Xilinx Vivado, Intel Quartus, Synopsys VCS, Cadence Xcelium) существуют для программирования FPGA и работы с ASIC. Они большие, часто лицензированные и избыточные для обучения. Сиди на Icarus.
Установка на macOS
Самый быстрый путь - Homebrew:
brew install icarus-verilog gtkwave
Это ставит и компилятор, и waveform viewer. Проверь:
iverilog -V
gtkwave --version
Должны увидеть номера версий от обоих. iverilog сам прописывается в PATH. GTKWave ставит и app bundle в /Applications, и команду gtkwave в терминале.
Если Homebrew не установлен, сначала следуй инструкциям на brew.sh - это одна curl-команда - потом возвращайся.
Установка на Linux
На Debian-подобных дистрибутивах (Ubuntu, Mint, Pop!_OS):
sudo apt update
sudo apt install iverilog gtkwave
На Fedora / RHEL:
sudo dnf install iverilog gtkwave
На Arch:
sudo pacman -S iverilog gtkwave
Затем проверь так же:
iverilog -V
gtkwave --version
Версия из пакетов иногда отстаёт от апстрима на релиз. Для большинства учебных задач этого хватает. Если нужна более новая версия - собирай из исходников: репозиторий проекта на GitHub содержит инструкции, и это ./configure && make && sudo make install.
Установка на Windows
Самый простой путь - прекомпилированный инсталлятор от сообщества iverilog на bleyer.org (ищи "iverilog Windows"). В нём упакованы Icarus Verilog, GTKWave и тулчейн GCC, который Icarus использует внутри.
- Скачай последнюю версию инсталлятора (обычно
iverilog-vXX-setup.exe). - Запусти. Соглашайся на дефолты, если нет причин делать иначе.
- Когда инсталлятор спросит - оставь галку "Add to PATH".
- Открой новое окно PowerShell или Command Prompt и проверь:
iverilog -V
gtkwave --version
Если забыл добавить в PATH, бинарник лежит примерно по адресу C:\iverilog\bin\iverilog.exe. Либо добавь C:\iverilog\bin в пользовательский PATH через System Properties, либо перезапусти инсталлятор и поставь галку.
WSL2 - тоже хороший вариант на Windows. Установи Ubuntu из Microsoft Store и следуй инструкциям для Linux внутри неё. Будет более привычный Unix-подобный workflow.
Компиляция и запуск первого файла
После установки workflow выглядит так. Сохрани файл как hello.v:
module hello;
initial begin
$display("hello from verilog");
$finish;
end
endmodule
Скомпилируй его в симуляционный бинарник:
iverilog -o hello hello.v
iverilog - компилятор. -o hello задаёт имя выходного файла. hello.v - твой исходник.
Запусти симуляцию:
vvp hello
Должен увидеть:
hello from verilog
Это весь локальный цикл. Отсюда можно делить проект на несколько файлов (iverilog -o sim *.v), использовать флаг -g2012, чтобы включить фичи SystemVerilog-2012, или гнать вывод в свои скрипты.
Получение и просмотр waveform
Добавь $dumpfile и $dumpvars в свой testbench, запусти его и открой получившийся VCD в GTKWave:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, test);
// ...
end
После того как vvp sim отработает, рядом с исходником будет dump.vcd. Открой его:
gtkwave dump.vcd
GTKWave загрузит файл и покажет дерево сигналов слева. Перетаскивай нужные сигналы в область wave справа. Подробно разбираем это в Dumpfile and VCD.
Типичные ошибки
iverilog: command not found - бинарник не в PATH. На Windows это обычно значит, что инсталлятор не отметил галку обновления PATH. На macOS/Linux обычно значит, что Homebrew/apt не доработал, или ты в шелле, который не перечитал PATH (закрой и открой терминал).
syntax error в строке, которая выглядит правильно - проверь, что не используешь фичу SystemVerilog в режиме обычного Verilog. Передай -g2012 в iverilog, чтобы включить SystemVerilog-2012:
iverilog -g2012 -o sim main.v
Unknown module при компиляции - либо файл с этим модулем не передан в iverilog, либо имя в instantiation не совпадает с объявлением module в точности. Verilog регистрозависимый.
Пустой waveform в GTKWave - твой testbench не вызвал $dumpfile и $dumpvars, либо симуляция упала в $finish раньше, чем сигналы успели поменяться. Добавь хотя бы один $dumpvars(0, top) и дай симуляции проработать достаточно долго для переходов.
Что дальше
Что бы ты ни выбрал - локальную установку или браузерный редактор - следующий документ проводит через написание первого полного module с нуля: объявление module, ports, маленький кусок комбинационной логики и testbench вокруг него.
Часто задаваемые вопросы
Как установить Verilog?
Единой программы 'Verilog' не существует - это язык, ты устанавливаешь компилятор/симулятор. Для обучения стандартный выбор - Icarus Verilog (команды iverilog и vvp) в паре с GTKWave для просмотра waveforms. На macOS - brew install icarus-verilog gtkwave; на Debian/Ubuntu - apt install iverilog gtkwave; на Windows - скачай прекомпилированный инсталлятор с сайта Bleyer.
Нужно ли что-то устанавливать, чтобы учить Verilog?
Нет. Редактор на этой странице запускает твой код через iverilog и vvp в облаке и рендерит VCD waveform прямо в браузере. Ты можешь пройти каждый документ из этих туториалов, ничего не устанавливая. Локальная установка пригодится, когда захочется сохранять файлы, держать проект под контролем версий или работать над проектом, который великоват для редактора в браузере.
В чём разница между iverilog и vvp?
iverilog - это компилятор, он превращает твои .v файлы в симуляционный бинарник. vvp - runtime, который этот бинарник исполняет. Типичная последовательность команд: iverilog -o sim main.v test.v, затем vvp sim. Большинство сборочных скриптов оборачивают и то, и другое.
Icarus Verilog бесплатный?
Да. Icarus Verilog - open source под GPL/LGPL. Никакого лицензионного сервера, никакого триала, и он подходит и для учёбы, и для коммерческого использования. Платные альтернативы (ModelSim, VCS, Xcelium) - платные; для всего, что разбирается в этих документах, Icarus хватит.
Как проверить версию iverilog?
Открой терминал и запусти iverilog -V. Должен увидеть номер версии вроде Icarus Verilog version 12.0. Если выпадает 'command not found', бинарник не в PATH - перезапусти установщик или добавь bin-каталог в конфиг своего шелла.