しばらくホームページを見ないうちに開発者が二人も増えて、
強烈にアクティブに開発が進んでいる。
もともと強力なツールなのであるが、バグフィックスのペースが上がり、
VCDへのダンプ機能やらシステム関数やらサポートされるものが増えて便利になってきた。
CygwinへのVerilatorインストール備忘録
VerilogPerl
SystemPerl
のパッケージを先にインストールすること。
このとき、LIB環境変数にVisualC++のものが設定されていると失敗する。
export LIB=
で環境変数をクリアしておく。
次に、私の環境ではVerilogPerlがlibstdc++.aを見つけられなかった。
ln -s /lib/gcc/i686-pc-cygwin/libstdc++.a /lib
として、シンボリックリンクを張る。
Verilatorのパッケージを展開して、
./configure –prefix=/usr/local/verilator
make;make test
で(SystemCは入れていないので)SystemC以外のテストが通ればOK。
make install
でインストールするが、この時にコピー忘れが発生していて、このままでは
動作しないので、
mkdir /usr/local/verilator/include
install -c include/* /usr/local/verilator/include
install -c bin/verilator_* /usr/local/verilator/bin
install -c verilator_* /usr/local/verilator
として、手動でコピーする。
export VERILATOR_ROOT=/usr/local/verilator
とすることで、
verilator –cc test.v
がコンパイルできるようになる。
sfl2vlが変換したVerilogファイルはほぼ問題なく変換できるので、便利である。
次のファイルをtest.sflとして用意する。
module test {
input a;
output f;
f=^a;
}
これをsfl2vlで変換した test.vを用いて、次のテストスクリプトとともに
コンパイルする。
#include <verilated.cpp>
#include “Vtest.h”
Vtest *test;
int main() {
int i;
test = new Vtest;
for(i=0;i<10;i++) {
test->a = i&1;
test->eval();
printf(“a=%x, f=%xn”, test->a, test->f);
}
}
すると、その結果は
$ ./test_main
a=0, f=1
a=1, f=0
a=0, f=1
a=1, f=0
a=0, f=1
a=1, f=0
a=0, f=1
a=1, f=0
a=0, f=1
a=1, f=0
のようになる。
Verilatorを用いているから当たり前のことだが、論理回路を自由にC言語でテストできるようになる。
verilatorのオプションに–traceをつけると、VCDファイルを作成できる。
これで、GTKWAVEの波形を表示可能である。