Vivado 2015.4 のチュートリアルの続きをやっていこう。
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をリンクとして選択できるようになるので、クリックしてファイルを開く。
基本的にLab.1とLab.2は同一だが、
typedef int16 in_data_t; typedef int32 out_data_t;
となっており、in_data_tを16ビット幅に設定している。ビット幅が小さくなっていると、どのような影響があるのか? まずはシミュレーションしてみる。[Run C Simulation]で、[Launch Debugger]をセットする。
シミュレーションが開始すると、一旦停止するので、[Explorer]ペインを開き、"hamming_window_test.c"をダブルクリックし、hamming_window_test.cのL.78のprintfをコメントをはずす。
次に、再度[Run C Simulation]を開始する。ここでは、前回と違って[Launch Debugger]を選択しない。
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の中を見てみたが良く分からなかった。これは今後調査していこう。