[HW][SV] Factor out inline utils
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 524
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
There is fragmentation regarding inlining HW modules. ExtractTestCode has an ad hoc implementation of inlining empty modules and https://github.com/llvm/circt/pull/6450 is implementing a functionality to inline memory modules for optimizing empty modules. Also I see another inliner implementation in sifive internally. Since it's somewhat tricky to implement inliner right because of inner symbols or hierpath, so it would be necessary to create single correct implementation of inliner utils in CIRCT.
The inliner has to:
* Correctly update inner symbols in the inlined module and instance
* Correctly update hierpath
* Remove sv.bind
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by comparing ExtractTestCode's inlining implementation with the memory-module inliner described in pull request 6450, and note the additional inliner implementation mentioned in the issue. Define a shared CIRCT utility whose completed behavior covers inner symbols, hierpaths, and removal of sv.bind.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100