ReadyValidPipeline constructor
Constructs a pipeline with Ready/Valid protocol at each stage.
The validPipeIn
signal indicates that the input to the pipeline is
valid. The readyPipeOut
signal indicates that the receiver of the
output of the pipeline is ready to pull out of the pipeline.
The validPipeOut signal indicates that valid contents are ready to be received at the output of the pipeline. The readyPipeIn signal indicates that the pipeline is ready to accept new content.
The pipeline will only progress through any stage, including the output, if both valid and ready are asserted at the same time. This pipeline is capable of having bubbles, but they will collapse if downstream stages are backpressured.
If contents are pushed in when the pipeline is not ready, they will be dropped.
Note that the resetValues
will take effect the same way as a normal
Pipeline, but the valid indication on the output will remain at 0 until
a valid input has made its way from the input to the output.
Implementation
ReadyValidPipeline(
Logic clk,
Logic validPipeIn,
Logic readyPipeOut, {
List<List<Conditional> Function(PipelineStageInfo p)> stages = const [],
Map<Logic, dynamic>? resetValues,
List<Logic> signals = const [],
Logic? reset,
bool asyncReset = false,
}) : this.multi(
[clk],
validPipeIn,
readyPipeOut,
stages: stages,
resetValues: resetValues,
signals: signals,
reset: reset,
asyncReset: asyncReset,
);