Fix &if crash after dch -f by leveling dangling choice nodes #467
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.
This PR fixes a reproducible assertion failure in
Gia_ManChoiceLevel()when running&ifon AIGs containing choices introduced bydch -f(reported in #466).##Root Cause
dch -fcan introduce choices that leave some AND nodes dangling (not reachable from CO/CI).Gia_ManChoiceLevelonly computes levels by traversing CO/CI, so dangling ANDs keep level 0 and trip the assert.Fix
Compute levels for any AND nodes that were not visited by the CO/CI traversal before the final assertion, so all ANDs have a valid level.
Test
abc -c "ra i10.aig; strash; dch -f; &get; &if -K 6;"