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

Allow LogicNets to bidirectionally drive operations which are just wires #532

Merged
merged 59 commits into from
Nov 25, 2024

Conversation

mkorbel1
Copy link
Contributor

@mkorbel1 mkorbel1 commented Nov 25, 2024

Description & Motivation

There are numerous operations on signals which in reality only represent wires. For example:

  • Subsets
  • Swizzles
  • Shifts by constants amounts
  • Reversing
  • Zero/sign extending
  • Replicating

Since there's no real logic on the path, it makes sense for LogicNets to support bidirectional driving across these gates. Additionally, some things (especially subsets and swizzles) are crucial for useful routing of LogicNet signals for connectivity -- otherwise only full-bus could be used effectively.

This PR introduces changes so that LogicNets can have bidirectional driving through these gates. It also fixes SystemVerilog generation so that the SV matches the behavior of the ROHD simulator with these new features.

Some other misc changes:

  • Const constructor updated so width is more intuitive.
  • Improved "unassignable" errors and marked more things as unassignable that should be.

Related Issue(s)

Fix #518
Defer #530 to later (prettier SV)

Testing

Added extensive testing for new functionality.

Backwards-compatibility

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

  • Behavior of LogicNets has changed, but it was arguably broken before, and not released previously (yet).
  • Const constructor updated so that specified width takes precedence over the inherent width of a provided LogicValue val.

Documentation

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

Updated user guide and CHANGELOG, in addition to the usual API doc updates.

@mkorbel1 mkorbel1 changed the title Allow LogicNets to bidirectionally use "gates" which are just wires Allow LogicNets to bidirectionally drive operations which are just wires Nov 25, 2024
@mkorbel1 mkorbel1 merged commit 4ed61b8 into intel:main Nov 25, 2024
3 checks passed
@mkorbel1 mkorbel1 deleted the netsubswiz branch November 25, 2024 23:29
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.

Swizzle/Subset for LogicNet's
1 participant