Lab 7 - ECE 421L 

Authored by Kyle Abenojar, abenok1@unlv.nevada.edu

November 8th, 2023

 


Prelab:
For lab 7's prelab, we were tasked with completing Tutorial 5.

The first step was create a ring oscillator. We accomplished this by using 31 inverters connected in a row with the input of the first inverter tied to the output of the final inverter. Below was the schematic that I generated.
Pic1
   
The next step was to simulate our ring oscillator. I simulated my circuit with a transient analysis for 200 ns. As seen below, the output stays at 2.5V which is not what we expect. This is because we did not apply an initial condition to our simulation.
Pic2
     
So, to fix this we apply an initial condition to our output and set it at 0V.
Pic3

   
Now, when we simulate our circuit, we get oscillations from 0 to 5V as we expect.
Pic4
   
Now, we will learn how to use arrays to create a cleaner looking schematic. We can have the same results by creating the following circuit.
Pic5
     
And as expected, when we simulate the new schematic we get the same output as before.
Pic6
   
Next, we create a layout of our ring oscillator and perform a DRC to make sure our layout is clean..
Pic7
   
Then, we extract our layout and perform an LVS.
Pic8
Pic9
   
Next, we want to compare the operation of our schematic vs our layout so we go back and create a symbol for our ring oscillator.
Pic10
   
We then created the following schematic to test our ring oscillator.
Pic11
     
First we simulated the schematic of our ring oscillator and got the following.
Pic12
   
Then, we tested the extracted schematic and got similar results.
Pic13
     
   

Lab Report:
The first step of the lab was to create a four bit inverter using arrays. Below is my schematic and symbol for a four bit inverter.
Pic14
Pic15
   
Next, I simulated the operation of my inverter with the following schematic.
Pic16
   
And got the following output. As we can see, the larger the capacitive load, the longer it takes for the output of the inverter to charge. 1pF > 500 fF > 100fF, so as expected, it took out<1> the longest amount of time to reach 5V with out<2> and out<3> both getting faster with lighter loads. out<0> on the other hand has no capacitive load so it switches to 5V the fastest.
Pic17
   
The next step was to create an 8-bit NAND gate. Below is my schematic and symbol for my 8-bit NAND.Pic
Pic18
Pic19
   
I then tested my 8-bit NAND with the following schematic and got the following output. As expected, with the same inputs and no load on each output, we got the same output for each out bit. Each gate also had the expected outputs for a NAND gate.
Pic20
Pic21
   
Next, I made the following schematic and symbol for an 8-bit NOR gate..
Pic22
Pic23
   
I then tested the operation of my 8-bit NOR gate with the following schematic and got the following output.
Pic25
Pic25
   
The next gate I made was an 8-bit AND gate. I did this by connecting my NAND gate's output to an inverter. Below are my schematic and symbol.
Pic26
Pic27
     
I then tested the operation of my 8-bit AND gate with the following schematic and got the following output.
Pic28
Pic29
     
Next, I made the following schematic and symbol for an 8-bit inverter.
Pic30
Pic31
   
I then tested my 8-bit inverter's operation with the following schematic and got the following output.
Pic32
Pic33
   
The final gate I had to make was an 8-bit OR gate which I accomplished by connecting my NOR gate's output to an inverter. Below are my schematic and symbol.
Pic34
Pic35
   
I then tested the operation of my OR gate with the following schematic and got the following output.
Pic36
Pic37
   
Next, we were given the following schematic of a 2 to 1 MUX. The way this schematic works is that there is are four main inputs, A, B, S and Si. S and its inversion, Si, act as the select line input. When the S input is high, the input A is passed through to the output Z. When the S input is low, the input B is passed through to the output Z.
Pic38
Pic39
    
Using the given two to one mux, I made the following 8 bit wide two to 1 mux. An inverter was placed between the S input and Si so that the design only requires the S input. Below are the schematic and symbol.
Pic40
Pic41
   
Next, I simulated the operation of my design with the following schematic and got the following output.
Pic42
Pic43
   
We can use the same schematic to create a two to one DEMUX by flipping the inputs into outputs and the outputs into input as shown below. Now, we are passing the Z signal input and outputting it either to A if S is high or B if S is low.
Pic44
Pic45
  
Once again, I made an 8 bit wide two to one DEMUX similar to the MUX with an inverter between S and Si.
Pic46
Pic47
  
I then tested the operation of my DEMUX with the following schematic and got the following output.
Pic57
     
Output for A, the input Z is passed to A when S is high
Pic48
   
Output for B, the input Z is passed to B when S is low
Pic49
    
For the next part of the lab, I created a full adder using the And-Or-Invert (AOI) schematic. Figure 12.20 from the book was referenced to create the following schematic.
Pic50
Pic51
    
I then used this as the building block to create an 8 bit adder. Below are the schematic and symbol.
Pic52
Pic53

    
Next, I tested the operation of my 8-bit adder with the following schematic and got the following output.
Pic54
     
The S output is the total sum of the inputs A<0:7>, B<0:7> and Cin. In the simulation, A = 0000_1111, B = 0001_1111, and Cin = 1. Adding these together, we should get S = 0010_1111 which is what we get as seen below.
Pic55
     
The outputs Cout<0:7> are the carryouts of each full adder. Cout<0> is the carryout of the first adder, Cout<1> is the carryout of the second adder, and so on.
Pic56
     
The final step of the lab was to generate a layout for our 8 bit full adder. To do this, I first made the layout for an individual AOI Full Adder and ensured that it DRC'ed and LVS'ed.
   
Full Adder Layout:
Pic58
     
Full Adder Extracted View and LVS:
Pic59
Pic60
     
Once this was done, I was able to start working the 8-bit adder. First, I put two full adder layouts together and connected the Cout of the first adder to the Cin of the second adder.
Pic61
     
After that, I was able to use the copy tool to create 8 copies of the full adder layout. Then I added the proper input and output pins (input: Cin, A<0:7>, B<0:7>; output: Cout<0:7> S<0:7>) on metal 1. Once this was done I ensured that my layout DRC'ed and LVS'ed cleanly.
     
Full view of 8-bit Full Adder Layout:
Pic62
     
Partial Extracted view of 8-bit Full Adder:
Pic63
   
Full view of 8-bit Full Adder and LVS:
Pic64
Pic65Pic65

Return to 421L Labs