[FIRRTL] Dead port elimination on non-public module targeted by firrtl.simulation breaks verifier
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 524
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
If a `firrtl.module` is targeted by a `firrtl.simulation` op, IMDCE should not delete ports on the module, since those are checked by the verifier of `firrtl.simulation`. The workaround is to mark the module as public, but I'm not sure we'd want to enforce that. A pass modifying the IR in a way that breaks a verifier seems wrong.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the IMDCE pass and the verifier for firrtl.simulation operations. Reproduce the failure with a firrtl.simulation target on a non-public module, then verify that dead port elimination preserves the ports required by the verifier without requiring the module to be public.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100