Having modified the write command to be non-blocking I notice that the command still blocks (the if condition is never satisfied):
bool success = false;
InPixelPipe::write(q, in_beat, success);
if (!success){
sleep(1);
std::cerr << i << "### STALL ###\n";
}
Documentation reads this:
Non-blocking writes add a bool argument in both host and device APIs that is passed by reference and returns true in this argument if the write was successful, and false if it was unsuccessful.
On the host:
// attempt non-blocking write from host to pipe until successful
while (!success) MyPipeInstance::write(q, data_element, success);
Remember, it's while running simulation. In emulation, the pipe is never stalling.
Btw, with i++ HLS we didn't run in this problem, even with very large simulation data sets.
Any advice? Thanks!