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.
This PR adds two new capabilities to the diplomatic BundleBridge API.
BundleBroadcast
is generalized into aBundleBridgeNexus
that now can accept multiple inputs and a user-defined function for reducing the inputs into a single wire value that is to be broadcast, as well as a user-defined function for broadcasting that value.BundleBridgeNexus
case class is renamed toBundleBridgeNexusNode
BundleBridgeNexus
is now the base class of the implementation of the reduction and broadcast wiring. It defaults to or-reducing its inputs and broadcasting identical copies of the reduction.BundleBridgeNexus
can also be supplied a default wire value in cases where there are no input edges. This value is treated as an input byinputFn
.BundleBridgeNexus.apply
produces aBundleBridgeNexusNode
BundleBroadcast.appy
is now just a factory ofBundleBridgeNexus
that supplies aninputFn
thatrequire
s that only a single input edge be presentobject BundleBridgeNexus
supplies some example input and output functions, including ones that insert timing closure registers on either input or output sides.BundleBridgeSink
is enhanced to also be able to optionally supply agen
function for producing bundles in the graph. If both source and sink supply gen functions, they must passchisel3.DataMirror.checkTypeEquivalence
. If only sources or sinks supply agen
function, it is the one used. Neither supplying the function throws an exception.BundleBridgeNexus
checks the type equivalence of all input and output edges.Type of change: other enhancement
Impact: API modification
Development Phase: implementation