はじめに
昨日は、xelab コマンドで エラボレーションで生成するファイルをみてみました。今日は、xelab コマンドでシミュレーションを実行していきます。
xelab コマンドでシミュレーションを実行
xelab コマンドに -R オプションを指定すると、エラボレーション後、シミュレーションを実行をします。
xelab top -R Vivado Simulator v2021.2 Copyright 1986-1999, 2001-2021 Xilinx, Inc. All Rights Reserved. Running: /mnt/usb/XILINX/Vivado/2021.2/bin/unwrapped/lnx64.o/xelab top -R 途中略
シミュレーションを実行が始まると下記のメッセージが表示されました。最初に、source xsim.dir/work.top/xsim_script.tcl にて、デフォルトのtclファイルを読み込んでいます。エラボレーションまででは、この tcl ファイルはありませんでした。
****** xsim v2021.2 (64-bit) **** SW Build 3367213 on Tue Oct 19 02:47:39 MDT 2021 **** IP Build 3369179 on Thu Oct 21 08:25:16 MDT 2021 ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved. source xsim.dir/work.top/xsim_script.tcl
xsim.dir/work.top/xsim_script.tclの中をみてみましょう。
xsim コマンドを使って、シミュレーションしているようです。{work.top} は、シミュレーションするときの Snapshot name (トップ階層)。-autoloadwcfg は、xsim の内部コンフィギュレーションをデフォルトとするっぽい。-runall で終了状態なるまでシミュレーションする。
cat xsim.dir/work.top/xsim_script.tcl xsim {work.top} -autoloadwcfg -runall
Time resolution は、1ps を表示後、run -all でシミュレーションを開始します。$finish システムタスクにて、シミュレーションが終了します。$finish システムタスクの引数として、2 を指定しているので、$finish 後の後のメッセージが表示されます。その後、exit コマンドにて終了します。
# xsim {work.top} -autoloadwcfg -runall Time resolution is 1 ps run -all $finish called at time : 10 us : File "/XXX/top.sv" Line 19 Memory in use : 107472 KB (peak memory: 173008 KB) CPU usage : 50 ms exit INFO: [Common 17-206] Exiting xsim at Sun Jun 12 13:40:57 2022...
$finish システムタスクに引数を何もしていしないと、下記のようにメッセージが出ません。
$finish called at time : 10 us : File "/XXX/top.sv" Line 19 exit INFO: [Common 17-206] Exiting xsim at Sun Jun 12 13:43:20 2022...
xelab -R コマンドにて生成されたファイル
- xsimSettings.ini
- xsim_script.tcl
- xsimcrash.log
- xsimkernel.log
xsimSettings.ini と xsim_script.tcl と xsimkernel.log は、ASCIIファイル。xsimcrash.log は空ファイル。
file xsim.dir/work.top/* xsim.dir/work.top/Compile_Options.txt: ASCII text xsim.dir/work.top/xsim.dbg: data xsim.dir/work.top/xsim.mem: data xsim.dir/work.top/xsim.reloc: data xsim.dir/work.top/xsim.rtti: data xsim.dir/work.top/xsim.svtype: data xsim.dir/work.top/xsim.type: data xsim.dir/work.top/xsim.xdbg: data xsim.dir/work.top/xsimSettings.ini: ASCII text xsim.dir/work.top/xsim_script.tcl: ASCII text xsim.dir/work.top/xsimcrash.log: empty xsim.dir/work.top/xsimk: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=39b9a56e92cbcac6b19e8792a99f0ba54104aa79, for GNU/Linux 3.2.0, not stripped xsim.dir/work.top/xsimkernel.log: ASCII text
xsim_script.tcl は既に説明しました。xsimSettings.ini の中は次ようになっています。TIME_UNIT=ns になっています。top.sv の中で timeunit 1ns; としているからでしょうね。
cat xsim.dir/work.top/xsimSettings.ini [General] ARRAY_DISPLAY_LIMIT=512 RADIX=hex TIME_UNIT=ns TRACE_LIMIT=2147483647 VHDL_ENTITY_SCOPE_FILTER=true VHDL_PACKAGE_SCOPE_FILTER=false VHDL_BLOCK_SCOPE_FILTER=true VHDL_PROCESS_SCOPE_FILTER=false VHDL_PROCEDURE_SCOPE_FILTER=false VERILOG_MODULE_SCOPE_FILTER=true VERILOG_PACKAGE_SCOPE_FILTER=false VERILOG_BLOCK_SCOPE_FILTER=false VERILOG_TASK_SCOPE_FILTER=false VERILOG_PROCESS_SCOPE_FILTER=false INPUT_OBJECT_FILTER=true OUTPUT_OBJECT_FILTER=true INOUT_OBJECT_FILTER=true INTERNAL_OBJECT_FILTER=true CONSTANT_OBJECT_FILTER=true VARIABLE_OBJECT_FILTER=true INPUT_PROTOINST_FILTER=true OUTPUT_PROTOINST_FILTER=true INOUT_PROTOINST_FILTER=true INTERNAL_PROTOINST_FILTER=true CONSTANT_PROTOINST_FILTER=true VARIABLE_PROTOINST_FILTER=true SCOPE_NAME_COLUMN_WIDTH=0 SCOPE_DESIGN_UNIT_COLUMN_WIDTH=0 SCOPE_BLOCK_TYPE_COLUMN_WIDTH=0 OBJECT_NAME_COLUMN_WIDTH=0 OBJECT_VALUE_COLUMN_WIDTH=0 OBJECT_DATA_TYPE_COLUMN_WIDTH=0 PROCESS_NAME_COLUMN_WIDTH=0 PROCESS_TYPE_COLUMN_WIDTH=0 FRAME_INDEX_COLUMN_WIDTH=0 FRAME_NAME_COLUMN_WIDTH=0 FRAME_FILE_NAME_COLUMN_WIDTH=0 FRAME_LINE_NUM_COLUMN_WIDTH=0 LOCAL_NAME_COLUMN_WIDTH=0 LOCAL_VALUE_COLUMN_WIDTH=0 LOCAL_DATA_TYPE_COLUMN_WIDTH=0 PROTO_NAME_COLUMN_WIDTH=0 PROTO_VALUE_COLUMN_WIDTH=0 INPUT_LOCAL_FILTER=1 OUTPUT_LOCAL_FILTER=1 INOUT_LOCAL_FILTER=1 INTERNAL_LOCAL_FILTER=1 CONSTANT_LOCAL_FILTER=1 VARIABLE_LOCAL_FILTER=1
xsimkernel.log の中を覗いてみると、次のようになっています。シミュレーション時のログファイルっぽいです。メモリの使用量とCPUの実行時間が表示されています。
cat xsim.dir/work.top/xsimkernel.log Running: xsim.dir/work.top/xsimk -simmode gui -wdb work.top.wdb -simrunnum 0 -socket 54555 Design successfully loaded Design Loading Memory Usage: 22396 KB (Peak: 22396 KB) Design Loading CPU Usage: 50 ms Simulation completed Simulation Memory Usage: 96128 KB (Peak: 161664 KB) Simulation CPU Usage: 50 ms
xsim.dir/work.top/xsimk にパラメータを指定しています。このコマンドを実行してみました。エラーになるので、まだ、何か?必要そうです。
LD_LIBRARY_PATH=/mnt/usb/XILINX/Vivado/2021.2/lib/lnx64.o xsim.dir/work.top/xsimk -simmode gui -wdb work.top.wdb -simrunnum 0 -socket 54555 FATAL_ERROR: PrivateChannel: Error connecting to server socket
波形ダンプ
xelab コマンドのデフォルトでは、波形ダンプはしません。--debug wave を追加することで波形ダンプを行います。
xelab top --debug wave -R
work.top.wdb
が生成されます。この波形データは、xsim コマンドにて表示できます。
xsim -gui work.top.wdb ****** xsim v2021.2 (64-bit) **** SW Build 3367213 on Tue Oct 19 02:47:39 MDT 2021 **** IP Build 3369179 on Thu Oct 21 08:25:16 MDT 2021 ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved. start_gui
おわりに
今日は、xelab コマンドでシミュレーションの実行までをみてみました。