3

I am trying to simplify a Boolean expression with exactly 39 inputs, and about 500 million - 800million terms (as in that many and/not/or statements).

A perfect simplification is not needed, but a good one would be nice.

I am aware of the K-maps , Quine–McCluskey, Espresso algorithms. However I am also aware that these mechanisms would take way too long to simplify a circuit of this size based on what I have read

I would need to simplify this expression as much as possible within a 24 hour period.

After google searching, I find it difficult to find any resources for attempting to simplify a machine of quite this magnitude! Any resources out there or a library out there that can attempt to at least simplify this to some extent within a 24 time period?

user761996
  • 83
  • 1
  • 8
  • What do you mean by "terms"? AND conjunctions? How many of the 39 variables are present in a term on average? What reduction would be regarded "good"? It would help to see a small sample of typical terms. – Axel Kemper Nov 20 '15 at 20:03
  • Out of curiosity, using your specific definition of _term_, how many unique terms are possible for 39 inputs? It sounds like there might be lots of duplicates. – 500 - Internal Server Error Dec 03 '15 at 23:17

2 Answers2

5

A greedy heuristic Simplify is described in the somewhat dated book

Robert K. Brayton , Gary D. Hachtel , C. McMullen , Alberto Sangiovanni-Vincentelli Logic Minimization Algorithms for VLSI Synthesis

You can find the chapter online.

Simplify is based on the unate paradigm. In divide-and-conquer style, it recursively applies Shannon's expansion theorem to split the function into smaller sub-functions. The heuristic rule is to split by the most binate variable first, i.e. the variable which separates the largest number of terms.


A second approach could be to use graph partitioning tools like METIS to split the terms into independent (or at least loosely related) subsets. But I am not aware that this has been tried sucessfully for logic synthesis tasks. My favorite search engine is sceptical and does not return any hits.


A more recent algorithm based on Binary Decision Diagrams was published in

Olivier Coudert: Doing Two-Level Logic Minimization 100 Times Faster

The paper lists examples with very high number of terms similar to your task at hand.

A somewhat related simplification technique BDD Sweeping as described in A Study of Sweeping Algorithms in the Context of Model Checking.

Axel Kemper
  • 10,544
  • 2
  • 31
  • 54
0

This is a duplicate question. See https://stackoverflow.com/a/60535990/1531728 for resources about logic optimization, or simplication of boolean expressions.

Giovanni
  • 101
  • 3
  • 13