Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BundleBridge enhancements #2497

Merged
merged 10 commits into from
Jun 4, 2020
Merged

BundleBridge enhancements #2497

merged 10 commits into from
Jun 4, 2020

Conversation

hcook
Copy link
Member

@hcook hcook commented Jun 1, 2020

This PR adds two new capabilities to the diplomatic BundleBridge API.

BundleBroadcast is generalized into a BundleBridgeNexus 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.

  • the confusingly named BundleBridgeNexus case class is renamed to BundleBridgeNexusNode
  • 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 by inputFn.
  • aiding backwards compatibility,BundleBridgeNexus.apply produces a BundleBridgeNexusNode
  • BundleBroadcast.appy is now just a factory of BundleBridgeNexus that supplies an inputFn that requires that only a single input edge be present
  • object 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 a gen function for producing bundles in the graph. If both source and sink supply gen functions, they must pass
chisel3.DataMirror.checkTypeEquivalence. If only sources or sinks supply a gen 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

@hcook hcook force-pushed the bundle-broadcast-enhancements branch from 0b7cc2b to 0f84d57 Compare June 3, 2020 18:12
@hcook hcook changed the title BundleBroadcast enhancements BundleBridge enhancements Jun 3, 2020
@hcook hcook force-pushed the bundle-broadcast-enhancements branch from 0f84d57 to 0b28265 Compare June 4, 2020 06:43
@hcook hcook merged commit ab3dcdc into master Jun 4, 2020
@hcook hcook deleted the bundle-broadcast-enhancements branch September 3, 2020 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants