在 VSCode 上建置 Verilog 開發環境

2024-09-02T22:19:17+08:00 | 4 minutes read | Update at 2024-09-02T22:19:17+08:00

2011eric
在 VSCode 上建置 Verilog 開發環境

本文將介紹如何從頭開始在 VSCode 上設定 Verilog 的開發環境,包含語法標示,定義跳轉,以及其他實用的功能

由於在學校的 CAD 工作站上各種軟體套件總是東缺西缺的,我平時都是在自己的電腦上開發,寫完之後再整包丟上去合成。 VSCode 上 Verilog 的 Extension 們在設定上不是特別親民,這篇文章主要在記錄我當初設定的過程,也希望能幫到一些為了同樣事情煩惱的人類。

筆者的作業系統是 macOS,但以下的設定應該在所有 Unix-Like 的系統上都能正常運作。 在所有設定做完之後預計可以達成以下功能:

  • Syntax Highlighting
  • Linting and Error Detection
  • Auto Completion
  • Go to Definition
  • Find all References
  • Formatting
  • Auto Instantiate Module

Extension 介紹

網路上已經有不少文章都推薦這款擴充元件:

然而,實際使用過後我發現一些麻煩:

  1. 需要設定 ctags
  2. 如果模組寫在別的檔案裡面就找不到 reference 了

雖說第一點只是設定麻煩一點而已,但第二個實在很影響日常使用。 我當初有懷疑過是自己設定錯誤,不過看到留言區也有人遇到同樣的問題,就先當他沒這個功能吧(

我後來轉向另一個擴充元件:

直接按下安裝,應該就可以看到有 Syntax Highlight 出現

對著變數或是模組名稱按下右鍵,選擇 Go to Definition,即可跳轉到定義的位置,就算模組的定義寫在別的檔案也能搜尋的到。

同時,右鍵之後選擇 Find all Reference,可以找到所有參考到該變數的地方。

另一個我很常用的功能是自動生成模組的接線。 打開 Command Palette 之後選擇 Auto Instantiate modules in workspace

基本上有這兩個功能就能滿足大部分程式編寫的需求了,但我們還能更進一步!

接下來我們要安裝兩個東西:Verilator 用來支援 Linting,以及 verible 用來支援 Formatting。

Verilator 的安裝與設定

Verilator 是一款優秀且開源的 SystemVerilog Simulator,近年來也被許多企業採用。 這邊安裝他的目的只是作為 Linter,但想用他跑模擬也是完全沒有問題的。

macOS 安裝 Verilator 可以使用 Homebrew:

brew install verilator

Linux 可以參考官方說明

安裝完成之後確保 verilator 可以正常執行:

❯ verilator
Usage:
        verilator --help
        verilator --version
        verilator --binary -j 0 [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
        verilator --cc [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
        verilator --sc [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
        verilator --lint-only -Wall [source_files.v]...

之後來到 Extension 的設定,設定好 Compiler Type,也可以順便把 Compile On Save 打開。

除了可以使用 Verilator,這款 Extension 也支援 VCS 跟 Verible。

設定完成之後來檢查一下 Linter 有沒有正常運作。 此時假設我們寫出了這樣的程式碼,Linter 就能發現我們有寬度不符的問題:

Verible 的安裝與設定

Verible 是由 chipalliance 開發的 SystemVerilog Parser,在這邊我們用他來 Format Verilog。

如果是 Windows/Linux 使用者,可以選擇安裝這個 Extension,他提供 Prebuilt Binary,安裝完之後可以直接使用。

macOS 上可以使用 Homebrew 安裝,不過我當時安裝時出現一點問題,最後是直接下載 Released Version 來用。

之後來到 Extension 的設定: alt text

如果 Verible 是手動安裝的,請確保他有在 $PATH 內,之後這個選項選擇 None,否則直接選擇對應的版本即可。

之後按下 CMD+SHIFT+P 打開 VSCode 的 Command Palette,選擇 Format Document alt text

或是在 VSCode 中設定 Format on Save 來讓每次儲存的時候自動套用 Formatting。

在 Extension 的設定中,我們可以修改 verible 的參數來控制各種 Formatting 的選項,以下列出幾個常用的:

  • --column_limit 可以控制每行最多的字元數,預設值為 100。
  • --indentation_spaces 可以控制縮排的大小,預設值為 2。

如果你需要暫時停用 Formatting,可以使用以下語法:

// verilog_format: off
... untouched code ...
// verilog_format: on

或是

/* verilog_format: off */
... untouched code ...
/* verilog_format: on */

其他設定

這款 Extension 的缺點在於當檔案非常多或是非常大的時候,會因為需要 Index 的東西太多而卡頓。 以下幾個設定跟 Indexing 有關:

Include & Exclude Indexing

這兩個設定可以控制包含以及排除的檔案,一個常見的用法是把合成出的 Netlist 放在一個叫做 syn 的資料夾裡面,然後排除這個資料夾。 不然 Index 的速度絕對慢到讓你想哭。

Precision

這個選項可以控制 Parser 的 Precision,如果遇到嚴重的效能問題可以試著修改一下這個選項,說不定會有幫助。

Max Line Count

這個選項可以讓 Extension 遇到很大的檔案時切換 Index 的方式來改善效能。

結語

本文介紹了如何逐步在 VSCode 上建立 Verilog 的開發環境。希望這篇文章能夠幫助那些希望在自己電腦上進行 Verilog 開發的讀者。如果您在實作過程中遇到任何問題,或者發現文章中有錯誤或不精確之處,還請不吝指正。

© 2024 Eric2011's Blog

🌱 Powered by Hugo with theme Dream.

About Me

Hi, 這裡是 Eric2011 的部落格

我另一個常用的 ID 是 2011eric

是個肝還不夠硬的電機系學生

Hi

自我介紹看起來太空了

沒錯!這個就是用來占版面的