FC2カウンター FPGAの部屋 Vivado HLS のエラー内容がGUI に表示されていない時の対処方法
FC2ブログ

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

FPGAの部屋

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

Vivado HLS のエラー内容がGUI に表示されていない時の対処方法

Vivado HLS のC コードの合成で、GUI にエラー内容が表示されずに、何のエラーで終了したのかが分からない時があって困っていた。
例えば、全結合層の実装しているときのエラーを示す。
affine_layer_1_180227.png

エラー内容を貼っておく。

Failed checking during preprocessing.
    while executing
"source C:/Users/Masaaki/Documents/VIvado_HLS/ZYBO_Z7-20/test/affine_layer1/solution1/csynth.tcl"
    invoked from within
"hls::main C:/Users/Masaaki/Documents/VIvado_HLS/ZYBO_Z7-20/test/affine_layer1/solution1/csynth.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 hls::main {*}$args"
    (procedure "hls_proc" line 5)
    invoked from within
"hls_proc $argv"
Finished C synthesis.


どういうエラーだかが全く分からない。。。

そういう時は、solution1 の solution1.log (solution2 でやっているときはsolution2 と読み替えること)に書いてあった。
affine_layer_2_180227.png

solution1.log を示す。
affine_layer_3_180227.png

affine_layer1/affine_layer1.cpp:38:24: error: no viable overloaded '='
              dot[col] = 0;

affine_layer1/affine_layer1.cpp:40:23: error: no viable overloaded '+='
             dot[col] += stdata.data.data0 * af1_weight[y*26 +x][col];


エラー内容が分かった。キャストなどのコードを追加しよう。

と思ったのだが、エラーの原因は配列のdot[100] を間違って、mdata_type で宣言してしまったことだった。
mdata_type は次の様に宣言してある。

typedef struct {
    ap_fixed<19,7,AP_TRN,AP_WRAP> data [NUMBER_OF_MIDDLE_LAYER];
} mdata_type;


よってC++ のコードが間違っている。この mdata_type を使うのは間違いなので、次の affine_type を使うように書き直した。

typedef ap_fixed<19,7,AP_TRN,AP_WRAP> affine_type;


これでエラーが無くなった。

しかし、普通にVivado HLS のGUI 上にエラー内容を表示してほしいものである。。。
  1. 2018年02月27日 04:16 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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