Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Verilator v4.210 で、生成されるコードの構造が変わった。

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

はじめに

Verilatorの中を調べるでは、Verilator v4.200/v4.202 で生成されるコードについて調べました。 また、Verilatorの薄い本としても BOOTH にて販売しています。

V4.210 で生成されるコードの構成が変わったようです。

Verilator 4.210 2021-07-07

The generated model class instantiated by the user is now an interface object and no longer the TOP module instance. User code with direct C++ member access to model internals, including verilator public_flat items will likely need to be updated. See the manual for instructions: https://verilator.org/guide/latest/connecting.html#porting-from-pre-4-210 (#3036). [Geza Lore]

ドキュメントの [Model interface changes in version 4.210]

どのように変わったのかを、examples/make_hello_c で確認しました。

examples/make_hello_c にて、make を実行後、obj_dir ディレクトリの中は、

v4.202 の

Vtop      Vtop.mk        Vtop__ALL.d     Vtop__Syms.cpp  Vtop__verFiles.dat  sim_main.o
Vtop.cpp  Vtop__ALL.a    Vtop__ALL.o     Vtop__Syms.h    Vtop_classes.mk     verilated.d
Vtop.h    Vtop__ALL.cpp  Vtop__Slow.cpp  Vtop__ver.d     sim_main.d          verilated.o

に対して、v4.210 では

Vtop      Vtop.mk        Vtop__ALL.d     Vtop__Syms.h        Vtop___024root__Slow.cpp  Vtop_classes.mk  verilated.d
Vtop.cpp  Vtop__ALL.a    Vtop__ALL.o     Vtop___024root.cpp  Vtop__ver.d               sim_main.d       verilated.o     
Vtop.h    Vtop__ALL.cpp  Vtop__Syms.cpp  Vtop___024root.h    Vtop__verFiles.dat        sim_main.o

になります。

v4.202 の

Vtop__Slow.cpp

に対して、

Vtop___024root.cpp
Vtop___024root.h
Vtop___024root__Slow.cpp

になった感じです。

おわりに

v4.210 では、生成されるコードの構造が変わりました。今回は生成されるファイルについてしか見ませんでした。 内容がどのように変わったかは、Verilatorの薄い本、No.4として作成したいと思っています。。。