FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Vivado 2015.4 HLSを試す(Lab.2 C Validation with ANSI C Arbitrary Precision)

Vivado 2015.4 のチュートリアルの続きをやっていこう。

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_2/ug871-vivado-high-level-synthesis-tutorial.pdf

Lab.2 C Validation with ANSI C Arbitrary Precision を挑戦してみる。

Step.1 Create and Open the Project

まずは、Lab2の合成を行っておく。これはコンソール上で行う。

vivado_hls -f run_hls.tcl

合成が完了すると、GUIを立ち上げて確認する。

vivado_hls -p hamming_window_prj

hamming_window.c 上の #include "hamming_window.h" の上でCTRLキーを押下すると、hamming_window.hをリンクとして選択できるようになるので、クリックしてファイルを開く。

f:id:msyksphinz:20151201223451p:plain

基本的にLab.1とLab.2は同一だが、

typedef int16       in_data_t;
typedef int32      out_data_t;

となっており、in_data_tを16ビット幅に設定している。ビット幅が小さくなっていると、どのような影響があるのか? まずはシミュレーションしてみる。[Run C Simulation]で、[Launch Debugger]をセットする。

f:id:msyksphinz:20151201223856p:plain

シミュレーションが開始すると、一旦停止するので、[Explorer]ペインを開き、"hamming_window_test.c"をダブルクリックし、hamming_window_test.cのL.78のprintfをコメントをはずす。

f:id:msyksphinz:20151201224953p:plain

次に、再度[Run C Simulation]を開始する。ここでは、前回と違って[Launch Debugger]を選択しない。

f:id:msyksphinz:20151201230018p:plain

printfで確認できる。DUTとExpectedが一致していることが分かる。

このとき、ソースの差分を取ってみると、

//typedef int16_t       in_data_t;
//typedef int32_t      out_data_t;
#include "ap_cint.h"
typedef int16      in_data_t;
typedef int32      out_data_t;

このap_cint.hとは何だろう?

$ find . -name ap_cint.h
./common/technology/autopilot/ap_cint.h
./include/ap_cint.h

ap_cint.hの中を見てみたが良く分からなかった。これは今後調査していこう。