V-scale の Verilator 環境を復活する

もともと Verilator で動いていたんだから簡単に復活できると思っていました。
でも、Intel-HEX を読むように変えたときに SystemVerilog の機能(sscanf)を使っていて、その部分が Verilator では使えませんでした。Verilator は SystemVerilog に対応しているはずですが、そもそも合成可能な Verilog しか対象にしていないはずなので、テストベンチ用の機能が使えなくても文句は言えません。readmemh とかが使えていたので、変な期待をしちゃっていました。
仕方がないので、C++ のテストベンチから無理やりメモリに書き込みます。メモリの実体を RTL から変換したファイル sim/Vvscale_verilator_top.h の中から探します。↓かな?
VL_SIG(v__DOT__DUT__DOT__hasti_mem__DOT__mem[65536],31,0);
階層は全部崩されちゃうんですかね?C++ のテストベンチからは↓のようにして書き込むことが出来ました。
verilator_top->v__DOT__DUT__DOT__hasti_mem__DOT__mem[addr] = op;
実際はエンディアン変換していてぐちゃぐちゃしてるけど。
そんなわけで無事復活したので、ここ を更新しました。Verilator ってむちゃくちゃ速くて感動しますね。でも、gtkwave が使い慣れていないのであんまり使わないと思うけど。
[追記 Verilator の新しいバージョンでは最上位階層のインスタンス名が変わっていたので対応しました。]

[PR]
トラックバックURL : http://tom01h.exblog.jp/tb/27440370
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2017-01-12 22:00 | PCとか | Trackback | Comments(0)