circt
circt copied to clipboard
[FIRRTL] Inliner: Support for ops with regions.
inlineInstances/flattenInstances:
- Walk entire body, not only top-level operations. Fixes missing instances and allows inlining them when conservatively legal.
- Reject inlining instances under when/match.
inlineInto/flattenInto:
Walk entire body using new inliningWalk
method
that drives the per-operations handling but also
handles cloning "structure" operations that have
regions (when/match/layer) and managing what
should be cloned where.
This allows inlining modules that contain these operations.
Inliner now may produce errors, thread throughout.
This allows the inliner to run earlier in the pipeline, particularly before LowerLayers.