07-15-2017 04:41 AM
Can anyone shed some light on how to interpret the synthesis report generated by HLS, latency in particular. Is it reliable? I want to improve timing performance of my PL that I have designed in HLS. After implementing on hardware, I'm measuring the time taken by it via AXI Timer. I tried adding up all the loop latency deescribed in the synthesis report to estimate the time taken but it's not matching (not even near) with the time measured.
Is there any way to estimate how much time will be taken by the PL in HLS itself, without implementing on hardware everytime I make any changes to see if the performance has improved or not?
Also, any material on how to increase the performance using optimization directives in HLS?
Thanks in Anticipation.
07-15-2017 05:15 AM
07-15-2017 05:16 AM
Generally the synthesis report is accurate with regards to latency, assuming that everything is ideal. If you have AXI Stream interfaces, HLS assumes that those are never blocked for input or output. For AXI Masters, I think HLS just assumes single-cycle reads/writes - depending on the access done (and bus congestion) this can be anywhere from "very nearly correct" to "totally wrong".
The synthesis report also assumes, of course, that specified loop tripcounts are correct. If you've specified that a loop only runs a maximum of five times, but the test data that you're feeding in cases that loop to run a million times, the timing estimate will obviously be wrong.
UG902 is the main source of information on optimization directives. If you have a specific case where optimization is needed, post it here and someone might have some ideas.