Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2804

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

$
0
0
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 Mac でコマンドラインからアプリケーション起動 bashの変数をsplitして配列を作る方法 実施にはコマンドでは無く、bashで自作関数を作って、それをコマンドライクに利用するという算段です。 ↩

Viewing all articles
Browse latest Browse all 2804

Trending Articles