QMCMinimizer

chisel3.util.experimental.decode.QMCMinimizer
object QMCMinimizer extends Minimizer

A Minimizer implementation to use Quine-Mccluskey algorithm to minimize the TruthTable.

This algorithm can always find the best solution, but is a NP-Complete algorithm, which means, for large-scale TruthTable minimization task, it will be really slow, and might run out of memory of JVM stack.

In this situation, users should consider switch to EspressoMinimizer, which uses heuristic algorithm providing a sub-optimized result.

Attributes

Source
QMCMinimizer.scala
Graph
Supertypes
class Minimizer
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

Minimize a multi-input multi-output logic function given by the truth table table, with function output values on unspecified inputs treated as default, and return a minimized PLA-like representation of the function.

Minimize a multi-input multi-output logic function given by the truth table table, with function output values on unspecified inputs treated as default, and return a minimized PLA-like representation of the function.

Each bit of table[]._1 encodes one 1-bit input variable of the logic function, and each bit of default and table[]._2 represents one 1-bit output value of the function.

Value parameters

table

Truth table, can have don't cares in both inputs and outputs, specified as [(inputs, outputs), ...]

Attributes

Returns

Minimized truth table, [(inputs, outputs), ...]

Example
        minimize(BitPat("b?"), Seq(
            (BitPat("b000"), BitPat("b0")),
            // (BitPat("b001"), BitPat("b?")),  // same as default, can be omitted
            // (BitPat("b010"), BitPat("b?")),  // same as default, can be omitted
            (BitPat("b011"), BitPat("b0")),
            (BitPat("b100"), BitPat("b1")),
            (BitPat("b101"), BitPat("b1")),
            (BitPat("b110"), BitPat("b0")),
            (BitPat("b111"), BitPat("b1")),
        ))
Source
QMCMinimizer.scala