Specifying Compiler-Created FIFO Depth - 2022.1 English

Vitis High-Level Synthesis User Guide (UG1399)

Document ID
UG1399
Release Date
2022-06-07
Version
2022.1 English

Start Propagation

The compiler might automatically create a start FIFO to propagate the ap_start/ap_ready handshake to an internal process. Such FIFOs can sometimes be a bottleneck for performance, in which case you can increase the default size which can be incorrectly estimated by the tool with the following command:

config_dataflow -start_fifo_depth <value>
If an unbounded slack between producer and consumer is needed, and internal processes can run forever, fully and safely driven by their inputs or outputs (FIFOs or PIPOs), these start FIFOs can be removed, at user's risk, locally for a given dataflow region with the pragma:
#pragma HLS DATAFLOW disable_start_propagation
Tip: This is required when using block control protocol ap_ctrl_none.

Scalar Propagation

The compiler automatically propagates some scalars from C/C++ code through scalar FIFOs between processes. Such FIFOs can sometimes be a bottleneck for performance or cause deadlocks, in which case you can set the size (the default value is set to -fifo_depth) with the following command:

config_dataflow -scalar_fifo_depth <value>