我的顶级函数中有数据结构,我想通过在 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;
};
我的顶级函数将一个指向数据结构的指针作为参数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个错误:
函数 'mise_a_jour_coef_tab' 的参数 'zone_occupe' 具有不可合成的类型(可能的原因:由于不支持的类型转换或内存复制操作,无法分解结构变量)。
参数 'zone_occupe' 具有不可综合的类型 '%struct.rectangle.1.6.8 = type { %struct.point.0.5.7*, i32, ...' (可能的原因:指向指针或全局指针的指针) .
可综合性检查失败。
有人可以帮我解决这个问题吗?
我们如何在 vivado HLS 的顶级函数中包含数据结构?