[core] Deprecate BlackBox in favor of ExtModule #5103
Draft
+327
−145
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Deprecate BlackBox and tell users to switch to ExtModule. BlackBox has a
ton of baggage associated with it, due to it mandating, at runtime, a
single
val iocall and no additional calls toIOwhile also magicallyremoving the
io_prefix in the generated FIRRTL.ExtModuleis farcleaner and works as a user would expect. You can call
IOas much asyou want. No magic prefixing happens.
This is slightly unfortunate as one could argue that
BlackBoxis a goodname. However, you can also argue (more strongly I would add) that this
is an "external module" and it would be better to call it as such. If
this is controversial, we can consider a migration back from
ExtModuleto
BlackBox.Migrate some tests that were only testing blackboxes to be duplicated in
the external module tests. This will allow us to just delete this test
later.
This has three motivations:
BlackBoxhas always been janky for the reasons above andExtModuleis the saner generator API.
It's bad to have two similar, though subtly different ways of doing
things.
The singular IO that
BlackBoxforces users to go through means thatBlackBoxcannot have domain information attached to it. Thisessentially means that
BlackBoxwill be essentially unusable untildomains gain support for being in subfields. It's easier to just
deprecate
BlackBoxthan to require that domains gain this complicatedfeature addition just now.
This is stacked on #5102.
Release Notes
Deprecate BlackBox in favor of ExtModule.