and this 1;

and also when both x1 and x0 are equal to 1;

So we get this 1 and this 1.

So, we have checked that this is a

correct expression for representing this function B and

also that this function B is compatible with

the initial definition. We can do the same in the case

of function C. Once again, you can check that for all

input values corresponding to digits 0 to 9 the new

function C is compatible with the initial table.

You can also check that this is correct expression to

represent function C and that it is simpler than

this other expression obtained by replacing all "don't care's" by 0's.

Here is a summary of the complete

optimization of this BCD to 7-segment decoder.

If we give the value 0 to all "don't care's",

we get this set of Boolean expressions

and the corresponding circuit would have 35 logic gates.

On the other hand, looking for an optimum choice of the "don't care's",

we would obtain the following expressions and the corresponding

circuit would include 26 gates. Now, some information about the

synthesis tools, that is to say, software tools that generate

optimized circuits. Starting from either logic expressions or from tables.

Two basic concepts will be used: cubes and adjacency.

First, what is a cube? The set of n-component binary vectors B·2**n

can be considered as a cube of dimension n, actually as an hypercube.

For example with n equal to 3, the set of eight binary vectors is this one

and can be represented under the form of a cube. Then,

a subset of of B·2**n defined by giving a constant value to some, for example,

to m vector components, is a cube of dimension n-m.

In this cube, if the first coordinate is equal to 0,

then we get the following subcube of dimension 2,

actually a square. Assume now that N is equal to four and

consider the function F equal to a product of literals.

This product is equal to 1 if x2 is equal to 1

and X0 is equal to 0, so that

the set of points where F is equal to 1 is

a cube, this one, of dimension 2.

Thus we see that a cube is a set of points of B·2**n

where a product of literals is equal to 1.

Next point: how can we represent cubes,

specially within our computer system? For that, we define an order

of the variables, for example, n-1, n-2,

down to 0. Then once an

order has been defined, a cube can be represented by a sequence

of n characters belonging to the

set {0, 1, x}. Let us see an example with

n = 4. The sequence 1x01 represents

the set of binary vectors with four

components such that x3 is equal to 1,

x1 is equal to 0, and

x0 is equal to 1. It corresponds

to the product of literals

x3·not(x1)·x0. Another example:

the sequence x1x0 represents

a cube with x2 equal to 1 and

x0 equal to 0, and corresponds

to this product of literals:

x2·not(x0). So, the rule is very simple: