前回のChiselネタではIntelliJ IDEA上に構築したChisel-templateのハードウェア実装環境にオリジナルのデザインを実装しテストの実行と波形デバッグを行う方法についてを調査した。
今日はその際にVCDの波形データを見るのに使用したGTKWaveをLinuxにインストールする際の手順について備忘のためにまとめておこうと思う。
GTKWaveのインストール
apt
コマンドを使ったインストール
実はこの記事を書き始めたタイミングでふと気づいて調べて知ったのだが、自分の使用しているUbuntu16.04LTSならapt
コマンドでインストール出来ることがわかった。
$ sudo apt search gtkwave ソート中... 完了 全文検索... 完了 gtkwave/xenial 3.3.66-1 amd64 VCD (Value Change Dump) ファイルの波形ビューア
端から無いと思ってたから、調べもしなかった。多少の手間とはいえ調べる癖は身につけたいなぁ。。
ということで、こちらで入れれば一瞬でインストール出来る。
$ sudo apt install gtkwave パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libjudydebian1 以下のパッケージが新たにインストールされます: gtkwave libjudydebian1 アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 2,418 kB のアーカイブを取得する必要があります。 この操作後に追加で 4,772 kB のディスク容量が消費されます。 続行しますか? [Y/n] 取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 libjudydebian1 amd64 1.0.5-5 [94.6 kB] 取得:2 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 gtkwave amd64 3.3.66-1 [2,324 kB] 2,418 kB を 0秒 で取得しました (8,560 kB/s) 以前に未選択のパッケージ libjudydebian1 を選択しています。 (データベースを読み込んでいます ... 現在 331205 個のファイルとディレクトリがインストールされています。) .../libjudydebian1_1.0.5-5_amd64.deb を展開する準備をしています ... libjudydebian1 (1.0.5-5) を展開しています... 以前に未選択のパッケージ gtkwave を選択しています。 .../gtkwave_3.3.66-1_amd64.deb を展開する準備をしています ... gtkwave (3.3.66-1) を展開しています... desktop-file-utils (0.22-1ubuntu5.2) のトリガを処理しています ... bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています ... Rebuilding /usr/share/applications/bamf-2.index... gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています ... mime-support (3.59ubuntu1) のトリガを処理しています ... gnome-icon-theme (3.12.0-1ubuntu3) のトリガを処理しています ... shared-mime-info (1.5-2ubuntu0.2) のトリガを処理しています ... man-db (2.7.5-1) のトリガを処理しています ... libjudydebian1 (1.0.5-5) を設定しています ... gtkwave (3.3.66-1) を設定しています ... libc-bin (2.23-0ubuntu10) のトリガを処理しています ... /sbin/ldconfig.real: /usr/local/lib/libleveldb.so.1 is not a symbolic link
最初に書いたapt search
の結果を見るとわかる通り、現時点のUbuntu16.04LTSでインストールされるGTKWaveのバージョンは3.3.66-1になるようだ。
ソースコードからのインストール
これだけじゃなんだかなぁ・・・という感じなので、一応ソースコードからのインストールについても記載しておく。apt
のインストールの部分で気づいた方もいらっしゃるかもだが、最初は調べもせずにソースコードからインストールした(笑)
最新版を使いたい!!という方はソースコードから入れると良いだろう。因みに記事を書いている際(2019/01/07)の最新版は3.3.98となっていた。
関連ライブラリのインストール
GTKと付いていることからもわかる通り、Tcl/Tkの環境が必要となる。ソースコードからのビルドの際にはインクルードファイル等ソースコードが必要になるので、*-devのパッケージをインストールしておく。
$ sudo apt install tcl-dev tk-dev
ビルドとインストール
ダウンロードしたデータを解凍した後、autogen.sh
を実行してconfigure
を実行してmake
/make install
でお終い。
$ tar zxf gtkwave-3.3.98.tar.gz $ cd gtkwave-gtk3-3.3.98 $ ./autogen.sh $ ./configure --prefix=<インストール先> $ make $ sudo make install
GTKWaveの実行
適当にパスを通してgtkwave
でGTKWaveが起動する。
$ gtkwave
ヘルプはこんな感じ。
$ gtkwave --help Usage: gtkwave [OPTION]... [DUMPFILE] [SAVEFILE] [RCFILE] -n, --nocli=DIRPATH use file requester for dumpfile name -f, --dump=FILE specify dumpfile name -F, --fastload generate/use VCD recoder fastload files -o, --optimize optimize VCD to FST -a, --save=FILE specify savefile name -A, --autosavename assume savefile is suffix modified dumpfile name -r, --rcfile=FILE specify override .rcfile name -d, --defaultskip if missing .rcfile, do not use useful defaults -D, --dualid=WHICH specify multisession identifier -l, --logfile=FILE specify simulation logfile name for time values -s, --start=TIME specify start time for LXT2/VZT block skip -e, --end=TIME specify end time for LXT2/VZT block skip -t, --stems=FILE specify stems file for source code annotation -c, --cpu=NUMCPUS specify number of CPUs for parallelizable ops -N, --nowm disable window manager for most windows -M, --nomenus do not render menubar (for making applets) -S, --script=FILE specify Tcl command script file for execution -T, --tcl_init=FILE specify Tcl command script file to be loaded on startup -W, --wish enable Tcl command line on stdio -R, --repscript=FILE specify timer-driven Tcl command script file -P, --repperiod=VALUE specify repscript period in msec (default: 500) -X, --xid=XID specify XID of window for GtkPlug to connect to -2, --chdir=DIR specify new current working directory -4, --rcvar specify single rc variable values individually -5, --sstexclude specify sst exclusion filter filename -6, --dark set gtk-application-prefer-dark-theme = TRUE -I, --interactive interactive VCD mode (filename is shared mem ID) -C, --comphier use compressed hierarchy names (slower) -g, --giga use gigabyte mempacking when recoding (slower) -L, --legacy use legacy VCD mode rather than the VCD recoder -v, --vcd use stdin as a VCD dumpfile -O, --output=FILE specify filename for stdout/stderr redirect -V, --version display version banner then exit -h, --help display this help then exit -x, --exit exit after loading trace (for loader benchmarks) VCD files and save files may be compressed with zip or gzip. GHW files may be compressed with gzip or bzip2. Other formats must remain uncompressed due to their non-linear access. Note that DUMPFILE is optional if the --dump or --nocli options are specified. SAVEFILE and RCFILE are always optional. Report bugs to <bybell@rocketmail.com>.
引数無しでgtkwave
を実行した場合は、起動したGUI画面に開きたいVCD波形ファイルをドラッグ・アンド・ドロップするとそのファイルが開く。
上記のヘルプにもあるが、CUIから起動する際に引数にVCDファイルのパスを指定すると、起動時にそのVCDファイルが読み込まれる。
前回の例だと、以下の感じ。
$ gtkwave MyReg.vcd
その他にもファイラーから該当のディレクトリを開き、VCDファイルをダブルクリックでも開けた。これが楽だな。
ということで、今回は備忘目的のGTKWaveの導入方法まとめでした。