-
Notifications
You must be signed in to change notification settings - Fork 28
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
Consider/Add "Strict Connect" Operation #61
Comments
Why is
Point 1. is clearly fulfilled (the widths are 1 for
So I would say that, despite the obvious intention of yours, point 2. is also fulfilled and, hence, Ideas:
|
Updated the above. This was missing an additional restriction on equivalent widths. Fair point about |
Now that partial connect is removed and connect has width truncation/extension behavior, we should consider adding a new connect operation that has stricter semantics. I.e., a connect operation which mandates: (1) known widths, (2) type equivalence, and (3) width equivalence.
We've been using this inside CIRCT for almost a year and it's proved incredibly useful.
I'm using made-up syntax here (
<==
). The following example shows what is legal and illegal:It continues to be true that type equivalence holds, e.g.,:
The main benefit of this is that it is a connect that is amenable to folding (replacing a connect operation with its operand) without any creation of a new pad/tail operation. This also may help provide strict connect semantics to Chisel.
Note: the strict connect op cannot be used to exclusively replace connect in situations where uninformed widths are present.
The text was updated successfully, but these errors were encountered: