Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

17.1.1 Iteration Interval

I recently moved from 17.0.1 to 17.1.1. I've noticed that the loop analysis section of the report file now shows the ii preceded by a "~". For example, 17.0.1 reported an ii of "1" and a "yes" under Pipelined. In 17.1.1 it still reports "yes" for pipelined but "~1" for the ii and the details column says that "ii is an approximation". I have other loops that report an ii of "~4", pipelined "yes" and bottleneck "ii" - but the detail section doesn't say the ii is an approximation. 


If ii is an approximation when the report is generated - how do I know what the actual ii is after everything is compiled? If I have a loop that is critical for throughput, I need a way to know that it has been pipelined and what the ii is. How likely is the ii to go up/down after compilation? I'm hoping the only way isn't to run some throughput tests in HW after the second stage compilation. Given how long compiles take that would create a MAJOR development bottleneck when trying to improve loop performance.
0 Kudos
1 Reply
Honored Contributor I

if you have load or store to non-stall-free memory, like global memory or channel, 

the report will show "~", because the compiler can not know if stall will affect ii. 


if you get ii = ~1, just make sure the bandwidth will not be bottleneck.