Pipeline Styles - 2020.1 English

Vitis HLS Messaging (UG1448)

Document ID
UG1448
Release Date
2020-06-03
Version
2020.1 English
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