3.6.3.17 SHLS-32

Message

Error:   (SHLS-32) {buffer_type} '{variable}' on {location} must only be accessed by 2 dataflow subfunctions. Found '{functions}' accessing the memory.
/*****************************************************************
 *  This example is expected to result in
 *  - Code  : SHLS-32
 *  - Type  : Error
 *  - Cause : Data buffer 'tmp' in top-level function DUT() is
 *            accessed by more than 2 subfunction calls.
 *****************************************************************/
#define NELEM 10  

void subf(int in[NELEM], int out[NELEM]) {
#pragma HLS loop pipeline
    for (int i = 0; i < NELEM; i++) {
        out[i] = in[i] + 1;
    }
}

void DUT(int in[NELEM], int out1[NELEM],  int out2[NELEM]) {
#pragma HLS function top dataflow
     int tmp[NELEM];

     subf(in, tmp);
     subf(tmp, out1);
     subf(tmp, out2);
}

Output

Error:   (SHLS-32) Data buffer 'tmp' on line 19 of test.cpp must only be accessed by 2 dataflow subfunctions. Found 'subf_2, subf_1, subf_0' accessing the memory.

Related to: Data Flow Parallelism, Dataflow Channel