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!

解决方案

In both examples, the warning message shows that one path does not meet timing. It also shows the operations in the critical path.

In more detail, in Vivado HLS, there are some rules that the tool must obey in terms of dependency for arranging the operations; this is call scheduling.

The interpretation of the warning is that too many operations are scheduled to happen in one clock cycle and the tool cannot split it automatically with the current code and constraints/directives provided.

Regarding the above examples, there are different solutions as follows:

Example 1:

You can set the initialization interval (II) of the pipeline to 2, thus, allowing more flexibility for the VHLS tool to adjust each clock cycle to do the pipeline, but this changes the overall latency and throughput.

Example 2:

The critical path seen is the accumulator loop: loop k times around the expression "M[i][j].imag -= the_value" -> load the matrix value M[i][j], sub / add, store back the result.

A temporary variable could be used but if the tools do not do it, it is probably because it thinks the k value could be forced to have only one loop.

A change in the code to use a temporary variable creates a different scheduling which results in a better timing that meets the timing requirements.