llvm / llvm/circt

[HW][SV] Factor out inline utils

Open
#6,493 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.