Vivado Simulatorのコマンドライン実行

FPGA

Vivado Simulatorをコマンドラインから実行する場合、xvlog,xelab,xsimを続けて実行します。

#!/bin/sh

# RTL directory
RTL_DIR="../rtl"
INC_DIR="../include"

sim_file=$1
echo "Test Scenario=" $sim_file

# compile
xvlog \
    -sv \
    -i ${INC_DIR}/ \
    --sourcelibdir ${RTL_DIR} \
    --sourcelibext .v \
    ${sim_file}

# elaboration
xelab \
  --debug all \
  --notimingchecks \
   test_module

# simulation
xsim test_module <<EOF
run all

EOF

シミュレーション実行までのプロセスは、ModelSimやNCSimと似ています。NCSimやModelsimと比べると、コンパイル時のオプションに違いがあります。

Vivado SimulatorModelsim
サーチディレクトリ指定–sourcelibdiry
インクルードディレクトリ指定-i+incdir+
拡張子指定–sourcelibext+libext+

SystemVerilogサポート

ユーザーガイド(v2017.1)によると、Vivado SimulatorはSystemVerilogをサポートしています。ncverilogで実行したことがあるSystemVerilogのrandomizationコードをVivado Simulatorで試してみました。

class data_gen;
   rand reg [7:0] data;
endclass

module test_module;
data_gen dg;
initial begin
  assert(dg.randomize());
  :
endmodule


xsim実行結果

# xsim {work.test_module} -autoloadwcfg
Vivado Simulator 2017.1
Time resolution is 1 ps
FATAL_ERROR: Vivado Simulator kernel has discovered an exceptional condition from which it cannot recover. Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http://www.xilinx.com/support.

多分ダメだろうなぁと思っていたのですが、ダメでした。その他、clocking blockとmodportを使ったprogramもダメなようです。SystemVerilogのコード自体に問題があるのかも知れませんが、少なくともncverilogで実行できたSystemVerilogのコードをそのまま実行することはできませんでした。だた、ユーザーガイドのサポート状況を読むと、programやrandomizationもほとんどの機能が”Supported”となっているので、SystemVerilogの記述を工夫すれば動くのかも知れまません。

タイトルとURLをコピーしました