Project - EE 421L 

Authored by Henry Chan,

chanh6@unlv.nevada.edu

24 November 2014

  

This project is meant to design, layout, and simulate an 8-bit ALU that can perform: A and B, A or B, A + B (addition), and A - B (subtraction).

 

Part I - Schematics, Symbols and Simulations

This is the first half of the project (no layout, just schematics and symbols), of my design and a report detailing operation (including simulations).

 

The ALU has the following inputs:

A (8-bits)

B (8-bits)

F (2-bits) <- Selection Pins

The ALU has the following outputs:

Z (8-bits)

 

In previous labs, we created the necessary AND and OR gates (lab7). Now, we need to create an adder/subtractor circuit. The circuit I decided to incorporate involves using an fulladder, mux, and inverter. The image of the schematic can be seen below:

images/adder_subtractor_schematic.JPG

This circuit will provide A+B functionality when D=0 and A-B functionality when D=1.

The symbol for this circuit is seen below.

images/adder_subtractor_symbol.JPG

Next, it becomes necessary to create an 8-bit version of this adder/subtractor. Using a concise method of naming instances, the following schematic was created to represent the 8-bit version of the adder/subtractor.

images/8adder_subtractor_schematic.JPG

Notice the single wire for all D inputs, however only the first instance I0 will use D for Cin. The other instances will use their previous neighbor's Cout values for Cin.

 

After the adder/subtractor is made, the ALU is now formed.

images/8alu_schematic.JPG

The ALU follows the operations:

F0F1Operation
00AND
01OR
10A+B
11A-B

A symbol is then created for simulation purposes.

images/8alu_symbol.JPG

In order to verify the function of the ALU, a simulation schematic was setup.

images/8alu_sim_schematic.JPG

The results are as follows:

76543210Decimal
A0101001183
B0011010153
Z
F=00, AND00010001
F=01, OR01110111
F=10, A+B10001000136
F=11, A-B0001111030
 

 Simulation Plot:

F inputs:

images/8alu_sim_plot_F.JPG

A inputs:

images/8alu_sim_plot_A.JPG

B inputs:

images/8alu_sim_plot_B.JPG

Z outputs:

images/8alu_sim_plot_Z.JPG

 

This concludes Part I of the project. Files can be found here. Remember, some parts of the project are dependent on previous labs and it is important to include those parts when dealing with this project.

 

Part II - Layouts

 

This part of the project involves laying out the ALU.

 

There are multiple components that will be layed out individually, then combined to create the layout of the ALU.

The components that will be layed out individually are:


    - 8-bit AND

    - 8-bit OR

    - 8-bit MUX

    - 8-bit adder/subtractor

8-bit AND

We create the layout of the 8-bit AND gate by creating the individual AND gate layout. This individual AND gate layout was created by combining a NAND layout with an inverter layout.

images/layout/and2_layout.JPG

This individual layout was instantiated 8 times to form the 8-bit AND layout.

images/layout/8and2_layout.JPG

The layout DRCs and LVSs!

images/layout/8and2_layout_LVS_DRC.JPG

 

8-bit OR

We create the layout of the 8-bit OR gate by creating the individual OR gate layout. This individual OR gate layout was created by combining a NOR layout with an inverter layout.

 images/layout/or2_layout.JPG

This individual layout was instantiated 8 times to form the 8-bit OR layout.

images/layout/8or2_layout.JPG

The layout DRCs and LVSs!

images/layout/8or2_layout_LVS_DRC.JPG

 

8-bit MUX

We create the layout of the 8-bit MUX by creating the individual MUX layout.

images/layout/MUX_2_1_layout.JPG

 

This individual layout was instantiated 8 times to form the 8-bit MUX layout. Connections are then formed that are consistent with the design. Notice that S connects to each individual MUX such that the 8-bit MUX will select the same input pin (A or B) for every individual MUX.

images/layout/8MUX_2_1_layout.JPG

The layout DRCs and LVSs!

images/layout/8MUX_2_1_layout_LVS_DRC.JPG

 

8-bit Adder/Subtractor

We create the 8-bit Adder/Subtractor based on the schematic in Part I. We start by putting the inverter and MUX together.

images/layout/inverter_mux_layout.JPG

8 instances of this are used along with the previously created 8-bit fulladder/subtractor layout from lab 7.

 

fulladder layout:

images/layout/adder_subtractor_layout.JPG

8-bit fulladder:

../lab7/images/8fulladder_layout.JPG

8-bit fulladder/subtractor (inverter+mux+fulladder):

images/layout/8adder_subtractor_layout.JPG

Left view (closeup):

images/layout/8adder_subtractor_layout_left.JPG

Right view (closeup):

images/layout/8adder_subtractor_layout_right.JPG

It LVSs and DRCs!

images/layout/8adder_subtractor_layout_LVS_DRC.JPG

Now we can begin to create the ALU!

 

8-bit ALU

By combining all the previous layouts, we end up with the following:

images/layout/8alu_layout.JPG

Finally, the layout DRC and LVS checks out!

images/layout/8alu_layout_LVS_DRC.JPG

 

 
This concludes the project!

All parts of this project were created using components from two libraries: lab7 and proj

*** IT IS IMPORTANT TO INCLUDE BOTH LIBRARIES IN ORDER TO EXAMINE THE DESIGN ***

 

 

 

 

 

 

 

 

Backups were made using a cloud storage method.

images/backup.JPG

 

Return to EE 421 Labs