You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note that the title includes BlackBoxes defined in import chisel3._ code that use Bundles defined in import Chisel._ code, so this bug percolates into attempted migration to chisel3._ as well. You can connect to the fields of BlackBoxios just fine, but bulk connecting to the full aggregate doesn't work.
I'm almost certain the bug comes from the special case handling of BlackBox io. Since those Bundles are just kind of shims for "top-level" ports, the Bundle doesn't actually exist in the FIRRTL. And due to #595, bulk connect semantics for compatibility mode defined bundles take effect even when used in chisel3._ code.
Proposed solutions:
Hacky support for exactly this case--detect when the Bundle involved in a bulk connect is a BlackBox io and do something different
Adding a FIRRTL mechanism for bulk connecting to an instance could make the implementation of the bulk connect clean and provide a potentially useful Chisel API, but the detection is still one off
Generalized support for "shim" Bundles that actually inject their elements into their outer context
This could provide a reasonable solution for setName equivalent in Chisel3 #612 although I suspect actual "set name" support is still desirable
Unclear how this would work for a Vec of shim Bundles, maybe that would be illegal but shim Bundles would be legal in other Bundles and as IO?
Change the mechanism for BlackBoxes to use a FIRRTL "set name" API so that the Bundles are no longer shims
Major features:
- Added Interval type, as well as PrimOps asInterval, clip, wrap, and sqz.
- Changed PrimOp names: bpset -> setp, bpshl -> incp, bpshr -> decp
- Refactored width/bound inferencer into a separate constraint solver
- Added transforms to infer, trim, and remove interval bounds
- Tests for said features
Plan to be released with 1.3
Note that the title includes
BlackBoxes
defined inimport chisel3._
code that use Bundles defined inimport Chisel._
code, so this bug percolates into attempted migration tochisel3._
as well. You can connect to the fields ofBlackBox
io
s just fine, but bulk connecting to the full aggregate doesn't work.I'm almost certain the bug comes from the special case handling of BlackBox
io
. Since those Bundles are just kind of shims for "top-level" ports, the Bundle doesn't actually exist in the FIRRTL. And due to #595, bulk connect semantics for compatibility mode defined bundles take effect even when used inchisel3._
code.Proposed solutions:
Type of issue: bug report
Impact: no functional change
Development Phase: request
Other information
If the current behavior is a bug, please provide the steps to reproduce the problem:
You can run the following code:
What is the current behavior?
And it prints:
Clearly the
io <- ??
is wrong. Prior to the literal refactor, this errored with aNone.get
in the emitter.What is the expected behavior?
Obviously bulk connecting with the
io
of aBlackBox
should work.What is the use case for changing the behavior?
🐛🔨
The text was updated successfully, but these errors were encountered: