02-10-2017 09:56 AM
I'm running SDAccel's flow via the terminal, e.g., calling xocc etc.
Unlike the GUI, its a little bit more difficult to take a look at the resource usage of the kernels. I have found the reports and I can get all the info the GUI would tell me, but it seems there are many many reports for the same kernel (I'm only implement one actually).
Which of the report files is the one given buy the GUI? Also, I remember reading that its possible to generate an HTML (or similar) representation of the reports via command but I can't seem to find it.
More importantly, I'm implementing the same kernel with 1, 2, 4 and 8 CUs, but the reports show that the resource requirements are exactly the same. I could understand this if I was looking at the synthesis reports of the kernel HDL alone (which is the same regardless of the number of instances), but the total platform resource usage doesn't change either.
Why is this?
02-13-2017 01:58 PM
In the HLS synthesis report the data displayed is specific to a kernel and is not reported at a compute unit level. However, the system estimate report does contain compute unit level information.
You can get the system estimate report with the "--report estimate" option for xocc, see Generating the System Performance Estimate Report for usage.
If you want to generate the SDx style reports follow these instructions XOCC/Makefile Flow for Collecting Timeline and Device Trace Data.
The HLS synthesis report will have a name like "<kernel>_csynth.rpt" (Note: This is the report without compute unit level data).
To find it in the working directory try
find . -name "*csynth.rpt"
Which should return
02-14-2017 06:41 AM
Thanks a lot for that answer!
However, I've already ran all the compilations I needed (over 20...) and I didn't run them with that "--report estimate" switch. Any way I can get that data post-compilation? Rerunning would take literally dozens of hours.
02-15-2017 03:14 AM
I've re-ran all my compilations with the report switch, but there's something I don't get.
The report simply prints out several lines (one line per CU), and each CU uses the same resources.
Of course this makes sense, but the conclusion is that the resource usage scales linearly with the number of CUs used to implement a kernel. This isn't what I was expecting since, with the loss of hierarchy after placement and routing and so forth, I didn't expect a perfecly linear increase.
What I'm assuming is that this estimate gives me the resources used, but doesn't account for slices and LUTs which are used by more than one CU (this is similar to the detailed hierarchical MAP report in the old EDK or Planahead flow, where slices are counted twice if they are used by more than one module).
So what I'm looking for is really the total of slices, LUTs, etc, required when increasing the number of CUs. I'm used to finding this info in the PAR report, but now it seems the number of resources given by the "platform_utilization_routed.rpt" are always the same regardless of the number of CUs.
Can anyone clarify this please?
11-30-2018 09:10 AM
Hi, @allien ,
The System Estimate report will only be available for C/C++ and OpenCL™ kernels because it is generated by Vivado® HLS, not RTL kernels. The report provides estimates on FPGA resource usage and the frequency at which the hardware accelerated kernels can operate.
The system report contains the real uage of the logic resource.