T
T
Turbo2013-02-27 15:49:53
Algorithms
Turbo, 2013-02-27 15:49:53

Minimizing boolean functions?

Hello. I am working on solving this problem. There is a large non-standard logical multi-input function given by a truth table (for definiteness, let there be 16 bits at the input, 8 bits at the output). Next, we minimize the truth table in one of the ways (in our case, the Espresso algorithm). And we generate the following construction for each output bit:

assign X[2] = ( A[1]&~A[0]& B[1]) | ( A[1]& B[1]&~B[0]) | (~A[2]&~A[1]&~A[0]& B[2]) | ( A[2]&~A[0]&~B[2]&~B[1]) | ( A[2]& A[0]& B[2]& B[0]) | (~A[2]&~A[1]& B[2]&~B[0]) | ( A[2]&~B[2]&~B[1]&~B[0]) | (~A[2]&~A[1]& A[0]& B[1]& B[0]) | ( A[1]& A[0]&~B[2]&~B[1]& B[0]);

assign X[1] = ( A[2]&~A[0]& B[2]) | ( A[2]& B[2]&~B[0]) | (~A[2]&~A[1]&~A[0]& B[1]) | ( A[1]&~A[0]&~B[2]&~B[1]) | ( A[1]& A[0]& B[2]& B[0]) | ( A[2]& A[0]& B[1]& B[0]) | (~A[2]&~A[1]& B[1]&~B[0]) | ( A[1]&~B[2]&~B[1]&~B[0]) | (~A[2]&~A[1]& A[0]&~B[2]&~B[1]& B[0]);

assign X[0] = (~A[0]& B[0]) | ( A[0]&~B[0]);
Next, we model the resulting element in one of the CAD systems for speed, area and power. This is where the problem arises. With speed, everything is fine, but the area is very large. I have done small experiments to reduce the size of boolean functions by introducing additional variables and bracketing large common parts. And it works - the area is reduced by two or more times while maintaining speed. However, I don't want to reinvent the wheel.
And now attention to the question, are there any well-known algorithms that solve a similar problem, what are they called in Russian or English? Thank you all for your help.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Vest, 2013-02-27
@Vest

If I'm not mistaken, then you need Karnot maps to simplify logical operations.

K
kruzhevnik, 2013-05-25
@kruzhevnik

In fact, Espresso seems to be able to minimize boolean function systems - accordingly, the general subexpressions that you have allocated into separate variables should be used there. But perhaps Espresso considered such options not ideal. You can try to somehow play with the minimization options (I can’t tell you, not an Espresso connoisseur).
It was said above that Karnot maps for a large number of variables are inconvenient, but I don’t think so;) Bring your system in full, and I’ll try to do something with it. And calculate the complexity of your decision according to Quine, so that I have something to focus on.
As for Karnot's maps, and why it seems to me that they are quite convenient - I'm just the author of one of the softkeys for Karnot's Maps, and I'm thinking of writing an article about it - please take a look at Q&A. In principle, QCs are of little relevance now in real development, but I'm wondering if they can help in cases like this.

K
kruzhevnik, 2013-05-26
@kruzhevnik

It’s clear, that’s what I’m looking at, it’s not very similar to Espresso. Anyway, I'll see what I can do

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question