Rewinding Pipelined Loops for Performance - 2021.2 English

Vitis High-Level Synthesis User Guide (UG1399)

Document ID
UG1399
ft:locale
English (United States)
Release Date
2021-12-15
Version
2021.2 English

To avoid issues shown in the previous figure (Function and Loop Pipelining), the PIPELINE pragma has an optional command rewind. This command enables the overlap of the execution of successive calls to the loop, when this loop is the outermost construct of the top function or of a dataflow process (and the dataflow region is executed multiple times).

The following figure shows the operation when the rewind option is used when pipelining a loop. At the end of the loop iteration count, the loop starts to execute again. While it generally re-executes immediately, a delay is possible and is shown and described in the GUI.

Figure 1. Loop Pipelining with Rewind Option
Note: If a loop is used around a DATAFLOW region, Vitis HLS automatically implements it to allow successive executions to overlap. See Exploiting Task Level Parallelism: Dataflow Optimization for more information.