【发布时间】:2020-01-01 08:25:55
【问题描述】:
我正在使用 SDSoC 2018.3 Vivado HLS 加速 C++ 函数。这个函数只需要一个指针数组(在 PS 中使用 sds_alloc 分配)。然后,它遍历这个数组,提取其中的每个元素(这是 DDR 内存的地址),并读取位于该地址中的数据。
这是一个演示这个想法的简单函数:
float get_data_from_DDR(float *data_addresses_array[10], unsigned int size)
{
float * address;
float sum = 0;
for(unsigned int i = 0; i< 10; i++)
{
address = data_addresses_array[i];
for(unsigned int j = 0; j<size; j++ ) {
sum += address[j];
}
}
return sum;
}
问题是,如果我将指针数组作为顶级函数的参数传递,SDSoC 会引发错误。
在Vivado的“ug902”手册中挖掘后发现:
“Vivado HLS 支持指向综合指针的指针,但不支持在顶级接口上使用它们,即作为顶级函数的参数。如果在多个函数中使用指向指针的指针,Vivado HLS 会内联所有使用指向指针的函数。内联多个函数可以增加运行时间。”
我不知道如何解决这个问题。
感谢任何帮助。
【问题讨论】:
标签: c++ fpga xilinx vivado vivado-hls