2020年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

リンク

フォト

最近のトラックバック

ウェブページ

無料ブログはココログ

« LINUX版 ModelSim で DPI-C を試してみるときの注意点 #FPGA #SystemVerilog | トップページ | ハムフェアー(アマチュア無線のフェアー)に行ってきました »

2017年8月27日 (日)

Vivado 2017.2 で DPI-C Import,Exportを試してみた #FPGA #SystemVerilog

■ はじめに

SystemVerilogによるテストベンチ実践会(2017夏) で「VivadoではDPI-Cのtask exportをサポートしてない」のでできないよ。
とおっしゃられていた。

先日、予習がてらDPI-Cさわってたら export って書いて動いたような。。。
ということで手順をまとめてみる。
※勘違いだったらごめんなさい。指摘いただければ即訂正する所存です。

■ 環境、参考書

・LINUX CentOS 7.3
・Core I5-3320M Memory 16GB
・XilinX Vivado 2017.2

・SystemVerilog設計スタートアップ 第3版 CQ出版社

■ ソースコード

SystemVerilog設計スタートアップのP229 第11章 リスト11-3 (a)SysteVerilogコード(dpi_test3.sv)、(b)Cコード(CFunc3.c)をエディタで入力しソースファイルを準備した。

※このブログに引用として記載してよいか判断つかなかったのでここには記載しない。
※許可頂けたら記載しようと思う。

1か所、CFunc3.cファイルに変更を加える
#include "dpiheader.h" を #include "stdio.h" に追加する。

もともとModelSimであれこれ試していてその流れでdpiheader.hを入れたソースにしていた。

■ パス設定

Vivaloのパスを通しておく

source ./vivado.source
を実行

vivado.sourceの中身
PATH=/opt/Xilinx/Vivado/2017.2/bin:$PATH

■ 実行スクリプト

run.sh というスクリプトを作成
中身は

date
echo "#### rm ####"
rm *.log
rm *.jou
rm *.pb
rm *.h
rm -rf xsim.dir
rm -rf .Xil
sleep 1
echo "##### xvlog #####"
xvlog -svlog dpi_test3.sv
sleep 1
echo "##### elab header #####"
xelab -dpiheader dpiheader.h dpi_test3
sleep 1
echo "##### xsc #####"
xsc CFunc3.c
echo "##### elab top #####"
xelab -svlog dpi_test3.sv -sv_lib dpi
sleep 1
echo "##### xsim #####"
xsim -R work.dpi_test3
date

■ 実行

chmod 777 run.sh

してから

./run.sh

を実行

■ 実行結果

2017年  8月 27日 日曜日 22:25:03 JST
#### rm ####
##### xvlog #####
INFO: [VRFC 10-2263] Analyzing SystemVerilog file "/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv" into library work
INFO: [VRFC 10-311] analyzing module dpi_test3
WARNING: [VRFC 10-2167] variable c_value must explicitly be declared as automatic or static [/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv:13]
WARNING: [VRFC 10-2167] variable sv_value must explicitly be declared as automatic or static [/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv:14]
##### elab header #####
Vivado Simulator 2017.2
Copyright 1986-1999, 2001-2016 Xilinx, Inc. All Rights Reserved.
Running: /opt/Xilinx/Vivado/2017.2/bin/unwrapped/lnx64.o/xelab -dpiheader dpiheader.h dpi_test3
Multi-threading is on. Using 2 slave threads.
Starting static elaboration
Completed static elaboration
Starting simulation data flow analysis
Exiting after writing out the dpi header file dpiheader.h.
##### xsc #####
Multi-threading is on. Using 2 slave threads.
Running compilation flow
Done compilation
Done linking: "/home/shibatchii/FPGA/DPI3_X/xsim.dir/xsc/dpi.so"
##### elab top #####
Vivado Simulator 2017.2
Copyright 1986-1999, 2001-2016 Xilinx, Inc. All Rights Reserved.
Running: /opt/Xilinx/Vivado/2017.2/bin/unwrapped/lnx64.o/xelab -svlog dpi_test3.sv -sv_lib dpi
Multi-threading is on. Using 2 slave threads.
INFO: [VRFC 10-2263] Analyzing SystemVerilog file "/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv" into library work
INFO: [VRFC 10-311] analyzing module dpi_test3
WARNING: [VRFC 10-2167] variable c_value must explicitly be declared as automatic or static [/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv:13]
WARNING: [VRFC 10-2167] variable sv_value must explicitly be declared as automatic or static [/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv:14]
Starting static elaboration
Completed static elaboration
Starting simulation data flow analysis
Completed simulation data flow analysis
Time Resolution for simulation is 1ps
Compiling module work.dpi_test3
Built simulation snapshot work.dpi_test3

****** Webtalk v2017.2 (64-bit)
  **** SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017
  **** IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017
    ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

source /home/shibatchii/FPGA/DPI3_X/xsim.dir/work.dpi_test3/webtalk/xsim_webtalk.tcl -notrace
INFO: [Common 17-186] '/home/shibatchii/FPGA/DPI3_X/xsim.dir/work.dpi_test3/webtalk/usage_statistics_ext_xsim.xml' has been successfully sent to Xilinx on Sun Aug 27 22:25:49 2017. For additional details about this file, please refer to the WebTalk help file at /opt/Xilinx/Vivado/2017.2/doc/webtalk_introduction.html.
INFO: [Common 17-206] Exiting Webtalk at Sun Aug 27 22:25:49 2017...
##### xsim #####

****** xsim v2017.2 (64-bit)
  **** SW Build 1909853 on Thu Jun 15 18:39:10 MDT 2017
  **** IP Build 1909766 on Thu Jun 15 19:58:00 MDT 2017
    ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

source xsim.dir/work.dpi_test3/xsim_script.tcl
# xsim {work.dpi_test3} -autoloadwcfg -runall
Vivado Simulator 2017.2
Time resolution is 1 ps
run -all
<<MSG>> : SVFunc, value = 1
<<MSG>> : CFunc_x8 , c_value = 1, sv_value = 4
<<MSG>> : sv_value(1)*2*4 = c_value(8)

<<MSG>> : SvTask at 0
<<MSG>> : SvTask at 10
<<MSG>> : SvTask at 20
<<MSG>> : SvTask at 30
<<MSG>> : SvTask at 40
<<MSG>> : SvTask at 50
<<MSG>> : SvTask at 60
<<MSG>> : SvTask at 70
<<MSG>> : SvTask at 80
<<MSG>> : SvTask at 90

$finish called at time : 100 ns : File "/home/shibatchii/FPGA/DPI3_X/dpi_test3.sv" Line 23
Memory in use : 110364 KB (peak memory: 175896 KB)     CPU usage : 0 ms
exit
INFO: [Common 17-206] Exiting xsim at Sun Aug 27 22:26:44 2017...
2017年  8月 27日 日曜日 22:26:44 JST

1分40秒ほどかかっている。Windows版だともうちょっと早いようだ。

■ まとめ

多少Warningは出ているが、動作としてはプログラム通りの意図した動作になっているようにみえる。
WindowsのVivado2017.2やModelSim - Intel FPGA Starter Edition 10.5b (Quartus Prime 17.0)でも行ってみたが同様の結果となった。

« LINUX版 ModelSim で DPI-C を試してみるときの注意点 #FPGA #SystemVerilog | トップページ | ハムフェアー(アマチュア無線のフェアー)に行ってきました »

FPGA」カテゴリの記事

SystemVerilog」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Vivado 2017.2 で DPI-C Import,Exportを試してみた #FPGA #SystemVerilog:

« LINUX版 ModelSim で DPI-C を試してみるときの注意点 #FPGA #SystemVerilog | トップページ | ハムフェアー(アマチュア無線のフェアー)に行ってきました »