UPGRADE YOUR BROWSER

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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Scholar jprice
Scholar
4,072 Views
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();
   parallellStreamsOut1[i].write(sample); 
   parallellStreamsOut2[i].write(sample); 
}

 

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
Scholar
4,039 Views
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