FC2カウンター FPGAの部屋 2013年08月26日
FC2ブログ

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

FPGAの部屋

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

Vivado HLSのExampleを試してみる5(IPにした)

前の記事は、”Vivado HLSのExampleを試してみる4(C/RTL Cosimulation)

今回は、ExampleをIPにしてみようと思う。

Step 5: IP Creation
・Export RTL アイコンをクリックした。
Vivado_HLS_43_130826.png

・Feedback Request ダイアログが表示された。OKボタンをクリックした。
Vivado_HLS_37_130825.png

・Export RTL Dialog が表示された。そのまま、OKボタンをクリックした。
Vivado_HLS_38_130825.png

・左の Explorer に ip フォルダが増えて、圧縮された xilinx_com_hls_example_1_0.zip もできていた。
Vivado_HLS_40_130825.png

・Winodows の Explorer で、ip フォルダを見た。下に示す。
Vivado_HLS_44_130826.png

・ip\hdl\verilog フォルダを見た。下に示す。
Vivado_HLS_45_130826.png

example_BUS_A_if.v が、AXI4 Lite Slave とのインターフェイスを行うVerilog HDLファイルだ。中を見てみると、AXI4 Lite Slave と ap_hs バスのインターフェイスは、AXI4 Lite Slave にマップされたアドレス経由で行われている。下に Address Info を引用する。

//------------------------Address Info-------------------
// 0x00 : Control signals
// bit 0 - ap_start (Read/Write/COH)
// bit 1 - ap_done (Read/COR)
// bit 2 - ap_idle (Read)
// bit 3 - ap_ready (Read)
// bit 7 - auto_restart (Read/Write)
// others - reserved
// 0x04 : Global Interrupt Enable Register
// bit 0 - Global Interrupt Enable (Read/Write)
// others - reserved
// 0x08 : IP Interrupt Enable Register (Read/Write)
// bit 0 - Channel 0 (ap_done)
// bit 1 - Channel 1 (ap_ready)
// others - reserved
// 0x0c : IP Interrupt Status Register (Read/TOW)
// bit 0 - Channel 0 (ap_done)
// bit 1 - Channel 1 (ap_ready)
// others - reserved
// 0x10 : Control signal of a
// bit 0 - a_ap_vld (Read/Write/COH)
// bit 1 - a_ap_ack (Read)
// others - reserved
// 0x14 : Data signal of a
// bit 7~0 - a[7:0] (Read/Write)
// others - reserved
// 0x18 : Control signal of b
// bit 0 - b_ap_vld (Read/Write/SC)
// others - reserved
// 0x1c : Data signal of b
// bit 7~0 - b[7:0] (Read/Write)
// others - reserved
// 0x20 : reserved
// 0x24 : Data signal of c_i
// bit 7~0 - c_i[7:0] (Read/Write)
// others - reserved
// 0x28 : reserved
// 0x2c : Data signal of c_o
// bit 7~0 - c_o[7:0] (Read)
// others - reserved
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)


この方式では、AXI4 Lite バスに接続されたプロセッサ?などの負担が大きくなる。しかもサンプルドライバが必要なはずだ。探してみると、solution1\impl\drivers\example_top_v1_00_a\src にドライバのCソースコードがあった。下に示す。
Vivado_HLS_46_130826.png

ap_hs バスの信号を設定する関数が並んでいた。

これでは、ソフトウェアの負担が大きいので、もう少し、ハードウェアにバスのプロトコル変換を任せることは出来ないのか?と思う。オプションがあるかもしれないので、探ってみようと思う。
  1. 2013年08月26日 05:08 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Vivado HLSのExampleを試してみる4(C/RTL Cosimulation)

前の記事は、”Vivado HLSのExampleを試してみる3(インターフェイス)

今回から、”Vivado Design Suite Tutorial: High-Level SynthesisUG871 (v 2013.2) June 19, 2013”を参考にやってみた(以下、マニュアルとする)。24ページの”Step 4: RTL Verification”からやってみる。

Step 4: RTL Verification
・Run C/RTL Cosimulation アイコンをクリックした。
Vivado_HLS_33_130825.png

・Co-simulation Dialog が表示された。全てデフォルトのままでOKボタンをクリックした。
Vivado_HLS_34_130825.png

・Console に、”*** C/RTL co-simulation finished: PASS ***”が表示され、上のシミュレーションもSuccess してシミュレーションがせいこうしたことがわかった。
・右のExplorer ウインドウに sim フォルダが追加された。
Vivado_HLS_35_130825.png

デフォルトの設定では、SystemCで C/RTL シミュレーションを行うようだ。次にVerilog に設定して C/RTL シミュレーションをやってみた。

・Run C/RTL Cosimulation アイコンをクリックした後の、Co-simulation Dialog で、SystemCのチェックを外して、Verilog にチェックを入れた。OKボタンをクリックした。
Vivado_HLS_41_130825.png

・C/RTL シミュレーションが成功した。
Vivado_HLS_42_130826.png

Vivado Simulator が動いているようだ。下にログをすべて示す。

Starting C/RTL cosimulation ...
C:/HDL/Xilinx/Vivado_HLS/2013.2/Win_x86/bin/vivado_hls_bin.exe C:\Users\Masaaki\Documents\Vivado_HLS\axi_lite\proj_axi_lite\solution1\cosim.tcl
@I [LIC-101] Checked out feature [HLS]
@I [HLS-10] Running 'C:/HDL/Xilinx/Vivado_HLS/2013.2/Win_x86/bin/vivado_hls_bin.exe'
for user 'Masaaki' on host 'masaaki-pc' (Windows NT_intel version 6.1) on Mon Aug 26 04:18:16 +0900 2013
in directory 'C:/Users/Masaaki/Documents/Vivado_HLS/axi_lite'
@I [HLS-10] Opening project 'C:/Users/Masaaki/Documents/Vivado_HLS/axi_lite/proj_axi_lite'.
@I [HLS-10] Opening solution 'C:/Users/Masaaki/Documents/Vivado_HLS/axi_lite/proj_axi_lite/solution1'.
@I [SYN-201] Setting up clock 'default' with a period of 13.3333ns.
@I [HLS-10] Setting target device to 'xc7z020clg484-2'
@I [SIM-47] Using XSIM for RTL simulation.
@I [SIM-14] Instrumenting C test bench ...
Build using "C:/HDL/Xilinx/Vivado_HLS/2013.2/msys/bin/g++.exe"
Compiling apatb_example.cpp
Compiling example.cpp_pre.cpp.tb.cpp
Compiling example_test.cpp_pre.cpp.tb.cpp
Generating cosim.tv.exe
@I [SIM-302] Generating test vectors ...
HLS AXI-Lite Example
Function c += a + b
Initial values a = 5, b = 10, c = 0
HW result = 15
SW result = 15
Success SW and HW results match
@I [SIM-333] Generating C post check test bench ...
@I [SIM-12] Generating RTL test bench ...
@I [SIM-323] Starting verilog simulation.
@I [SIM-15] Starting XSIM ...

C:\Users\Masaaki\Documents\Vivado_HLS\axi_lite\proj_axi_lite\solution1\sim\verilog>call xelab apatb_example_top -prj example.prj --lib "ieee_proposed=./ieee_proposed" -s example
Vivado Simulator 2013.2
Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved.
Running: C:/HDL/Xilinx/Vivado/2013.2/bin/unwrapped/win64.o/xelab.exe apatb_example_top -prj example.prj --lib ieee_proposed=./ieee_proposed -s example
Determining compilation order of HDL files
INFO: [VRFC 10-165] Analyzing Verilog file "example.autotb.v" into library work
INFO: [VRFC 10-165] Analyzing Verilog file "example.v" into library work
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.example
Compiling module work.apatb_example_top
Built simulation snapshot example

****** xsim v2013.2 (64-bit)
**** Build 272601 by xbuild on Sat Jun 15 11:27:26 MDT 2013
** Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved.

source xsim.dir/example/xsim_script.tcl
# xsim {example} -maxdeltaid 10000 -tclbatch {example.tcl}
Vivado Simulator 2013.2
Time resolution is 1 ps
source example.tcl
## run all
WARNING: File/Multi-channel descriptor (-1) passed to $fclose is not valid. Please compile the design with -debug for source location information.
$finish called at time : 180509 ps : File "example.autotb.v" Line 394
## quit
INFO: [Common 17-206] Exiting xsim at Mon Aug 26 04:18:44 2013...
@I [SIM-316] Starting C post checking ...
HLS AXI-Lite Example
Function c += a + b
Initial values a = 5, b = 10, c = 0
HW result = 15
SW result = 15
Success SW and HW results match
@I [SIM-1000] *** C/RTL co-simulation finished: PASS ***
@I [LIC-101] Checked in feature [HLS]


マニュアルから引用

・Cテストベンチは、RTLデザインへの入力ベクタを生成するために使用される。
・RTLデザインがシミュレーションされる。
・RTLからの出力ベクタはCテストベンチに戻されて、テストベンチで結果が正しいかどうかを検証するために使われる。


Vivado HLSのExampleを試してみる5(IPにした)”に続く。
  1. 2013年08月26日 04:39 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0