3.6.3.18 SHLS-33

Message

Error:   (SHLS-33) {buffer_type} '{variable}' on {location} must be written by one dataflow subfunction (the producer) first, then read in a later subfunction (the consumer). The first subfunction '{function}' does not write.
/*****************************************************************
 *  This example is expected to result in
 *  - Code  : SHLS-33
 *  - Type  : Error
 *  - Cause : Data buffer 'tmp' within the top-level function DUT()
 *            is read by the the first invocation of subf() before
 *            being written during the subsequent invocation of
 *            subf().
 *****************************************************************/ 
#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 out[NELEM]) {
#pragma HLS function top dataflow
     int tmp[NELEM];

     subf(tmp, out);
     subf(in, tmp);
}

Related to: Data Flow Parallelism, Streaming Library, C++ Double Buffer and Shared Buffer, Dataflow Channel