Inherited from Component
Inherited from ValCallbackRec
Inherited from ValCallback
Inherited from OverridedEqualsHashCode
Inherited from SpinalTagReady
Inherited from Stackable
Inherited from PostInitCallback
Inherited from NameableByComponent
Inherited from Nameable
Inherited from ContextUser
Inherited from ScalaLocated
Inherited from GlobalDataUser
Inherited from OwnableRef
Inherited from AnyRef
Inherited from Any
A StreamFork will clone each incoming data to all its output streams. If synchronous is true, all output streams will always fire together, which means that the stream will halt until all output streams are ready. If synchronous is false, output streams may be ready one at a time, at the cost of an additional flip flop (1 bit per output). The input stream will block until all output streams have processed each item regardlessly.
Note that this means that when synchronous is true, the valid signal of the outputs depends on their inputs, which may lead to dead locks when used in combination with systems that have it the other way around. It also violates the handshake of the AXI specification (section A3.3.1).