05-09-2014 05:11 PM
I'm trying to synthesize a simple kernel with Vivado HLS. The vanilla kernel with no pragmas synthesizes fine. However, when I add a few pragmas (loop unroll, pipeline) to unroll and pipeline the loops, the HLS synthesis gets stuck at scheduling. I've waited for more than two hours, and this has happened on multiple occasions. There is no error, just that the logging doesn't progress beyond "Starting scheduling ...".
I am hoping that the community has seen something like this in the past. Do you have any pointers on what might be happening? Is there any way to see a more detailed/verbose log from Vivado HLS? I've attached my HLS design file. Any pointers?
05-10-2014 02:08 AM
I suspect that with PIPELINE and UNROLL, HLS need put much more effort to shedule and hit the bottleneck of a cpu/memory requirement. You may evaluate if it's possible to remove some of PIPELINE/UNROLL directives.
05-13-2014 04:05 AM
Do you have any further questions? If in case any of the above topic helped then please feel free to mark it as an accepted solution.
05-13-2014 11:35 AM
I'm running HLS on a big server machine with 16 Xeon cores and about 100GB of DRAM, so I doubt if it is a memory/compute requirement. Perhaps the scheduler is taking far too long to converge?
Anyway, I modified my design to unroll only 2 times instead of complete unrolling, and the HLS synthesizes successfully. This is not what I would want to do, but looks like I've to live with it to get Vivado HLS to pass scheduling.
05-14-2014 11:17 PM
@raghup17 Thanks for sharing the solution also. Please feel to accept your post as a solution for other community users.
05-15-2014 09:12 AM
I also have designs projects currently run overnight to synthetizie with a medium-size configuration, but take a lot longer when I modify some #defines which cause e.g. unrolled loops to iterate 100 instead of 50 times - therefore I guess some algorithms are o(n^>=2).
I also noticed synthetizing is only single-threaded, as only a single core is loaded 100% during a HLS run.
It would be great if Vivado could use multiple threads/cores for the most time consuming parts of it`s HLS process, as currently single-threaded performance of current processors seems to stay rather flat - more money most of the time buys you only more cores. I already thought about buying an AMD FX-9590, as it can Turbo to 5Ghz.
05-16-2014 03:42 AM
@linuxhippy Please create a new topic with you query.