ENGR338 Lab 2021 Spring
Lab 8 Design a MUX, and a High-Speed Full Adder
Name:
Sean Eaton
Email: smeaton@fortlewis.edu

Design a MUX, and a High-Speed Full Adder

Introduction
In this lab we were tasked with designing a 2-1 MUX schematic, icon, and layout in Electric VLSI. We then had to create an 8-bit MUX using a bus to create the schematic and eight copies of the 2-1 MUX layout. Next we were tasked with creating a 1-bit High-Speed Full Adder that used AND-OR-Inverted (AOI) Logic. The schematic, icon, and layout were then used for creating the 8-bit High-Speed Full Adder's schematic, icon, and layout. LTSpice simulations were used to verify the logic for all the designs. DRC and NCC checks were also performed to verify the designs.

Task 1: Build an 8-bit MUX

For task one we first were instructed to build the schematic for a 2-1 multiplexer. An image of the schematic for the 2-1 MUX was provided for us and my final 2-1 MUX schematic and icon are shown below along with its DRC check results.


Figure 1. Schematic for the 2-1 MUX with DRC check results
.

The logic for the 2-1 MUX was also verified using an LTSpice simulation. The A, B, S, and Si signals were set to square waves so that it could be verified in one simulation. The simulation schematic and LTSpice waveform plot is shown below.


Figure 2. Simulation schematic for the 2-1 MUX along with its spice code.


Figure 3. LTSpice simulation waveform results for the 2-1 MUX. V(y) verified that selection between A and B works correctly.


After this the schematic and icon for the 8-bit MUX was created using the 2-1 MUX's icon. Buses were used to define that eight 2-1 MUXs in parallel should be present in the design. An icon for the 8-bit MUX was also created and the schematic was DRC checked too. The S and Si inputs used the J wire connection node so that the same S and Si signal controlled the S and Si inputs for all eight of the MUXes. This way there wouldn't have to be individual S and Si inputs for each MUX.


Figure 4. 8-bit MUX schematic and icon along with DRC check results.


The 8-bit MUX also had an LTSpice simulation to verify its functionality. The simulation schematic and LTSpice waveform plots are shown below.


Figure 5. 8-bit MUX simulation schematic with its spice code displayed.


Figure 6. LTSpice simulation waveform plot for the 8-bit MUX. V(y[0:7]) correctly outputs B and then A.


Now that the schematic and icons for the 2-1 MUX and 8-bit MUX were designed, it was time to create the layouts for them. We started with the 2-1 MUX since it can be used to create the 8-bit MUX's layout view. An image of what the final 2-1 MUX layout was provided to us so I replicated the design, making sure the PMOS and NMOS connections matched my schematic, and then verified that it passed DRC and NCC checks. The 2-1 MUX layout view is shown below in Figure 7. Later on in the lab it was shown that additional space can be saved by placing the A and B node on the metal1 arc that connects the pAct and nAct nodes together so that a metal1 arc doesn't have to protrude as shown below. I added this fix in when I was creating the layout view and its results can be seen in Figure 9. A metal1 to metal2 connection node was used in the same general spot as where the exported A and B nodes used to be.


Figure 7. Final layout view for the 2-1 MUX. DRC and NCC check results are also displayed.


After creating the 2-1 MUX layout view it was then used to create the 8-bit MUX's layout view. Eight copies of the 2-1 MUX were used to create the layout. The selection inputs, S and Si, were connected together so that one single S and Si input was the S and Si inputs for all eight MUXes. The 8-bit A and B inputs were exported as well as the 8-bit Y outputs, and the VDD and GND inputs. The layout successfully passed DRC and NCC checks as shown below. A closer view of the 8-bit MUX layout is shown below as well and the same basic structure was repeated for all eight MUXes.


Figure 8. Layout view for the 8-bit MUX with DRC and NCC check results.


Figure 9. A closer look at what the layout view for the 8-bit MUX looks like.


Task 2: Build a 1-bit high-speed full adder.
Next design to be built was the 1-bit high-speed full adder that uses AOI logic rather than the logical gate implementation we did in lab 6. The first thing we did was create the schematic and icon view for the high-speed full adder. I decided to try to integrate both the summation portion and the carryout portion together as much as I could so I could get a better idea of how the layout view connections would work. A DRC check was also performed before moving on.


Figure 10. Schematic and icon for the 1-bit high-speed full adder.


Now that the schematic and icon were created, a simulation schematic was created to verify that the full adder functioned properly. The simulation schematic and its spice code can be seen below in Figure 11. Figure 12 shows the LTSpice waveform plot for the A and B inputs along with the S and Co outputs. Cin was set to high which is why the S output is set to high for the first 10 nanoseconds or so.


Figure 11. Simulation schematic for the 1-bit high-speed full adder with its spice code.


Figure 12. LTSpice simulation waveform plots of the A and B inputs with S and Co outputs.


After verifying the high-speed full adder's logic the layout view had to be created next. It was advised to use that we should make connections for each vertical circuit before making the connections between the vertical parts. I followed this process and then I made the connections for the gate inputs afterwards while trying to compress the layout as much as possible with it still passing the DRC check. The final layout view is shown below along with its DRC and NCC check results.


Figure 13. Final layout view for the 1-bit high-speed full adder.


Task 3: Build an 8-bit high-speed full adder.

Now that the 1-bit high-speed full adder was completed we then had to build the 8-bit high-speed full adder. The schematic and icon were created first before running simulations to verify the full adder was functioning properly. The schematic made use of buses and the icon for the 1-bit high-speed full adder, it also successfully passed the DRC check as shown below. The A and B inputs were simply 8-bit inputs while the Carry In (Cin) input was defined as Cin and then Carry Outs 0 to 6 (Co[0:6]). This was because we only actually input Cin as an input. The rest of the carry outs are passed from one full adder to the next until we get the final output. The final output will consist of the 8-bit summation (S) and the 1-bit final carry out C[7].


Figure 14. Schematic and icon of the 8-bit high-speed full adder with DRC check results.


After this a simulation schematic was created and three simulations were ran to verify the full adder's functionality.
The first simulation was a replication of the lab's example simulation. A = 1111 1110, B = 1000 0000, and Cin = 0. The expected result should be Co = 1, S = 0111 1110 or 1 0111 1110. The LTSpice simulation waveform plot is shown below and displays the summation output along with the final carry out.


Figure 15. LTSpice simulation waveform results for the first simulation. Result is equal to 1 0111 1110 as expected.


The second simulation had A = 1010 1010, B = 0101 0101, with Cin = 0. The expected result should be 0 1111 1111 which is what was seen in the LTSpice waveform plots of S[0:7] and Co[7].


Figure 16. LTSpice simulation waveform results for the second simulation. Result is equal to 0 1111 1111.


The third and final simulation had A = 1001 0110, B = 1101 0010, and Cin = 1. I designed this one so that the result will be 1 0110 1001 which has S being the digits of A reversed. I also wanted to verify Carry In functionality since I didn't set Cin to 1 in the previous two simulations. The results are shown below in Figure 17.


Figure 17. LTSpice simulation waveform results for the third simulation. Result is equal to 1 0110 1001.


The simulation schematic used for the final simulation is shown below in Figure 18. The first two simulations used a modified version of this schematic to change the A, B, and Cin inputs so I decided to just show the final one since it verified Carry In functionality. A, B, and Cin inputs were changed by connecting the individual wires' connections to either VDD or GND.


Figure 18. Simulation schematic for the third simulation. A = 1001 0110, B = 1101 0010, Cin = 1.


Now that the logic for the 8-bit MUX had been verified it was time to create the layout view for it. Eight copies of the 1-bit high-speed full adder were used to create the 8-bit high-speed full adder. Exports were made for the 8-bit A and B inputs, the 1-bit Cin input, the 8-bit S output, and the 1-bit final carry out, Co[7]. In between each full adder the previous full adder's carry out was connected to the next full adder's carry in. These connections also had to have a pin exported as a Co output from Co[0] up to Co[6] so that the layout would pass the NCC check. The final 8-bit full adder layout with its DRC and NCC check results is shown below in Figure 19. A closer look at the 8-bit full adder is also shown in Figure 20.


Figure 19. Final layout view of the 8-bit full adder along with good DRC and NCC check results.


Figure 20. A closer look at the 8-bit high-speed full adder layout. Co[0] on the right connects to the next full adder's Cin input.


Discussion
This lab was more challenging for me than previous labs due to having to design the 1-bit high-speed full adder's layout. The general outline of the layout wasn't difficult but connecting each transistor to its required input was challenging. The A, B, and Cin inputs had to travel pretty far and I had to really think about how to best use the metal1, metal2, metal3, and poly arcs so that the layout remained as small as possible. In addition to this the inverse carry out output also had to connect to transistors. I also had to switch my A and B inputs for the two PMOSes on the left below the first PMOS with an A input on top. Previously it was A, then B, but I had issues with my layout when I did the NCC check. After debugging there ended up being a part mismatch with the first two PMOSes so rather than edit the layout (which caused more errors) I decided to change the schematic instead. I verified functionality with the simulation before calling it complete. I am happy with how my layout came out and I'm sure I could improve on it more since I'm more familiar with the neccessary connections.
I didn't have any issues with the 2-1 MUX and 8-bit MUX although I wanted to modify the MUX design to be like the MUX I created for HW3. The HW3 MUX I created included an additional PMOS and NMOS for inverting the selection input, eliminating the need for both S and Si inputs. I decided however to just stick with what the lab required. The final 8-bit high-speed full adder also didn't cause me any troubles, the process isn't that difficult once the initial layout view has been created. I enjoyed having to figure out the best way to layout the 1-bit high-speed full adder.