LoginSignup
1
1

More than 1 year has passed since last update.

Verilog HDLで1コマンドでシミュレーション波形を出せる"verisimu"コマンドを実現する

Last updated at Posted at 2021-06-15

Verilog HDLの勉強をしていて思ったことは、Icarus Verilogを用いてシミュレーションを実行し、結果の波形をGTKWaveで表示するまでに実行するコマンドの数が多く、煩雑であるということです。そこで1コマンドでシミュレーション波形の表示まで行ってくれるverisimuコマンド1を実現させたいと思います。

検証環境

検証環境は以下の通りです。今回はMacで検証していますが、コマンドを少し書き換えるだけで、Linuxでも利用できます。

  • macOS 11.4 Big Sur
  • Icarus Verilog 11.0
  • GTKWave 3.3.107
  • XQuartz 2.8.1

シミュレーション波形を出すまでの行程

Icarus VerilogとGTKWaveを用いてシミュレーション波形を出すまでには以下の行程を順に実行します。

回路本体とテストベンチから実行ファイルを生成

Icarus Verilogに回路本体とテストベンチのソースを渡すと実行ファイル(a.out)が生成されます。

iverilog source.v source_test.v

波形ファイルの生成

GTKWaveで表示するシミュレーション波形はvcd形式のファイルです。vvpコマンドに先程生成した実行ファイルを渡します。

vvp a.out

GTKWaveで波形を表示

最後にGTKWaveで波形を表示させます。Macの場合は以下の様に呼び出します。

open /Application/gtkwave.app source.vcd

Linuxの場合は以下のコマンドを実行します。

gtkwave source.vcd

verisimuコマンドの作成

これで波形が表示出来ます。しかし、これを毎回実行するのは煩雑です。Makefileを書くのも手ですが、ソースが増える毎にMakefileを書くのも面倒です。そこで、bashの自作関数を.bashrcに記載し、コマンドライクに使える様にしたいと思います。verisimuコマンドと呼んでいますが、実体はbashの関数です。

verisimu関数
function verisimu() {
    IFS=' '
    filename=$1
    testname=$2
    iverilog ${filename} ${testname}
    vvp a.out
    list=(${filename//./' '})
    vcdname=${list[0]}
    open /Applications/gtkwave.app ${vcdname}.vcd
}

使い方としては、以下の様に実行します。

verisimu source.v source_test.v

関数内で、第一引数をソースファイル名、第二引数をテストベンチファイル名として変数に代入し、先述のコマンドに順に渡しているだけです。これで、煩雑な行程を実行せずに済みます。

Reference


  1. 実施にはコマンドでは無く、bashで自作関数を作って、それをコマンドライクに利用するという算段です。 

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1