Skip to content
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

[FIRRTL] Make IMDCE work for ops w/ regions/blocks #7881

Merged
merged 2 commits into from
Nov 26, 2024

Commits on Nov 26, 2024

  1. [FIRRTL] Add memory traits to layerblock

    Add recursive memory effects and speculatable to `firrtl.layerblock`.
    These operations, in and of themselves, have no effects.  However, they
    have effects if any of their constituent operations have effects.  The
    addition of these traits allows other passes, which make assumptions about
    whether or not operations can be deleted, e.g., IMDCE, to delete
    `firrtl.layerblock` operations when they see them.
    
    Co-authored-by: Robert Young <[email protected]>
    Signed-off-by: Schuyler Eldridge <[email protected]>
    seldridge and rwy7 committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    a664331 View commit details
    Browse the repository at this point in the history
  2. [FIRRTL] Make IMDCE work for ops w/ regions/blocks

    Fix a bug in FIRRTL's IMDCE Pass where it would not visit the blocks of
    operations.  This can result in crashes for blocks which contain users of
    FIRRTL modules, e.g., instances inside layerblocks of sv.ifdef.
    
    This conceptually is two changes: (1) when marking a block live, the block
    needs to be recursively walked and (2) when erasing ops, a recursive walk
    is needed.
    
    Signed-off-by: Schuyler Eldridge <[email protected]>
    seldridge committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    d006c2c View commit details
    Browse the repository at this point in the history