AR# 51143

Vivado HLS - 「a.exe has stopped working.」というメッセージがポップアップ ウィンドウに表示され Vivado HLS がクラッシュする

説明


「a.exe has stopped working.」というメッセージがポップアップ ウィンドウに表示され Vivado HLS がクラッシュします。

ソリューション

C または C++ のファンクションに大きなローカル変数がある場合は、スタックに配置されます。これがメモリ容量不足を引き起こす可能性があります。解決策はいくつかあります。

  1. 変数をアレイではなくヒープに配置します。たとえば、可能であれば変数をスタティックまたはグローバルにします。ただし、このソリューションはパフォーマンスに問題が出る可能性があります。
  2. スタック サイズを増やします。
  3. C をシミュレーションするにはダイナミック割り当てを使用し、合成にはアレイを使用します。
    • 例 :
    • #ifndef __SYNTHESIS__
      // Dynamically allocate large arrays when compiling software
      ARRAY_2D_MALLOC(buff_A, unsigned char, 3, MAX_WIDTH);
      // Ensure allocation succeeded
      if (!buff_A ) {
      printf("ERROR: Unable to allocate line-buffer storage in function: sobel_filter()\n");
      exit(-1);
      }
      #else
      // For HLS all internal storage for the HW block must be statically allocated
      unsigned char buff_A[3][MAX_WIDTH];
      #endif


一般的には、スタック エラーやその他の合成エラーをデバッグするにあたり、valgrind などのメモリ チェック ツールを実行ファイルで実行すると便利です。





AR# 51143
日付 08/07/2012
ステータス アクティブ
種類 ソリューション センター
ツール 詳細 概略