cjdrake / pyeda

Python EDA
BSD 2-Clause "Simplified" License
304 stars 54 forks source link

Implement MVL cube/cover data type in C/C++ #97

Closed cjdrake closed 7 years ago

cjdrake commented 10 years ago

The current truth table implementation is inadequate. Here is a partial list of grievances:

  1. The constructor is terrible (issue #86).
  2. Only supports 0, 1, X. Multi-valued logic (MVL) has some neat applications.
  3. Too much conversion is necessary to run the Espresso algorithm.
  4. No support for the more exotic cube/cover ops such as "sharp", "disjoint sharp", etc. (See Micheli 7.3).
  5. Doesn't scale well for large covers (many inputs) with lots of don't-cares.

At least one problem here is that the natural cover representation is a multi-output implicant. Need some clever way to reconcile this to the boolfunc.Function class.