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

Use ABC as an external process #562

Closed
atomb opened this issue Oct 3, 2019 · 1 comment
Closed

Use ABC as an external process #562

atomb opened this issue Oct 3, 2019 · 1 comment
Assignees
Labels
breaking A change that will break backward compatibility type: bug Issues reporting bugs or unexpected/unwanted behavior type: enhancement Issues describing an improvement to an existing feature or capability
Milestone

Comments

@atomb
Copy link
Contributor

atomb commented Oct 3, 2019

Currently, we link with ABC as a static library. This provides a tightly-integrated system with good performance. However, it leads to significant build difficulties (including the inability to build on Windows recently, due to recent additions of C++ to the ABC codebase) and hard-to-diagnose bugs.

Since we already depend on one external solver (Z3), depending on ABC as an external binary isn't a huge additional burden.

Allowing ABC to be invoked as a separate process would resolve many open bugs (including probably #54, #55, #76, #156, #233, and maybe others).

The key consideration for performance would be to support word-level interaction with ABC. We can currently do this from Cryptol using ABC's SMT-Lib interface. However, this only supports description of predicates, not arbitrary functions. To make best use of ABC's equivalence checking functionality, comparing distinct functions is sometimes useful. To support this, it seems as though a restricted subset of Verilog may be the best-supported word-level input format for ABC.

@atomb atomb added type: bug Issues reporting bugs or unexpected/unwanted behavior type: enhancement Issues describing an improvement to an existing feature or capability labels Oct 3, 2019
@atomb atomb added this to the 0.4 milestone Oct 3, 2019
@atomb atomb modified the milestones: 0.4, 1.0 Oct 16, 2019
@atomb atomb modified the milestones: 0.5, 0.6 Mar 24, 2020
@atomb atomb added the breaking A change that will break backward compatibility label Apr 20, 2020
@atomb atomb self-assigned this Jun 18, 2020
@atomb atomb modified the milestones: 0.6, 0.7 Aug 26, 2020
@atomb atomb closed this as completed Dec 15, 2020
@RyanGlScott
Copy link
Contributor

See #1004 (comment) for some of the aforementioned build difficulties on macOS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking A change that will break backward compatibility type: bug Issues reporting bugs or unexpected/unwanted behavior type: enhancement Issues describing an improvement to an existing feature or capability
Projects
None yet
Development

No branches or pull requests

2 participants