Lab 7 - ECE 421L
Authored
by Michael Velasquez
velasm4@unlv.nevada.edu
October 20, 2021
Lab
description
Using buses and arrays in the design of word inverters, muxes, and high–speed adders
Prelab Content
The
prelab had students design, layout and simulate a ring oscillator using
the NOT gates designed in a previous lab. A ring oscillator
continuously inverts the signal between NOT gates as long as there is
an odd number. Below shows a portion of the schematic, the full design
contains 31 gates and cannot be shown fully.
After the schematic was finished, students were to simulate. The ADE and simulation settings are as shown below.
The
output of the oscillator is not as expected. This output shows a signal
that continously bounces around 2.5V. This is because no initial value
has been assigned, and it would take some time for the oscillator to
get started. In real circuits there is noise in any setting that can
jumpstart the oscillation.
To
fix this issue, we set an initial condition to our output note in the
ADE. For this example we set the node to a voltage of 0.
As you can see, the new simulation shows the intended results. This leaves the output bouncing from 0 to VDD continuously.
Having
a large amount of the same instances in a schematic leaves the design
crowded and hard to follow. In order to make everything more neat,
students were to use busses (or wide wires) to create a schematic with
the same function as seen before but with a single gate. Labeling the gate using a notation such as I0<N-1:0> allows for the same gate to be present N number of times while only being placed once.
In this example we need 31 gates, so we change the instance name to represent this.
Once simulated, this new schematic still has the issue of not starting up. The same method was used to rectify this.
After the issue was fixed, the simulation showed the exact same results as the previous schematic.
Next
step is to layout the ring oscillator. To start, a single NOT gate was
created so the students can instantiate it N number of times.
The layout was DRC clean.
Shown
below is the array of NOT gates that was copied. This layout represents
both schematics that were created earlier in the prelab.
.
Layout was DRC clean.
Students
were expected to LVS check the layout. This compares the layout with
the original schematic to ensure any nets, instances or terminals match.
Layout was LVS clean.
A symbol was created for this ring oscillator, with the only pin being the 31st output.
The test schematic for the ring oscillator is as shown below.The ADE and simulation settings match what was used in previous schematics.
The simulation results are exactly the same, which match expectations.
This marks the end of the prelab content.
Lab Content
Lab 7 continues on the usage of busses and arrays to create functional and neat schematics.
To start off, students were expected to design a four bit inverter.
This circuit takes four inputs and inverts them bit by bit. For four
bits, students were to change the instance name to I0<3:0> and
label the input and output nodes approprately.
A symbol was created to show that this inverter is used for four input bits.
To test functionality a new schematic was created which includes an input source and a load for each bit.
The ADE and simulation settings for the test schematic are as shown below.
The results for the four bit inverter are as expected. As you can
see, the value of the load capacitor have an effect on the output
voltage at any given time. The larger the capacitance, the longer it
takeks for the inverter to charge it. For the fourth and first bit, the
output is simillar as the load capacitance for the third bit is
neglible. The larger the capacitance the larger the time constant which
leads to more of a curve in the output voltage.
After the four bit inverter was completed, students moved onto an eight
bit converter. The notation and design are very similar to the four bit
inverter shown above. Instance names and node labels were adjusted to
<7:0> to represent the four extra gates now present.
A symbol was created with a label denoting how many bits this circuit can take as an input.
The test schematic is similar to the previous test schematic, but with more load capacitor to match the number of output bits.
Outputs match what was expected.
After the inverters, students were expected to continue this
process with a number of gates. The process for each is very similar to
the bit by bit inverters, so explanations will be brief.
The main difference between these gates and the inverters is that we now have two sets of inputs (A and B).
Schematic for eight bit AND
Symbol for eight bit AND
Test schematic for eight bit AND
Simulation results for eight bit AND match expected results. Bits are only high when both inputs are.
Schematic for eight bit NAND
Symbol for eight bit NAND
Test schematic for eight bit NAND
Simulation results for eight bit NAND. These results are as
expected, leaving the output bits low only when both input bits are
high.
Schematic for eight bit OR
Symbol for eight bit OR
Test schematic for eight bit OR
Simulation for eight bit OR are as expected. Output is only low when bot input bits are low.
Schematic for eight bit NOR
Symbol for eight bit NOR
Test schematic for eight bit NOR
Simulation results were as expected. Output is only high when both inputs are low.
Once students were done designing and testing their eight input
gates, they were expected to move onto designing a 2:1 MUX. To start a
single MUX was to be designed and tested before using busses and arrays
to make an eight wide MUX.
Below is the schematic of a 2:1MUX with four inputs and a single output.
The symbol for the MUX is as shown below.
A test schematic for the 2:1MUX. This schematic includes the inverter designed in lab 5.
The simulation results are as shown below. The purpose of a MUX is
to allow a set amount of inputs through. This is done by using a select
bit to determine which input or inputs are passed through to the
output. For this example, students designed a 2:1MUX meaning that a
single input bit is used to determine which of the two inputs will pass
to the single output. Initially, the select bit is a "0" meaning that B
will pass through, which can be seen in the output results. B was low,
so therefor the output was also low. After every switch in the select
bit, the output was adjusted to match the input that was to be passed.
Now that the single mux was designed and tested, students were to
implement an eight wide 2:1MUX. For this schematic the Si input was
automatically set by the implementation of the inverter. This reduces
the amount of individual inputs this design will have. The nodes and
instance name were also adjusted to match the width of our MUX. For
eight MUX's students used <7:0>.
The symbol for this eight wide MUX is as shown below.
Test schematic for eight wide 2:1MUX.
The results for this test schematic are as shwon below. Every
output is accounted for and match the intended function of the MUX.
That is, passing the input selected by the S input.
The final step of this lab was to design, test and layout an 8-bit full adder.
Students
recreated figure 12.20, which is as shown below. Due to the complexity
of the design, wires were ommitted. Instead, nodes were merely labeled
ot keep a clean interface. This schematic only represents a single full
adder. Once the design was completed, students implemented an 8-bit
wide full adder.
The symbol for the full adder is as shown below. This matches the symbol of the full adder designed in lab 6.
Once the single adder was completed, students worked towards an
8-bit adder.The notation is similar to those created previously, but
now there is signals being passed from one component to the next. To
account for this, the labeling of the wires is different. Ordereing
from most significant to least significant, the bits are labeled on the
connecting nodes. The inputs were labeled "Cout<6:0>, Cin"
showing that Cin<7> is attatched to Cout<6>. Cin<6>
is then attatched to Cout<5>. This pattern happens all the way
down to Cin<0>, which is then attatched to the original
Cin input.
The symbol for this 8-bit full adder is as shown below.
A test schematic was created to test the functionality of this symbol.
The results are as expected. If Cin is a "1" along with both
inputs, the Cin propagates. This can be shown at 17.0ns where Cout
rises.
Now that the functionality of this adder has been tested, students were to layout this full adder.
The layout is as shown below.
Layout is DRC clean.
Extracted view of layout
Layout was then to be LVS checked by comparing it to the full adder schematic.
Layout is LVS clean.
The layout was then instantiated eight times to recreated the 8-bit full adder.
Layout is DRC clean.
This concludes Lab 7.
Lab7.zip
Return to Labs