3.6.3.20 SHLS-36

Message

Error:   (SHLS-36) FIFO '{variable}' on {location} in dataflow function '{function}' must be accessed by at most 1 reader and 1 writer subfunction. Found {number_of_reader_or_writer} {readers|writers}.
/*****************************************************************
 *  This example is expected to result in
 *  - Code  : SHLS-36
 *  - Type  : Error
 *  - Cause : FIFO 'tmp' in DUT() is accessed by 2 subfunction
 *            calls for reading.
 *****************************************************************/   
#include "hls/streaming.hpp"

void subf(hls::FIFO<int>&in, hls::FIFO<int>&out) {
    out.write(in.read() + 1);
}

void DUT(hls::FIFO<int>&in, hls::FIFO<int>&out1, hls::FIFO<int>&out2) {
#pragma HLS function top dataflow
    hls::FIFO<int> tmp;

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

Related to: Data Flow Parallelism, Streaming Library, Dataflow Channel