Skip to content
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

Add abstract pass for formal verification #4894

Open
wants to merge 23 commits into
base: main
Choose a base branch
from
Open

Conversation

widlarizer
Copy link
Collaborator

@widlarizer widlarizer commented Feb 11, 2025

This PR adds a new abstract pass to allow reducing and never increasing the constraints on a circuit's behavior in a formal verification setting. This pass allows removing init attributes (-init) and multiplexing arbitrary wires (-value mode) or flip flop internal states (-state mode). It is intended to be used with narrow selections. Debug logs explain which changes are triggered by which selected objects.

  • enable abstract -value to work on module inputs, not just cell outputs
  • proper testing
  • help message

widlarizer and others added 22 commits February 18, 2025 17:08
In the past we had the occasional bug due to some place not handling all
4 combinations of upto/downto and zero/nonzero start_offset correctly.
This fixes the offsets_to_abstract collection in abstract_state so that
it now works the same way as in abstract_value which was already
correct.
Also improves -enable and -enablen command line handling
Print the port bit instead of the arbitrary representative sigbit to
identify the target of the abstraction operation.
@widlarizer widlarizer marked this pull request as ready for review February 19, 2025 22:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants