GTKWaveが起動しなくなったのでなんとかした 【macOS Sonoma】 (original) (raw)

久々にVerilogで遊ぼうと思ったらまともに動かなくなっていたのでなんとかしてきました。

前回記事から一気に話題が変わりすぎです。なんだこのブログ。

波形表示ソフト

GTKWave。
名前の通り、GTKベースの波形表示・解析ソフトウェアです。オープンソースのVerilogシミュレータ Icarus Verilogと組み合わせることで、モジュールの入出力波形を視覚化して表示することができます。

GTKWaveはクロスプラットフォームに対応しており、もちろんmacOSもサポートされているのですが……
手元の開発環境を macOS 14 Sonoma にアップグレードしたところ、なにやらよくわからぬエラーとともに起動しなくなってしまいました。

開発側もこの問題を認識しているらしく*1、公式サイトでは以下のように記載があります:

This version is not compatible with current versions of macOS. To run GTKWave on newer macOS versions this community provided Homebrew tap can be used: https://github.com/randomplum/homebrew-gtkwave.

言及されているリポジトリ(randomplum/homebrew-gtkwave)のownerがコメントしているとおり、おそらくこれを実行すれば解決するのでしょう:

brew uninstall gtkwave brew untap randomplum/gtkwave brew install --HEAD randomplum/gtkwave/gtkwave

しかし、せっかくの良い機会なので……

ソースインストール、しよっか

はい。いつもの流れです。やっていきましょう。

まずは既存のGTKWaveをアンインストールします。
brewで入れていた気がするんですがパッケージを検索しても見つからなかったので、普通に /Applications から削除します。

rm -rf /Applications/gtkwave.app

公式サイト*2 を参考に依存パッケージをインストールします。

brew install desktop-file-utils shared-mime-info gobject-introspection gtk-mac-integration meson ninja pkg-config gtk+3

gtk+3 が結構重たいせいか、インストールには5分ほどかかりました。諸々のパッケージ更新も入ったので実際にはもう少しかかっています。

もうあとはいつもの作業です。良い感じのところにcloneして…

git clone https://github.com/gtkwave/gtkwave.git cd gtkwave

ビルドには meson を使用します。存在は知っていましたが使うのは初めてです。CMakeと比較するとどうなんでしょう?

Homebrew版が修正された時に置き換えるのが面倒なので、インストール先は/usr/local/gtkwave とします。

meson setup build --prefix=/usr/local/gtkwave

コケてしまいました。どうやらGTK 4も必要になる模様。

パッケージ名はおそらく gtk+4 ではなく gtk4 です。

% brew search gtk4 ==> Formulae gtk4 gtk+

% brew search gtk+4 ==> Formulae gtk+ gtk4 gtk+3 ✔ gtkmm4 Warning: Formula gtk+4 was renamed to gtk4. Warning: Did you mean to perform a regular expression search?

brew install gtk4

もう一度同じコマンドを叩きます。

問題なく通りました。続いてコンパイルです。

meson compile -C build

内部でninjaが呼び出されます。まあまあな量の警告が出ますが、はて…………?
少なくとも私の環境では問題なく動いています。詳細は検証していません。

最後にインストールです。

sudo meson install -C build

あとは適当にパスを通して完了です。

起動してみる

良い感じのVerilogソースとテストベンチを用意して、生成された .vcd ファイルを食わせます。

gtkwave counter_test.vcd

問題なく起動しました。

おわりに

ここまで読んでいただきありがとうございました。
…ってほど書いてない気もします。まあ定型文ってそういうものです。

Verilogで遊ぶのはすっごく久しぶりです。去年は結構触ってた気がするんですが、今年は就職やらなんやらで忙しかったので……

今は「CPUの創りかた」の TD4 を作っています。またまともに動くようになったら基板に起こしても楽しいかもしれません。

それでは。

$finish();