Vengineerの戯言

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

Xilinx Vitis の中を調べる(その4)

はじめに

Xilinx Vitis の中を調べるのその4。

今回は、

  • C/RTL COSIMULATION => Run Cosimulation

を実行した時の生成ファイルをみていきます。

C/RTL COSIMULATION => Run Cosimulation で生成されたファイル

sim ディレクトリの下には、下記の6個のディレクトリが生成されました。その6つのディレクリの下にもいろいろと生成されています。

  • autowrap
  • report
  • tv/rtl.multi_apuint.autotvout_multi_out.dat
  • verilog => これに関しては次回
  • wrapc
  • wrapc_pc

autowrap

下記のように2つのディレクタの下にいろいろなファイルがあります。systemc ディレクトリには、SystemCを使ったコードではなく、AutoESLのAutoPiloto内で使われているコードのようです。

  • systemc/apatb_multi_apuint.cpp
  • systemc/apatb_multi_apuint.h
  • systemc/apatb_multi_apuint_ir.ll
  • testbench/multi_apuint.cpp_pre.cpp
  • testbench/multi_apuint.cpp_pre.cpp.tb.cpp
  • testbench/tb.status.tcl
  • testbench/testbench_multi_apuint.cpp_pre.cpp
  • testbench/testbench_multi_apuint.cpp_pre.cpp.tb.cpp

report

report ディレクトには、レポートファイルがストアされています。

tv

tv ディレクトリは、cdatafile ディレクトリの下に下記のような5つのファイルが生成されました。また、rtldatafile ディレクトリには1つのファイルが生成されました。

  • cdatafile:

    • c.multi_apuint.autotvin_multi_in0.dat
    • c.multi_apuint.autotvin_multi_in1.dat
    • c.multi_apuint.autotvin_multi_out.dat
    • c.multi_apuint.autotvout_multi_out.dat
    • ref.tcl
  • rtldatafile

    • rtl.multi_apuint.autotvout_multi_out.dat

wrapc と wrapc_pc

wrapc と wrapc_pcディレクトりでは、同じファイルで、wrapc の obj ディレクトリとsc0.log/cosim.tv.exe/cosim.tv.mk 、wrapc_pc ディレクトリのrun_xsim.log/cosim.pc.exe/cosim.pc.mkの違いぐらいのようです。

  • wrapc

    • AESL_pkg.h
    • Makefile.rules
    • apatb_multi_apuint.cpp
    • apatb_multi_apuint.h
    • apatb_multi_apuint_ir.ll
    • cosim.tv.exe
    • cosim.tv.mk
    • multi_apuint.cpp_pre.cpp.tb.cpp
    • obj
    • sc0.log
    • testbench_multi_apuint.cpp_pre.cpp.tb.cpp
  • wrapc_pc

    • AESL_pkg.h
    • Makefile.rules
    • apatb_multi_apuint.cpp
    • apatb_multi_apuint.h
    • apatb_multi_apuint_ir.ll
    • cosim.pc.exe
    • cosim.pc.mk
    • run_xsim.log
    • multi_apuint.cpp_pre.cpp.tb.cpp
    • testbench_multi_apuint.cpp_pre.cpp.tb.cpp

sc0.log ファイルは、cosim.tv.exe の生成時のログファイル。make -f cosim.tv.mk の出力結果と同じです。なお、LD_LIBRARY_PATHに、${VITIS_HOME}/lib/lnx64.o を追加しないと、libsqlite3.28.0.so が無いと怒られます。また、LD_LIBRARY_PATH に、/usr/lib/x85_64-linux-gnu を追加しないと、crt1.o と crti.o が無いと怒られます。

make -f cosim.tv.mk
   Build using "/mnt/usb/XILINX/Vivado/2022.1/Vitis_HLS/2022.1/tps/lnx64/gcc-8.3.0/bin/g++"
   Compiling testbench_multi_apuint.cpp_pre.cpp.tb.cpp
   Compiling apatb_multi_apuint.cpp
   Compiling multi_apuint.cpp_pre.cpp.tb.cpp
   Compiling apatb_multi_apuint_ir.ll
   Generating cosim.tv.exe

このコマンドを実行すると、obj ディレクトリが生成され、ビルド時の中間ファイルが出力されます。

  • apatb_multi_apuint.d
  • apatb_multi_apuint_ir.o
  • testbench_multi_apuint.cpp_pre.cpp.tb.o
  • apatb_multi_apuint.o
  • multi_apuint.cpp_pre.cpp.tb.o

run_xsim.log ファイルは、C/RTL cosimulation の実行ログファイルです。最初に csim.pc.exe ファイルを実行し、その後に、xsim を実行しています。 xsim を実行するためのディレクトリが verilog になります。

おわりに

次回は、sim/verilog ディレクトリをみてみます。