Настройка IDE

Команда курса рекомендует для написания кода использовать связку из VS Code с расширением Verilog-HDL/SystemVerilog/Bluespec SystemVerilog и линтерами Icarus Verilog и Verible.

Icarus Verilog и Verible должны быть в PATH при запуске VS Code.

Мы верим, что с установкой VS Code и расширения к нему читатель справится самостоятельно. Icarus Verilog можно установить по инструкции. Поэтому в данном разделе сосредоточимся на установке Verible и настройке VS Code.

Установка Verible

Считаем, что все условности про переменную FPGA_TOOLS из раздела Сборка Icarus Verilog выполнены.

Verible поставляется как набор статически собранных исполняемых файлов, поэтому для установки достаточно скачать архив с GitHub, распаковать его и сделать исполняемые файлы доступными в PATH. Сделать это можно следующими командами:

$ cd $FPGA_TOOLS/repos
$ wget https://github.com/chipsalliance/verible/releases/download/v0.0-3704-g1d393d43/verible-v0.0-3704-g1d393d43-linux-static-x86_64.tar.gz
$ tar -xf verible-v0.0-3704-g1d393d43-linux-static-x86_64.tar.gz
$ cp -r verible-v0.0-3704-g1d393d43/bin ..

Поскольку $FPGA_TOOLS/bin уже должен присутствовать в PATH, то при выполнении

$ verible-verilog-ls --version

получим вывод

Verible Verilog Language Server built at v0.0-3704-g1d393d43
commandline: verible-verilog-ls --version
v0.0-3704-g1d393d43
Commit  2024-06-18
Built   2024-06-19T06:50:44Z

Настройка VS Code

Для того, чтобы Icarus Verilog и Verible были доступны из VS Code, они должны находиться в PATH при его запуске. Это означает, что открывать VS Code из директории проекта нужно комбинацией команд:

Для bash
$ export FPGA_TOOLS=~/fpga_tools
$ export PATH=$FPGA_TOOLS/bin:$PATH
$ code .
Для fish
$ set -x FPGA_TOOLS ~/fpga_tools
$ set -ax PATH $FPGA_TOOLS/bin
$ code .

Далее необходимо включить линтеры. Для того, чтобы сделать это на уровне проекта необходимо нажать Ctrl+Shift+P, найти опцию Preferences: Open Workspace Settings (JSON), нажать Enter и вставить туда следующие строчки:

.vscode/settings.json
{
    "verilog.formatting.verilogHDL.formatter": "verible-verilog-format",
    "verilog.languageServer.veribleVerilogLs.enabled": true,
    "verilog.linting.linter": "iverilog"
}

и сохранить файл.

Автоматический экспорт переменных окружения (опционально)

Чтобы каждый раз не прописывать команды экспорта перед запуском VS Code можно использовать инструмент direnv, который исполняет заданные команды при входе в директорию.

Подробно описывать процесс его первоначальной настройки не будем, он достаточно хорошо описан на официальном сайте. Приведем лишь содержимое файла .envrc.

.envrc
export FPGA_TOOLS=~/fpga_tools
PATH_add $FPGA_TOOLS/bin