3.5.1.11 Function Pipelining

Loop pipelining is one way to exploit pipeline parallelism in a circuit. An alternative way is to use Function Pipelining. When a function is marked to be pipelined (by using the Pipeline Function pragma), SmartHLS will implement the function as a pipelined circuit that can start a new invocation every II cycles. That is, the circuit can execute again while its previous invocation is still executing, allowing it to continuously process incoming data in a pipelined fashion. Typically a pipelined function is called together with other pipelined functions, and these are called from within a parent "dataflow function", specified as Dataflow pragma.