stream-xbar: Add payload stability assertion mask #219
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixing the reset polarity of assertions in
stream_xbar
andstream_omega_net
(#200) uncovered numerous assertion failures in our designs usingcommon_cells
. One assertion failure we observe may result from intentional, functionally correct design.stream_xbar
andstream_omega_net
are commonly used for in-cycle banked SRAM interconnects (e.g. PULP TCDM), wherein parts of a valid payload may freely change if they are not relevant to that payload.The most common example is a shared request channel for reads and writes. The write data is always part of the payload, but on reads (i.e. when the write enable in the payload is low), it is irrelevant to the request. Thus, efficient designs may opt to hardwire write data to a write-specific datapath, which may result in write data changes while a valid read request is pending.
While functionally harmless, such changes trigger the current data stability assertions in
stream_xbar
andstream_omega_net
which provide either strict stability assertions on all payload bits (AxiVldRdy == 1
) or no stability assertions at all (AxiVldRdy == 0
).This MR adds a mask parameter
AxiVldMask
allowing designers to choose on which payload bits stability should be asserted. Since the default mask is'1
, this change is non-breaking.