Lab 7 - EE 421L
Lab Purpose
The
purpose of Lab 7 is to introduce buses and arrays. These buses and
arrays will then be used in the design of word inverters, muxes, and
adders.
In the prelab, I followed tutorial 5 which went over the design and layout of a ring oscillator.
Here is the first schematic I created without the use of arrays.


After that, I used the array functionality of cadence in order to condense the ring oscillator design.
With this new technique, the schematic looks like this.

After that, I moved onto the layout of the ring oscillator. I basically duplicated 31 inverters in a row and connected them. The finished layout is shown below.

Here is a closer view of one of the inverters with the visible pin labels.

Here's the extracted version.

Finally, I made sure that my layout was DRC and LVS clean.


With that out of the way, I finally created a symbol for the ring oscillator which is displayed below.

Here's the schematic that I used for testing the symbol.

Lastly, here's the graph that the ring oscillator produces.

Lab
For
the lab, I first created an 4-bit inverter. Then, I created 8-bit
input/output array of the NAND, NOR, AND, inverter, and OR gates.
After
that, I created an 8-bit wide DEMUX/MUX schematic and symbol. Finally,
I designed the schematic and layout for an 8-bit full-adder that
utilized 6u/0.6u NMOS and PMOS devices.
4-bit Inverter
First, let's start with the 4-bit inverter.
1-bit Inverter Schematic

1-bit Inverter Symbol

4-bit Inverter Schematic

4-bit Inverter Symbol



8-bit NAND Gate
1-bit Transistor Level Logic

Schematic

Symbol

8-bit NOR Gate
1-bit Transistor Level Logic

1-bit Nor Symbol

Schematic

Symbol

8-bit AND Gate
Schematic

Symbol

8-bit OR Gate
Schematic

Symbol

Simulation of NAND, NOR, AND, inverter, and OR gates
Schematic

Graph

DEMUX/MUX
Next, I created a demux/mux circuit.
Schematic

Symbol

Schematic for simulation of MUX

Graph

A mux basically chooses which input signal passes through. In the case of the one I built, when S is 1, A is outputted to Z. When Si is 1, B is outputted to Z.
Simulation of DEMUX

I added capacitors to outputs A and B to save the previous values.
Graph

The demux basically does the opposite of the MUX. Z is the input that determines the value of the outputs A and B. When S is 1, A outputs Z's value. When Si is 1, B outputs Z's value.
8bit 2 to 1 MUX
1bit MUX Schematic

1bit Symbol

8bit Schematic

8bit Symbol

Simulation Schematic

Simulation Graph

When S is 1, Z outputs A which is 0. When S is 0, Z outputs B which is 1.
8bit 2 to 1 DEMUX
Simulation Schematic

Graph

Depending on whether S is 1 or 0, that determines whether Z is written to the A output array or the B output array. When S is 1, Z is outputted to A. When S is 0, Z is outputted to B.
8-bit Full-adder
For the final portion of the lab, an 8-bit full adder will be created that is based upon the topology shown in Fig. 12.20 in Dr. Baker's Circuit Design Textbook.
1-bit Schematic

1-bit Symbol

1-bit Layout

1-bit Extracted

1-bit LVS/DRC


After completing the 1-bit full adder, I duplicated it in order to created an 8-bit full adder.
8-bit Schematic

8-bit Symbol

8-bit Layout

8-bit Layout Labels

8-bit Extracted

8-bit DRC/LVS


After creating the layout and schematic for the 8-bit full-adder, it was time to simulate it.
Simulation Schematic

Simulation Graphs



The two numbers being added are A = 11110000 and B = 11000011. The result should be Cout = 1 and S = 10110011, and this result is seen in the graphs.