Ryuz's tech blog

FPGAなどの技術ブログ

Verilator勉強会

Verilator勉強会で発表させていただきました

基本的には過去記事のこれこれのお話をさせて頂きました。

感想

私の発表はともかく、Verilator の中についてしっかり追いかけておられる @Vengineer氏@msyksphinz氏 のお話はとてもレベルが高く、面白かったです。

結局 Verilog -> C++/SystemC に言語変換するコンパイラなわけだから、AST(abstract syntax tree)作って順に変換していくわけなので、「LLVM にしちゃえばいいんじゃないか?」というのは至極まっとう且つとても夢のある話に思いました(ぜひ実現してほしい!)。

あと少し違う視点で、私としては Verilator についてはイベントキューの部分を含んでいない点で、シミュレータとは少し違うものと思っております。ここをどうあしらうかで私がC++ でやってるような少しシミュレーション用途からははみだした悪だくみも可能ですし、まっとうにシミュレーションするならVengineer氏のご発表のSystemC を持ってきちゃえばいろいろ揃うし、いろいろなことはできそうだし、とにもかくにも大きな可能性を秘めているように思う次第です。

あとは個人的には「そもそも RTL 書くのに Verilog はいい言語なのか?」というのはいろいろ思うところはあるのですが、事実上のデバイス問わない共通言語になってしまっているのはVerilogVHDLだけなのと、実デバイスマッピングや合成制約とかバリバリ埋め込めるのもここだけなのでプリミティブなところ弄りたい層には当面は避けて通れないんだろうなとも思います。むしろその辺弄らないならHLSとかもっと高級な言語でよいわけで、それゆえの Verilog と、 Verilog 故のシミュレーション課題があるわけで、こういったところで Verilator が解決手段を増やしてくれるならとてもありがたいことです。

余談

やっぱりコンパイル遅いですよねー コンパイル速度が欲しい時と、コンパイル後の速度が欲しい時とで使い分けるのが正解に思いました。