@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
TVM の VTA。TVM から分かれたのよね。
VTA の対応 Hardware としては、ここ にあるんですが、
chisel は、Verilog HDL に変換後、Verilator にてシミュレーションできるようになっていますね。
dpi は、tsim_device.cc の Cモデルですね。
VTADPIInit関数にて、
- VTAContextHandle handle
- VTASimDPIFunc sim_dpi
- VTAHostDPIFunc host_dpi
- VTAMemDPIFunc mem_dpi
を設定して、
- VTASimDPI
- VTAHostDPI
- VTAMemDPI
を使って実行するようです。
VTADPISim で Verilator にてシミュレーションするって感じですね。
Cインターフェースを使っていて、TRACEでは、Vcd だけでなく、Fst もサポート。
これらを使っているのが、src/dpi/module.cc の ここ。
void Init(const std::string& name) {
Load(name);
VTADPIInitFunc finit = reinterpret_cast<VTADPIInitFunc>(
GetSymbol("VTADPIInit"));
CHECK(finit != nullptr);
finit(this, VTASimDPI, VTAHostDPI, VTAMemDPI);
ftsim_ = reinterpret_cast<VTADPISimFunc>(GetSymbol("VTADPISim"));
CHECK(ftsim_ != nullptr);
}
よく考えられていると思う。