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

Tree component #155

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open

Tree component #155

wants to merge 25 commits into from

Conversation

desmonddak
Copy link
Contributor

Description & Motivation

This adds a ReductionTree component which performs arbitrary radix tree reduction computation, including operand widening,
sign extension as specified, and works on arbitrary length input sequences using computation specified by a List-based functor.

Related Issue(s)

#94 Tree component.

Testing

Tests are provided for unpipelined, pipelined, radix2 and radix4 additions using native and prefix-tree adders with widening.

Backwards-compatibility

Is this a breaking change that will not be backwards-compatible? If yes, how so?

No.

Documentation

Does the change require any updates to documentation? If so, where? Are they included?

Yes, a reduction_tree markdown with code example is provided.

@desmonddak desmonddak requested a review from mkorbel1 January 12, 2025 22:26
@mkorbel1 mkorbel1 linked an issue Jan 14, 2025 that may be closed by this pull request
Copy link
Contributor

@mkorbel1 mkorbel1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great!

/// the tree is: depth + flopDepth * depthToflop;
int get depth => _computed.depth;

/// The flop depth of the tree from the output to the leaves.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this equal to the latency in cycles?

/// needed in the tree, otherwise use zero-extension (default).
///
/// Optional parameters to be used for creating a pipelined computation tree:
/// - [clk], [reset], [enable] are optionally provided to allow for flopping.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the enable like a stall?

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.

Add a tree component
2 participants