Skip to content

Conversation

seldridge
Copy link
Member

@seldridge seldridge commented Oct 18, 2025

Add support for lowering firrtl.domain.define operations to
firrtl.propassign. This uses a technique similar to how the dialect
conversion framework works where unrealized conversion casts are used to
deal with the progressive lowering of ports by introducing "stubs" (0-1
placeholders) to allow ports to be erased and then "spliced" (1-1
conversions) after the ports are inserted with now-incompatible types
before finally converting defines to propassigns.

  • Corner cases with U-turns are sorted out.

Add support for lowering `firrtl.domain.define` operations to
`firrtl.propassign`.  This uses a technique similar to how the dialect
conversion framework works where unrealized conversion casts are used to
deal with the progressive lowering of ports by introducing "stubs" (0-1
placeholders) to allow ports to be erased and then "spliced" (1-1
conversions) after the ports are inserted with now-incompatible types
before finally converting defines to propassigns.

There are a few corner cases that still need to be sorted out involving
output domain ports and U-turns involving domains.

Signed-off-by: Schuyler Eldridge <[email protected]>
@seldridge seldridge requested a review from darthscsi as a code owner October 18, 2025 02:37
@seldridge seldridge changed the title [FIRRTL] Support domain.define in LoweDomains [FIRRTL] Support domain.define in LowerDomains Oct 21, 2025
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.

1 participant