Skip to content

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

@vedadux

Description

@vedadux

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions