-
Notifications
You must be signed in to change notification settings - Fork 641
[core] Add initial domain support #5041
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
Conversation
ce1f528
to
74f1910
Compare
Extend the allowed binary incompatibility for more problems in `chisel3.internal.firrtl.ir*` and the same set of problems in `firrtl.ir*`. This is in support of allowing breakages that are necessary to represent domain associations. Signed-off-by: Schuyler Eldridge <[email protected]>
74f1910
to
e40332d
Compare
Add support for creating domains and domain types. Add a built-in ClockDomain type. This is very basic support initially and many things will not work, namely connections or compilation of these to anything meaningful. Signed-off-by: Schuyler Eldridge <[email protected]>
e40332d
to
92af846
Compare
/** A [[Data]] that is used to communicate information of a specific domain | ||
* kind. | ||
*/ | ||
final class Type private (val domain: Domain) extends Element { self => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does a domain.Type
really need to be an Element or Data at all?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They do need to be ports, so I think it would either be changing the type that IO
accepts or adding a new IO creation method just for domain.Type
. Either of these is doable.
The more critical thing would be that I expect libraries that assume everything in Chisel can be shoved into a Wire
, like diplomacy, will want to put domain.Type
into a wire. We might be able to avoid this with changes to libraries so that they don't use a single Wire
. (This is related to what I was talking to you offline about assuming everything can go into a Bundle
is making things hard.) WDYT?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah I see, then I think Element
is right. If these need to be ports and wired through then I think they run into the same needs as other things like Properties
. As in the larger conversation about Bundles
, maybe there's a better way out there but there has to be some way to compose these things together and Bundle
(well Record
) remains the only existing avenue.
Add a new method for creating a `domain_define` FIRRTL operation. This is used to forward a domain from one data to another, similar to `probe.define`. Signed-off-by: Schuyler Eldridge <[email protected]>
Changes addressed and I added support for a new |
Add support for creating domains and domain types. Add a built-in
ClockDomain type.
This is very basic support initially and many things will not work, namely
connections or compilation of these to anything meaningful.
Release Notes
Add initial support for creating domains. These are intended to model things like clock, reset, and power domains and their associations to ports in the design.