UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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/03/2012
最終更新日 08/07/2012
ステータス アクティブ
タイプ ソリューション センター
ツール
  • AutoESL
  • AutoESL - 2012.1
  • AutoESL - 2011.4.2
  • More
  • AutoESL - 2011.4
  • Vivado - 2012.2
  • Less