FC2カウンター FPGAの部屋 Vivado シミュレータでDPI-C を使用してZynq VIPを使う4(Export Simulation)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado シミュレータでDPI-C を使用してZynq VIPを使う4(Export Simulation)

昨日、「SystemVerilogによるテストベンチ実践会(2017夏)」で、Venginner さんに、Export Simulation のことを聞いたので、自分でもやってみた。

今回は、下の3つの「Vivado シミュレータでDPI-C を使用してZynq VIPを使う」シリーズをExport Simulation を使用してやってみよう。そうすると、もう一度シミュレーションを行っても、設定が消えてしまうことが無いというメリットがある。
Vivado シミュレータでDPI-C を使用してZynq VIPを使う1
Vivado シミュレータでDPI-C を使用してZynq VIPを使う2
Vivado シミュレータでDPI-C を使用してZynq VIPを使う3

さて、やってみましょう。環境は、VirtualBox 上のUbuntu 16.04 でVivado 2017.2 を使用している。
まずは、Vivado 2017.2 で Zynq Base サンプル・プロジェクトを開いて、FileメニューからExport -> Export Simulation... を選択する。
DPI_examples_41_170826.png

Export Simulation Files ダイアログが表示される。
Target sumulator をVivado Simulator に、Export directory を指定して、Copy source files to export directory にチェックを付ける。
DPI_examples_40_170826.png

~/Vivado/Examples/zynq_ex_172/xsim ができていた。
DPI_examples_42_170826.png

Vivado シミュレータでDPI-C を使用してZynq VIPを使う1」の zynq_dpi.c をディレクトリにコピー&ペーストする。
DPI_examples_43_170826.png

zynq_dpi.c を起動したことがわかるように、2番目のWrite に 1000 のWait を入れた。
DPI_examples_44_170826.png

~/Vivado/Examples/zynq_ex_172/xsim/srcs ディレクトリにzynq_tb.sv をコピー&ペーストした。
DPI_examples_45_170826.png

~/Vivado/Examples/zynq_ex_172/xsim ディレクトリに戻って、tb.sh を開いてDPI-C を実行できるように書き換えよう。
まずは、compile にzynq_dpi.c をコンパイルするコマンドを追加した。

$xv_path/bin/xsc zynq_dpi.c 2>&1 | tee c_compile.log


elaborate に -sv_lib dpi オプションを追加した。
simulate に -g オプションを追加した。
DPI_examples_46_170826.png

次に cmd.tcl の最後の quit を削除した。これを削除しないとGUI が自動終了してしまう。(ひでみさん、ありがとうございました)
DPI_examples_47_170826.png

vlog.prj を編集して、verilog を sv に、zynq_tb.v を zynq_tb.sv に変更した。
DPI_examples_48_170826.png

これで変更は終了。
./tb.sh を実行した。
DPI_examples_49_170826.png

コンパイル、エラボレート、シミュレータが起動した。
DPI_examples_50_170827.png
「AXI VIP Test PASSED」になっている。成功している。

AXI4 インターフェイスの波形を追加しよう。
zynq_sys -> base_zynq_i を選択して、右クリックし、右クリックメニューから、Add Wave Window で波形を全部追加した。
DPI_examples_51_170827.png

Tcl Console に
restart
run all

を行って、今挿入した信号に波形を表示しようとした。
DPI_examples_52_170827.png

ところが、それらのコマンドを実行すると、FAILED してしまう。
DPI_examples_53_170827.png

波形ウインドウでSave Waveform Configuration ボタンをクリックして、波形をセーブしよう。
DPI_examples_54_170827.png

Save Waveform ダイアログが表示されるので、tb.wcfg を確認して、Save ボタンをクリックする。
DPI_examples_55_170827.png

Waveform Configuraiton File ダイアログで、Yes ボタンをクリックする。
DPI_examples_56_170827.png

これで、波形ウインドウの信号を tb.wcfg ファイルにセーブできたので、もう一度、
./tb.sh
を実行する。
今度はきちんと波形が表示できた。
DPI_examples_57_170827.png

タイムスケールが 1ns で #1000 なので、1000 ns Wait しているのが分かる。
しかし、xsim でリスタートすると、シミュレーションがフェイルするのはなぜだろうか?

とりあえず、これでシミュレーション環境が独自に構築できた。ソースもHDL ファイルになっているので、使いやすい。
  1. 2017年08月27日 07:55 |
  2. シミュレーション
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3896-67e2ec85
この記事にトラックバックする(FC2ブログユーザー)