We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Showing results for 
Search instead for 
Did you mean: 
Scholar jprice
Registered: ‎01-28-2014

Dataflow Directive - Bugs

I'm trying to use the data flow directive but it's giving me numerous issues. I've been able to work around some but I've run into one which I can't proceed. I have a design that uses streams to pass data from one function to the next which does seem to behave as expected. In one case I have a branching set of streams, where one set of streams is copied into two sets and each set passed to a different consumer function.



for(uint8 i = 0; i < numStreams; i++)
  sample = parallelStreamIn[i].read();


That was synthesizing but I noticed the loop wasn't unrolling, so I unrolled it. Now I get an error saying one of those streams doesn't have a consumer function. C-Simulation disagrees, so I'm not sure what's happening here. 


Also is it possible to tell HLS that it doesn't need to shift certain things between tasks? It ends up moving a lot of data that is effectively static after I initialize it (read from memory). 

0 Kudos
1 Reply
Scholar jprice
Registered: ‎01-28-2014

Re: Dataflow Directive - Bugs

I managed to work around my issue by changing the order of some inner/outer loops. I'm not sure why this addressed it, so I suspect there is something I don't know. I do have a more general question about dataflow. I was having a problem where my top level function's ap_idle port would drop low as soon as I came out of reset. If I strobe start the same cycle it comes out of reset the design works. However this isn't going to happen typically.I saw a post where someone wrapped their function in another function to resolve it which also worked for me. However I can't use the dataflow directive on this wrapper or I run into the same issue. As a result I can't "call" my function while it's already running. ap_ready is only asserted at the very end (ap_idle returns high the next cycle). Thoughts?

0 Kudos