VSCodeをVerilogHDLのすごいエディタにする
HDLを書きたいけどいいエディタがないょー>< という皆さんへ
VSCodeをVerilogHDLのすごいエディタにする方法をご紹介
VSCodeって?
Visual Studio Code is a code editor redefined and
optimized for building and debugging modern web and cloud applications.
Visual Studio Code is free and
available on your favorite platform - Linux, Mac OSX, and Windows.
つまりVisual StudioとかいうMicrosoft社が販売している(高いのは80万円ぐらい)強すぎるIDEをフリー版にしてマルチプラットフォームにしたもの。
いろんな言語に対応していて(させることもできる)、 有志が作った拡張機能とかをインストールすることで強いエディタに育てられます。
この記事もVSCodeでMarkDownという形式で書いてます。
デフォルトではVerilogHDL用の機能が無いのでカスタマイズしていきます。
俺についてこい!
インストール方法
ここにアクセスしてプラットフォームにあったアーカイブとかインストーラをダウンロードします。
winなら
exeインストーラがここに
zipアーカイブとかLinux、Macなら
下の方にありまする
ダウンロードし終わったらダブルクリックして解凍とかインストールしてください。(ここは説明いらないと思います)
VSCodeがインストールされたら起動しましょう
ようこそVSCodeへ
これがVSCodeです。カッコいい
さっそく拡張機能をインストールしていきます。
最近のバージョンはやり方が簡単になりました。
ここをクリック
こういうのが出たら検索ボックスに「HDL」と入れてみましょう。
そして
上から二番目のVerilogHDLをクリックします。
そしたら
こういうのがでます。
これはVerilogHDLを書くためにシンタックスハイライトやシンプルなスニペット補完をしてくれるナイスな拡張機能です。
作ったのはIWD研の人らしいです。
さっさとインストールします。
これでVSCode側のうんぬんはおしまいです。 VSCodeを再起動すればVerilogHDLの拡張機能が有効になります。
iverilogを用意する。
Win版
せっかくHDLを書いてもiverilogがないとどうにもならんので用意します。
といってもここを見てもらえばわかるのでwindows版は割愛
Linux版のいんすこ
ターミナルに以下のコマンドをシューッ!!!
% sudo apt-get install iverilog
おわり
おわり
これで一通りHDLが書けるようになったので好きなように書いてね
発展編
ここからはさらにスゴいエディタへ進化させたい人向けです。
VSCode上で実行結果を得る
Runner という拡張機能を使うとVSCode上でiverilogの結果を取得できます。
これ
Runner はプログラムやスクリプトを実行してその結果をVSCode上に表示させるスゴいやつです。
インストールしたらverilogを実行するようにbatを書きます
iverilog %1
これを適当なファイル名(例えばrun_iverilog.bat)で保存して好きなフォルダに保存します。
僕はdocuments以下に置きました。ファイルへのパスはしっかりメモっておいてね。
次はVSCodeとRunnerにbatファイルの場所を教えます。
Ctrl+Shift+Pを押し、「setting」とタイプして
上から二番目のユーザ設定を開いてどうぞ
VSCodeでは設定系をJSONという形式で記述します。自分の設定をするときは右側に追記する手法です。
ここに
"runner.languageMap": { "verilog":"C:/Users/USER/Documents/run_iverilog.bat" }
と追記します。
これは verilog タイプのファイルを開いているときに path のbatファイルを実行するようにRunnerに教えています。
また
"runner.extentionMap": { "v":"C:/Users/USER/Documents/run_iverilog.bat" }
とすれば、拡張子が ".v" であるファイルに対してRunnerは path のbatファイルを実行します。
↑の例はどちらでもいいです。
ここまでできたら後はRunnerするだけです。
HDLを書いているエディタ上でCtrl+Alt+Rを押すと...
こんな風に出力がされます。 (文字化けとるがな)
ちなみに僕が実行したbatファイルは
echo test
なので本当はiverilogの出力がここに出ます。
Linuxの場合はbatファイルをshファイルで書くだけですね。
スニペットを追加する
スニペットとは
スニペットってのは補完のことです。
こういうやつです、見たことあるかもね。
これをHDLを記述する際にもガンガン使っていくわけですが、スニペットの定義ファイルにほしいスニペットがないかもしれません。
しかし、スニペットの定義は自分で追加できます。
↑までの手順通りに拡張機能を追加しているなら、スニペットの定義ファイルは、ユーザ以下の
.vscode/extentions/mshr-h.VerilogHDL-0.0.11/snippets/verilog.json
にあります。
拡張子がJsonなので察しているかと思いますが中身はJsonです。
例えば
"monitor":{ "prefix":"mon", "body":[ "$monitor ($time, ,\"$1\"$0);" ], "description":"monitor" }
テストベンチとかでよく見るあれです。これを書いたらどうなるかというと
mon
を入力してTABキーを押すとbody
内に書かれた文字列が展開されます。
以降TABキーを押すたびに$1
→$2
→・・・の位置へとカーソルが進みEnterを押すと$0
の位置へ移動してスニペットが終了します。
以降は簡単な例を書いときます。
//port接続用(同名) "connect":{ "prefix":"con", "body":[ ".$1($1),$0" ], "description":"connect to same name port" }, //port接続用(異名) "connectanothor":{ "prefix":"acon", "body":[ ".$1($2),$0" ], "description":"connect to same name port" }, //timescale "timescale":{ "prefix":"ts", "body":[ "`timescale ${1:1ps}/${2:1ps}$0" ], "description":"timescale" }
いろいろやってみてね!