Vengineerの妄想

人生を妄想しています。

Verilatorの中を調べる(その1)

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

みんな?は、Verilatorの何を知りたいのか?

いろいろと調べたものをどうするか?ということで、下記のようなツイートをして、アンケートを取りました。投票数は、109票。それなりの需要はありそうですね。

とはいっても、Verilatorは Verilog HDL/SystemVerilog のシミュレータです。ただし、以下のような制約があります。

  • #xxx のような遅延は無視される
  • @(posged clk); のような、イベント待ちができない
  • Verilog HDL/SystemVerilog コードはデザイン側のみで、テストベンチ側には使えない
  • テストベンチ側は、C++ あるいは SystemC++ で記述する必要がある

最初の 遅延と、2番目の イベント待ちができないということは、SystemVerilog の DPI-C の export task で BFM(Bus Functional Model)でのサイクルを発生するような記述ができないということです。これ、結構辛いです。。。今まで、SystemVerilog DPI-C の export task を使って、Software Driven Verifiaction やりましょう!とか、言っていたので、それができないのです。

Verilator の中を調べる

では、どんなことをすれば、Software Driven Verification ができるようになるのか? そのために、Verilator の中を調べる必要があります。
Verilator は、Verilog HDL/SystemVerilog のコードを C++コードに変換します。その生成された C++コードの中を見ることで何かわかるかな?と思い、
example にあるコードを 使って、Verilator の 中を調べることにしました。

おわりに

明日から、Verilator の中を調べた結果をブログにアップすることにします。
どのまで深く書くかは、わかりませんが、

こうご期待を。。。