はじめに

本記事は、2023年10月に投稿したものを、2025年1月に内容を大きく変えずに文体や表現について更新しました。

  • 自分の環境整理や研究室への情報共有のため,Verilog の環境構築についてまとめる
  • 本記事では以下の環境を想定している

    • Windows 10 以降
      • Scoop のインストールを前提としている
      • Scoop の自作拡張バケットを用いてインストールするものがあるため,必要に応じて導入を推奨する
        • scoop bucket add motty https://github.com/motty-mio2/scoop-bucket/
    • Linux (Ubuntu 22.04 等)
      • Ubuntu では apt を用いるインストールを前提としている
      • ただし,一部 linuxbrew を用いてインストールするものがあるため,必要時応じて導入を推奨する
      • 最近だと、関数型パッケージマネージャのNixが便利である
  • インストール方法については、Windows と Linux で異なる場合があるため、それぞれについて記載する。

    • あくまで私の環境でのインストール方法であり、他の環境では異なる場合がある

エディタ

周辺開発ツール

  • 以下に便利な開発ツールについて紹介する
  • これらは,VSCode の拡張機能と連携して利用できる

steveicarus iverilog

  • Verilog HDL/SystemVerilog シミュレーション用のコンパイラ

インストール方法

Windows
  • Scoop からインストール(推奨)
    • scoop install iverilog

Linux

  • apt からインストール(推奨)
    • sudo apt install iverilog

dalance svls

  • SystemVerilog の LanguageServer

インストール方法

Windows
  • Scoop からインストール(推奨:拡張バケット)
    • scoop install svls

Linux

  • brew からインストール(推奨)
    • brew install svls
  • cargo からインストール
    • cargo install svls

dalance svlint

  • SystemVerilog の Linter

インストール方法

Windows
  • Scoop からインストール(推奨:拡張バケット)
    • scoop install svlint

Linux

  • brew からインストール(推奨)
    • brew install svlint
  • cargo からインストール
    • cargo install svlint

chipsalliance verible

  • Google などが開発する、SystemVerilog の Linter・Formatter・LanguageServer などを統合したツール
  • 一通りのツールがそろっている
  • 多くを使ったことはないが、様々なツールが統合されているらしい
  • 頻繁に更新もされている

インストール方法

Windows
  • Scoop からインストール(推奨:拡張バケット)
    • scoop install verible

Linux

  • brew からインストール(推奨)
    • brew install motty-mio2/tap/verible

suoto hdl_checker

  • VerilogHDL に対応する LanguageServer
    • 他にあまり選択肢がないため,これを利用する
  • 2025年1月時点で、3年ほどメンテナンスされていないため、今後の利用には注意が必要

インストール方法

Windows
  • Scoop / pip からインストール(推奨)
    • scoop install python
    • ~\scoop\shims\python3.exe -m pip install hdl_checker

Linux

  • pip からインストール(推奨)
    • /usb/bin/python -m pip install hdl_checker

設定

  • VSCode

    • settings.json に以下の内容を追記する

      • 以下の設定は,自分の環境に合わせて適宜変更すること
      "verilog.formatting.iStyleVerilogFormatter.style": "ANSI",
      "verilog.formatting.verilogHDL.formatter": "verible-verilog-format",
      "verilog.languageServer.hdlChecker.enabled": true,
      "verilog.languageServer.svls.enabled": true,
      "verilog.languageServer.veribleVerilogLs.enabled": true,
      "verilog.linting.iverilog.arguments": "-g2012",
      "verilog.linting.iverilog.runAtFileLocation": true,
      "verilog.linting.linter": "xvlog", // Vivadoが入っている場合
      // "verilog.linting.linter": "iverilog", // Vivadoが入っていない場合
      "verilog.linting.verilator.runAtFileLocation": true,
      "verilog.linting.verilator.useWSL": true,
      
    • linter については、私は主に Vivado を利用しているため、xvlog を指定している

      • Vivado が入っていない場合は iverilog を指定する
      • Quartus Prime などを利用している場合は、そのツールに合わせて指定する
  • svls / svlint

    • 公式ドキュメントを参考に,設定ファイルを設置