Free Running Pipeline

Explanation

There are multiple ways to control the realization of free running pipeline (frp) style architecture on specific pipelines or globally on all pipelines, but not all pipelines can be frp. There are several restrictions that lead to the disabling of the frp style on pipelines.

See the following table for definitions of all pipeline styles.

Table 1. Pipeline Style Table
Name Stalled Pipeline (HLS default) Free running Pipeline Traditional flushable pipeline
Pragma/Directive

#HLS pragma pipeline style=stp

set_directive_pipeline -style stp

#HLS pragma pipeline style=frp

set_directive_pipeline -style frp

#HLS pragma pipeline style=flp

set_directive_pipeline -style flp

Deprecated: #HLS pragma pipeline enable_flush

Global default config_compile -pipeline_style stp (default)

config_compile -pipeline_style frp

config_compile -frp_max_fanout $value (default is 2000)

N/A
Description Stalling architecture: runs only when input data is available otherwise stalls Flushable frequency-optimized architecture: runs even when input data is not available Traditional flushable architecture.
Advantages
  • No usage constraint
  • Least overall resource usage (typically, but not always)
  • Better timing due to:
    • Less fanout
    • Simpler pipeline control logic
  • Flushable

Flushable

Disadvantages
  • Not flushable, hence it might:
    • Cause more deadlocks in dataflow
    • Prevent already computed outputs from being delivered, if inputs to next iterations are missing
  • Timing issues due to high fanout on pipeline controls
  • Moderate resource increase due to FIFOs added on outputs
  • Usage constraints:
    • Mainly used for dataflow internal processes
    • MAXI not supported
  • May increase II
  • Resource increase due to less sharing (II>1)
  • Usage constraints:
    • Function pipeline only
Use Cases
  • When there is no timing issue due to high fanout on pipeline control
  • When flushable is not required (e.g. no performance or deadlock issue due to stall)
  • When you need better timing due to fanout to register enables from pipeline control
  • When flushable is required for better performance or avoiding deadlock
When flushable is required for better performance or avoiding deadlock