The execution mode of the HLS design refers to the way the design works as a block (or module) both with regard to itself and the functions within the block, or in relationship with other blocks modules, or outside software that addresses the block. These modes are determined by block control protocols assigned to the HLS design as described in Block-Level Control Protocols, and by the internal structure of the HLS design as described in Abstract Parallel Programming Model for HLS.
Execution modes of kernels include:
- Overlapping
- Lets the next execution of a new transaction begin before the current transaction is complete. Function pipelined, loop rewind, or dataflow execution allows overlapping block runs to begin processing additional data as soon as the design is ready.
- Sequential
- Requires the current transaction to complete before a new transaction can be started.
- Auto-Restarting
- Auto-restart mode lets the HLS design automatically restart the module when it is ready to begin processing additional data. This mode supports both overlapping and sequential execution. Auto-restarting is the approach for data-driven TLP designs, but can also be implemented in control-driven TLP designs as described in Auto-Restarting Mode.