read_verilog/astsimplify: copy inout ports in and out of functions/tasks #5158
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?
Fixes #5157
Explain how this is achieved.
Previously,
inout
ports to tasks/functions were incorrectly handled as the code assumed ports were either input or output, soinout
ports would only have the values copied in, not out when they are instantiated. This change makes it two separate branches that can both be true (and uses->clone
methods so that both input and output get their own copies of the AST nodes if needed).If applicable, please suggest to reviewers how they can test the change.
I've added the testcases from the issue as well as some basic tests using each of the port types for functions/tasks. These all fail before this change.
This probably conflicts with #5135 but I don't imagine its hard to fixup either depending on which gets merged first