Logic design is the discipline of computer chip design. These chips sit at the foundation of what a computer is and does. The mechanisms inside computer chips manage manage electrical signals.

The core building blocks of a chip are logic gates—see previous post here—and the core language used to describe them is boolean algebra.

A chip, therefore, is nothing more than a gate. And a gate, in turn, is just a simple chip. A complex chip is made of simpler chips, or gates. This is all akin of legos and in its modularity.

A chip has two parts: its' interface, and architecture.

The interface is made of inputs, an output, and a broad idea of its functionality. The architecture, in turn, is made of smaller building blocks that make the functionality possible. The interface is the **what**, the architecture the **how**.

A chip can only have one interface; but it can have many possible architectures, some more efficient than others. This internal architecture of a chip is what the discipline of logic design concerns itself with.

A reminder, we're still very much in the world of binary. Both input and output will always be a zero or a one.

Now, some practical examples.

### AND(a, b, c)

Let's take a three-input AND gate.

This means, as expressed in the truth table, that this gate only outputs 1 when all three inputs are 1. This, in essence, is a slightly more complex version of the elementary AND gate.

The challenge now is: how can we build this three-input AND gate using only elementary logic gates (our building blocks). We can do this using two AND gates. Let's deconstruct the function into an expression of this architecture.

This, in turn, translates into this diagram. The outer AND is the gate on the right and the inner AND serves as input to it. The input a, b, and c are completely interchangeable.

As specified, given that our entire architecture is made of AND gates, only when all inputs are 1 will the output be 1.

This is a composite gate; a gate made of other gates. Once built, composite gates can also become the elementary gates for more complex chips.

### Xor(a, b)

Another example, the Xor gate, or exclusive OR gate. This gate outputs 1 when only one of its outputs is 1. This Xor gate can be expressed using the following truth table.

he Xor gate can be expressed using the canonical representation expression: A and NOT b or B and NOT a. One for each of the two rows in the truth table above that have 1 as the output.

This can be mapped onto a full boolean expression.

And into the following diagram. The two inputs connect transversally into two different AND gates; in their normal state and in their negated state (NOT); the outcome of that is then inputed onto the final OR gate.

Xor's architecture is composite and its interface simple. Two inputs, one output, and a generic icon to express it.

This is the essence of logic design. To design an architecture of elementary gates that takes a given input and matches it to the desired output.

It's pure logic.