opt_reduce: keep at least one input to $reduce_or/and cells #4614
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.
When all inputs to a
$reduce_or
(resp.$reduce_and
) are0
(resp1
),opt_reduce
would remove them all leaving a zero width input to the cell. This can sometimes be poorly handled by other passes as in #4610, so this PR checks for that case and drives the cell by a constant.I haven't chosen to fully replace the cell as the logic in that function would turn e.g.
|{a, 1'b1, 1'b0}
into|{1'b1}
rather than1'b1
, so this is in keeping for the1'b0
case.opt_expr
easily eliminates this cell due to the constant input.