-
Notifications
You must be signed in to change notification settings - Fork 305
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FIRRTL][Dedup] Alter dedup group handling, avoid exponential behavio…
…r. (#6985) Transmute these annotations to simple (temporary) attributes on modules. This causes the desired behavior for hashing and since this must match, when deduplicating no work is needed. Presently, as annotations, each module dedup'd into the group walks all annotations and "adds context" (makes them non-local) and interns a new annotation array with those annotations. At the end of the pass, all dedupGroup annotations are removed. This causes a lot of unnecessary symbols, hierpaths, annotations, and arrays of annotations as well as some quadratic behavior. DedupGroup annotations are commonly on every single module, so for those designs large dedup groups scaled poorly. Instead, drop these annotations immediately and add as a simple named attribute indicating the group. Drop the (temporary) dedup group attributes at end of pass, as they are just an in-IR way to track this per-module during the pass. Fixes #6979. Also: Cleanup all module-like's, not just fmoduleop's. Pre-existing that caused these to persist to LowerToHW which generated warnings about them (on non-fmoduleop fmodulelike's). Now, prune the attribute added (on all) so they don't leak past.
- Loading branch information
Showing
1 changed file
with
39 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters