pulp-platform / common_cells

Common SystemVerilog components
Other
488 stars 138 forks source link

Add stream_deposit module #186

Closed meggiman closed 1 year ago

meggiman commented 1 year ago

This module helps to deal with stream-sources that do not support backpressure i.e. cannot handle the case where the sink is not ready to accept a value. In constrast to a FIFO that queues the transactions, this IP just drops them. That is, the currently stalled in-flight transaction is just updated with the new data sent by the input. Therefore the input of this module is always ready but there is no guarantee that every transaction is sent to the output. The module will just keep the valid_o signal asserted until a transaction is acceted by the output side which at this point receives whatever data the input last deposited.

The stream_deposit module is helpful to connect configuration registers with IPs that could cause back pressure. In this case we might not care how long it takes for the config value to be sent to the IP but if we change the config value we want the latest value to be used regardless wether the previous transaction was still in-fligth or not.