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();