-
Notifications
You must be signed in to change notification settings - Fork 594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Equivalence check failure due to non-unique resizer nets #6545
Comments
@andyfox-rushc left this comment on makeUniqueNetName
Maybe we can fix this bug too, but given that we need to avoid conflict with a user net named |
Does eqy assume that if the nets have the same name they must match? |
Yes |
That doesn't seem like a good idea. For sequentials it makes some sense as you need some anchor points. Beyond that you should be proving equivalence rather than relying on names. |
It depends on how we configure it, but it's the default assumption. The new equivalence checker from YosysHQ might be able to recover from some names not matching, but that's far out from being available. FWIW I think the principle of not reusing the same name for non-matching nets is a powerful principle and one that's been helpful in Yosys development, and we try e.g. to make Yosys rename a net if it changes the net's function as a result of an optimization. If you don't think the same is desirable for OR we can close the ticket. |
The LEC failures should be fully addressed by The-OpenROAD-Project/OpenROAD-flow-scripts#2693 |
In a single run OR would do the same. Does yosys have this property across runs? I think it is nice for developers to avoid reusing names for traceability but it shouldn't be a requirement for LEC. I am ok with adding it to the db for nets & insts as it won't take much space. |
Yes, if you work on the same design over multiple runs the counter is saved as part of the |
Describe the bug
EQY can fail to prove equivalence if the resizer reuses the same net name. Net names are generated by the code below,
but due to
unique_net_index_
being reset each time the openroad process is restarted, the same name can be used twice.The exact sequence of events observed is:
repair_design -buffer_gain
insertsnet28
driven by a buffer at floorplan timerepair_timing
at cts time removes the buffer from above, appliesNet::mergeNet
tonet28
, and picksnet28
for the name of an unrelated netnet28
before and after is functionally equivalent, fails to prove equivalence of the designExpected Behavior
Resizer nets are assured unique over a flow spanning multiple openroad processes. The counter for net naming could be saved as part of the database
Environment
To Reproduce
No reproducer, sorry!
Relevant log output
Screenshots
No response
Additional Context
No response
The text was updated successfully, but these errors were encountered: