💻

GHDLとgtkwaveを用いたVHDL開発環境をM1 Macで構築してみた

2021/10/22に公開約3,500字

この記事では、VHDL開発で重宝するらしい

  • 波形描画ツール gtkwave
  • VHDLコンパイラ GHDL

をM1 Macにインストールしてかんたんな波形を観察するところまでをやっていこうと思います。
(とは言ってもbrewでインストールしてコンパイルするだけですが...)

参考記事

以下の記事を参考にしました。
記事ではファイルをダウンロードしてきていましたが、今回はHomebrewを使ってインストールしていきます。

https://qiita.com/yamadasuzaku/items/69509547e605a2115c25
https://lv4.hateblo.jp/entry/2015/01/26/090928

brewコマンドが使えるか確認

ターミナルを開き

ターミナル
brew --version

と打ち込んで

ターミナル
Homebrew 3.2.17

とバージョンが表示されていればOKです。(ご利用のMacによってバージョンは異なります。)

もしNotFound的なメッセージが出たら以下の記事などを参考にHomebrewをインストールし、再度brew --versionでインストールされているか確認してみてください。

https://original-game.com/homebrew/

GHDLとgtkwaveのインストール

ではパッケージのインストールです。
ターミナルに

ターミナル
brew install ghdl

と打ち込んでghdl was successfully installed!と表示されればOKです。
gtkwaveについても同様に

ターミナル
brew install gtkwave

とコマンドを打ち込み、インストールしてください。

GHDLの動作確認チェック

今回はシンプルに「矩形波を作る」処理を実装してみます。

まずはお好みのエディタ(VScodeでもAtomでもさくらエディタでもなんでもOK)sample.vhdlというファイルを作成して以下のコードを記述します。

sample.vhdl
library IEEE;
use IEEE.std_logic_1164.all;

entity sample is end sample;

architecture rtl of sample is signal a :std_logic;

begin
    process begin
        a<='1';
        wait for 3 ns;
        a<='0';
        wait for 3 ns;
        a<='1';
        wait for 3 ns;
        a<='0';
        wait for 3 ns;
        wait;
    end process;

end rtl;

記述が終わったらファイルを保存します。

保存が完了したら、実際に先ほどインストールしたghdlコマンドを実行してみます。
ターミナルでsample.vhdlの階層まで移動し、

ターミナル
ghdl -a --ieee=synopsys sample.vhdl
ghdl -r --ieee=synopsys sample --vcd=sample.vcd

の4つのコマンドを実行してみます。

各コマンドの意味を理解しているわけではないのですが、参考記事によると

基本的なghdlのコンパイル方法を整理すると,

  • a は,ファイル名を指定してコンパイルを実行する.
  • e は,テストベンチのエンティティである adder_tb を指定する.
  • r も同様にテストベンチのエンティティを指定する.オプションで --vcd とすると,>gtkwave でみられる波形データを出力してくる.
    となる.

「GHDLとgtkwaveを用いたVHDL開発環境をMacとWindows10で構築してみた」より引用

のようなオプションがあるようです。

gtkwaveで波形を見てみる

finderでsample.vhdlを作成した場所を見てみると自分で作成したファイル以外にも以下のように様々なファイルが出来上がっていると思います。
finder

この中からファイル名がsample.vcdをダブルクリックするとgtkwaveが起動します。

gtkwaveではおそらく下のような画面になると思うので、
gtkwaveの画面

  1. 画面左側の「sample」(作成したテストベンチ)を右クリック
  2. Recurse import
  3. insert
    と進んでいくと、右側の黒い画面に波形っぽいものが出てくると思います。

作成した波形がフィットしていない場合には画面上部の虫眼鏡のボタンをクリックしてちょうどいい大きさまで拡大or縮小します。
以下のような「Zoom fit」という虫眼鏡マークのボタンがあるので、これを使うと便利そうです。(いい感じの拡大or縮小をgtkwave側が行ってくれます)
gtkwaveの画面

すると
gtkwaveの画面

こんな感じにsample.vhdlで作成した波形(矩形波)が表示できました!
(ありがたいことにM1チップゆえのエラーみたいなのも出ませんでした)

今回は矩形波を作るだけというシンプルな感じでしたが、ここを書き換えてあげることで様々な実装ができそうです。
VHDLに関してはまだ何も分かっていないので、少しずつ試しながら勉強していきます!

最後までお読みいただきありがとうございました!

Discussion

ログインするとコメントできます