VHDLの環境構築をサイトの通りにやっていて、gtkwaveのコマンドラインからの実行で詰まったのでメモ。
環境
m1 macbook air(2020)
brewでgtkwaveをインストール
# エラー内容
/opt/homebrew/bin/gtkwave: line 122: test: too many arguments
/opt/homebrew/bin/gtkwave: line 149: test: ==: unary operator expected
find: /share/locale: No such file or directory
/opt/homebrew/bin/gtkwave: line 215: /opt/homebrew/bin/../../../Contents/Resources/bin/square.vcd: No such file or directory
/opt/homebrew/bin/gtkwave: line 215: exec: /opt/homebrew/bin/../../../Contents/Resources/bin/square.vcd: cannot execute: No such file or directory
対応
perlでSwitchというやつを入れる。macにperl(とそのライブラリマネージャ的なやつ?のcpan)は元から入ってる。
cpan install Switch
perl -V:'installsitelib'
んで、どこかにインストールされたSwitch.pmてやつを、/Library/Perl/5.30/に移す。
自分の環境では~/perl5/lib/perl5/にあったので、下のコマンドを実行。
sudo cp ~/perl5/lib/perl5/Switch.pm /Library/Perl/5.30/
このままだとまだコマンドにgtkwaveと打ち込んでも動作しない。
各々使っているシェルの設定に次のPATHを追加してください。
~/.zshrc
export PATH= /Applications/gtkwave.app/Contents/Resources/bin/:$PATH
動作
gtkwave sample.vcd
とかで動作したよ。
最後に、適当に作ったスクリプト貼っときます。
vhdl_build.sh
# /bin/sh
ghdl -a --ieee=synopsys $1
VHD=$1
VCD=${VHD%.*}.vcd
ghdl -r --ieee=synopsys ${VCD%.*} --vcd=$VCD
gtkwave $VCD
rm $VCD
参考(ほぼこの記事のまんまです)