HLS顶层函数

顶层函数不一定是主函数,但是顶层函数即就是你要生成的硬件输入输出的形式:

如下面一段C=A*B的乘法加速器代码:

其顶层函数为:void mmult_accel_core,定义了输入,输出两个数据流,即会对应生成硬件的端口

void mmult_accel_core (AXI_VAL in_stream[2*SIZE], AXI_VAL out_stream[SIZE])
{
    // Map ports to Vivado HLS interfaces
    #pragma HLS INTERFACE ap_fifo port=in_stream
    #pragma HLS INTERFACE ap_fifo port=out_stream

    // Map HLS ports to AXI interfaces
    #pragma HLS RESOURCE variable=in_stream  core=AXIS metadata="-bus_bundle INPUT_STREAM"
    #pragma HLS RESOURCE variable=out_stream core=AXIS metadata="-bus_bundle OUTPUT_STREAM"
    #pragma HLS RESOURCE variable=return core=AXI4LiteS metadata="-bus_bundle CONTROL_BUS"
    
    dut_mmult_accel_core <float, DIM, SIZE, 4, 5, 5>(in_stream, out_stream);
    
    return;
}

int main(void)
{

    typedef float T;
    int ret_val = 0;

    ret_val = test_matrix_mult<T, DIM, SIZE, 4,5,5>();

    return ret_val;

}

猜你喜欢

转载自blog.csdn.net/bufengzj/article/details/81118319
HLS