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

Migration towards C++ and eventual deprecation of Python #8

Open
16 of 25 tasks
vedadux opened this issue Aug 24, 2022 · 0 comments
Open
16 of 25 tasks

Migration towards C++ and eventual deprecation of Python #8

vedadux opened this issue Aug 24, 2022 · 0 comments
Assignees
Labels
Milestone

Comments

@vedadux
Copy link
Collaborator

vedadux commented Aug 24, 2022

Coco has been in development for a long time now. Over the years, we have changed many things and Python was good for prototyping. However, it is now at a point where not even I can properly distinguish internal data structures, modes and what code is not in use. This needs to change. Python extremely exacerbates the problems of documentation and things are always in flux and prone to change. It promotes worse data structure organization among other things. Typing issues, runtime exceptions, most of which would be preventable. On top of everything, it is also super slow.

The long term plan is switching to C++. To make sure we do not repeat the same mistakes, we will require everything to be documented on commit, and tested with the CI workflow. This issue is supposed to track all of the steps that take us to a full implementation.

  • Protect the master branch.
  • Create a cpp-dev branch for development.
  • Create a cmake project and include solver, json, options and other libraries.
  • Create better sat solver interface based on IPASIR
  • Migrate PropVarSets from other project.
  • Add optimizations and alternatives for non-linear operations
  • Enable unit testing of components with CTest
  • Write tests for the SatSolver interface
  • Rework concept and interactions within the verification process
  • Decide on best structure -> reduce outer dependencies
  • Finish migrating CircuitGraphCircuit class from other project.
  • Create new structure for Cells, based on unions
  • Implement execution semantics for all non-async Yosys cells
  • [important] Make tests for execution semantics of all yosys cells
  • [optional] Make it possible to create a Circuit without Yosys
  • Create a unified structure for symbolic (PropVarSet) and concrete execution values
  • Create Verification managerSimulator class based on the Circuit class
  • Enable Simulator to maintain symbolic values on demand
  • Implement debugging features for the Simulation (custom vcd generation)
  • Implement proper Value caching utilities, that are respected by the operators
  • Implement the verification routines
  • [Milestone] Get first working Coco version.
  • Implement optimizations:
  • ...
  • [Milestone] Release Coco 1.0
@vedadux vedadux added the coco++ label Aug 24, 2022
@vedadux vedadux added this to the Coco in C++ milestone Aug 24, 2022
@vedadux vedadux self-assigned this Aug 24, 2022
@vedadux vedadux pinned this issue Aug 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant