enforce that hdlname/scopename is used consistently with public/private names #4842
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What are the reasons/motivation for this change?
A number of passes and utilities use code of the shape
if(foo->name.isPublic()) { foo->get_hdlname_attribute(); }
which doesn't work as expected if the implicit invariant to usehdlname
on public objects andscopename
on private objects isn't upheld. Since this invariant is easy to break accidentally, enforce it.Explain how this is achieved.
Add checks in
Module::check()
to make sure the invariant holds for Module, Wire, Cell, and Memory names. (Should processes also be checked?)If applicable, please suggest to reviewers how they can test the change.
Run larger flows and examples, and rarely used passes, especially in combination with
flatten -scopename
.