ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

GTKWaveのインストールについて

スポンサーリンク

前回のChiselネタではIntelliJ IDEA上に構築したChisel-templateのハードウェア実装環境にオリジナルのデザインを実装しテストの実行と波形デバッグを行う方法についてを調査した。

www.tech-diningyo.info

今日はその際に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となっていた。

sourceforge.net

関連ライブラリのインストール

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の導入方法まとめでした。