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");
      // For HLS all internal storage for the HW block must be statically allocated
      unsigned char buff_A[3][MAX_WIDTH];

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

AR# 51143
日付 08/07/2012
ステータス アクティブ
タイプ ソリューション センター
  • AutoESL
  • AutoESL - 2012.1
  • AutoESL - 2011.4.2
  • More
  • AutoESL - 2011.4
  • Vivado - 2012.2
  • Less