You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
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.
CircuitGraphCircuit class from other project.Verification managerSimulator class based on the Circuit classThe text was updated successfully, but these errors were encountered: