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 - Vivado HLS 通过一个弹出式窗口报告了关于“a.exe 已停止工作”的崩溃信息。

Description

Vivado HLS 通过一个弹出式窗口报告了关于“a.exe 已停止工作”的崩溃信息。

解决方案

如果 C 或 C++ 代码在一个函数中具有若干个很大的局部变量,则会将它们放置于协议栈上。这可能会导致内存不足的问题。可以使用一些潜在的解决方案来解决该问题。

  1. 请将变量放在堆中,而不是阵列中。例如,在可能的情况下,将该变量设为静态或全局变量。但是,请注意,该解决方案可能会导致潜在的性能问题。
  2. 请增加协议栈大小。 
  3. 使用动态分配来仿真 C,并使用阵列进行综合。 
    • 实例:
    • #ifndef __SYNTHESIS__
        // 在编译软件时,动态分配大型阵列
        ARRAY_2D_MALLOC(buff_A, unsigned char, 3, MAX_WIDTH);
        // 确保分配成功
        if (!buff_A ) {
            printf("ERROR: 无法在函数中分配行缓冲存储器:sobel_filter()\n");
            exit(-1);
         }
      #else
         // 对于 HLS 而言,必须静态分配用于硬件模块的所有内部存储器
         unsigned char buff_A[3][MAX_WIDTH];
      #endif


通常,在可执行文件中运行 valgrind 等存储检验工具将有助于发现并改正协议栈错误和其它综合错误。





AR# 51143
日期 08/07/2012
状态 Active
Type 解决方案中心
Tools
  • AutoESL
  • AutoESL - 2012.1
  • AutoESL - 2011.4.2
  • More
  • AutoESL - 2011.4
  • Vivado - 2012.2
  • Less