合成返回错误:非可合成类型

时间:2015-05-06 11:14:03

标签: xilinx hls vivado

我的顶级函数中有数据结构,我希望通过在FPGA上运行它来加速。

我有一个名为Rectangle的数据结构,它包含一个数据结构。

typedef struct rectangle Rectangle;
struct rectangle {
    Point *position;
    int height;
    int width;
    Rectangle *suivant;
};

Point也是一种数据结构:

typedef struct point Point;
struct point {
    int x;
    int y;
    Point *suivant;
};

我的top函数将参数指向数据结构Rectangle

这是我的顶级功能:

void mise_a_jour_coef_tab(Case_tab tab[NBCOL][NBLIG],Rectangle *zone_occupe)
{
    int i,j;
    int val;

    for(j=zone_occupe->position->x;j<zone_occupe->position->x+zone_occupe->width;j++){
        if(zone_occupe->position->y==0 || tab[j][zone_occupe->position->y-1].coef<0)
            val=1;
        else
            val=tab[j][zone_occupe->position->y-1].coef+1;

        for(i=zone_occupe->position->y;i<NBLIG;i++){            
            if(tab[j][i].free==0){
                tab[j][i].coef=val;
                val++;
            }           
            else{
                val=1;
            }
        }
    }
}

问题是当我跑

c synthesis

有3个错误:

  

Argument&#39; zone_occupe&#39;功能&#39; mise_a_jour_coef_tab&#39;具有不可合成的类型(可能的原因:由于不支持的类型转换或内存复制操作,结构变量无法分解)。

     

Argument&#39; zone_occupe&#39;有一个不可合成的类型&#39;%struct.rectangle.1.6.8 = type {%struct.point.0.5.7 *,i32,...&#39; (可能的原因:指向指针或全局指针的指针)。

     

可合成性检查失败。

有人可以帮我解决这个问题吗? 我们如何在vivado HLS的顶级功能中包含数据结构?

0 个答案:

没有答案