Project – EE-421L
Authored by
Matthew Daniel McDonagh
EE-421 Fall
2021
email: mcdonm6@unlv.nevada.edu
Lab description: This is a design of a register
file (RF) that uses an 8-bit word and has 32 words. The RF uses a 5-bit address
schematic to access the 32 8-bit words. The memory in this project is not
addressable by bits. The remaining inputs to the register file include the 8-I/O
lines for reading and writing, as well as a control signal, RW (LW), for
indicating either a read or write to the RF, and lastly VDD/Ground.
To begin with we utilize a row
driver (an electronic amplifier circuit designed for driving a load), a sensitivity
analysis tool (a method used to identify how much variations in the input
values for a given variable will impact the results), battery pre-charging
(charging at a low rate usually 1/10 the regular rate where the
charger regulates the battery voltage entering the CV phase while the charge
current exponentially drops to a defined termination level), and some bit
comparators (X number of inputs each for X single bit numbers and three outputs
to generate less than, equal to, and greater than between two binary numbers). This
particular design does not include the pre-charger and the sensitivity analyzer
at this stage.
One of the current predicaments
in the industry for memory development are power dissipation and area covered.
The rate at which memory design has increasing advances with scaling in logic
must be met by an equivalent scaling in density. Breaking the overall design
down into seven parts, I will begin with the inverters:
Design:
Inverter
I will start this design with a
basic SRAM (static random access memory) cell and
schematic. The cell of the SRAM will have several tiny transistors, allowing
the cell to flip without difficulty, as well as inverters. Pictured below is
the inverter I will be using:
Next is the symbol for the
inverter, size 12u/6u:
In addition, here is a smaller
inverter for use in the larger components:
Below is a testing schematic
for simulation purposes (input pin A and output pin Ai notated):
Simulation results
(alternating):
Testing the inverter circuit
for DRC and LVS pass:
Both DRC and LVS are good. Now
checking DRC and LVS for the smaller inverter:
Design: 1-bit
Cells (for SRAM)
Below is the schematic for the single
bit cell used by NMOS gates which are scaled to not overpower a latch (not DFF).
The line of data (A or D or L) and its complement (Ai or Di or Li) are
critically important to the SRAM. Either L or Li will pass through the NMOS
gate and update the SRAM.
Next is the symbol for the bit
cell:
Here is an example circuit for
simulation and testing purposes:
Simulation results:
From the simulation we can see
that when the row line is high, the value of L is written to the memory line.
When the row line is low, it ignores the current value of L and remains using
the last known value written.
The layout of the SRAM bit cell
is comprised of two inverters and configured with beneficial intersections of
various metals, with some transistors on the bottom. Testing the bit cell
circuit for a passing DRC and LVS:
Design: Word
Cells
Next I took the SRAM / Bit Cell
design above and assimilated it into a single schematic consisting of 8
iterations of it. It represents a single row of memory units. Below is the
schematic for the 8-bit word for the Register File:
Next is the symbol for the
8-bit word, which consists of 8-bit lines of data, 8-bit lines of complements,
both of which are input into the word cell that determines whether the cells
are activated or not:
Simulation schematic /
verification circuit for the 8-bit word:
Simulation results:
From the simulation results we
can see that when R (row) is high, the SRAM is storing the data value
(L<7:0>) of the cell.
The Layout of the 8-bit Word is
comprised of 8 SRAM cells. Testing the 8-bit Word circuit for a passing DRC and
LVS:
The 8-bit word cell passes both
checks.
Design: Array
of Words
Next is the array for the 32 word cells, which satisfies the requirement of the design
for a 32x8 word array. It is comprised of 32 different row lines each with a
value determined by L or Li inputs. It also has a decoder that allows the
circuit to mimic the functioning of an SRAM (using 32 row lines). This array
lets us know what word is being accessed, and works similarly to the 8-bit word
cell with the added exception that each row consists of an 8-bit word. For the
schematic below, I replicated the 8-bit word cell for 32 valued iterations:
Here is the word array symbol:
Simulation circuit of the
32-bit word array:
Simulation results:
From the simulation results,
the individual bit cell starting at 0 for example, stores a data value when the
row is high.
The layout of the 32-bit word
array contains 32 rows of the 8-bit word layout compiled together with strips
of metal1 connecting the rows. Testing the circuit for a passing DRC and LVS:
The word array successfully
passes all checks. In an industrial setting, a single-bit slice of the 32-word
RF would resemble the following:
Design:
5-input AND Gate
Before constructing the row decoder,
a 5-input AND gate must be realized. This is accomplished by using a 5-input
NAND gate and putting the inverter before the output. This allows the gate to
receive the row decoder for future usages. The schematic below is the
preparation of the 5-input NAND gate, starting with a single NAND gate
schematic:
Symbol for a singular NAND
gate:
Next is the singular AND gate
schematic:
Symbol for a singular AND gate:
Next is the schematic for the
5-input NAND gate with input values A through E and a singular output:
The symbol for the 5-input NAND
gate:
Combining the inverter with the
5-input NAND gate to form the 5-input AND gate:
5-input AND gate symbol:
Verification circuit /
simulation schematic for testing purposes:
Simulation results:
From the simulation results,
when the output (AND gate) is high, the inputs are a 1, and when inputs are a
0, the output is also 0.
The Layout of the 5-input AND
gate contains the layout of the 5-input NAND gate and an inverter. Testing the
5-input AND gate circuit for a passing DRC and LVS:
The 5-input AND gate
successfully passes all checks and is ready to implement in the next step.
Design: Row
Decoder
The last component to make
before assembling the full register file is the row decoder. Using the 5-input
NAND gate (5-bits), the row decoder will iterate through 32 AND gates, allowing
the decoder to choose from 1 out of 32 rows (0-31) for which 8-bit word cell to
be activated. Each NAND gate will have an inverter placed on its output. Every
5-bit address possibility coincides with one 8-bit word cell (from 00000 to
11111). Below is the schematic for the row decoder:
The symbol for the row decoder:
A test schematic used for
simulation purposes:
Simulation results:
From the simulation results, with
choice of rows 0, 15, and 31 selected, when <A4:A0> are high, row 31 is
on and all other rows are off.
The layout of the row decoder
is comprised of several inverters, and 32 of the 5-input AND gate layouts.
Testing the circuit for a passing DRC and LVS:
Top
of decoder:
Bottom
of decoder:
The row decoder passes all
checks, now to implement the final part of the project.
Design: SRAM
Full and Register File
The full SRAM Register File is
constructed by combining the 32-bit word array with the row decoder. The
register accepts an input address for the row decoder to decipher which one of
the 8-bit memory cells must be accessed. Then it will write the value of
L<7:0> into the word cell manually. Below is the schematic for the
Register File:
The symbol for the register
file:
A verification circuit / test
schematic for simulation purposes:
Results of simulation testing:
From the simulation results, it
is observed that when RW (top row) changes from high to low, the Register File
output (bottom row) enter write mode. The value of Li<0> will be written
into the address corresponding to the truth table segment “1 1 1 1 1”. When the RW changes from low to high, the Register
File output will switch to read mode, outputting the value in address “1 1 1 1
1” to L<0>.
The Layout combines the row
decoder layout and the 32-bit array layout, with added layouts of inverters to
form the final product.
Top
of Register File layout:
Bottom
of Register File Layout:
Top
of Register File extracted:
Bottom
of Register File extracted:
Testing the Register File for a
passing DRC and LVS/netlist check:
The design passes the checks
and is ready to be implemented into future projects. But this design should be
revamped and refined with finessed schematics before implementing into an
assembly of peripheral components
There are many issues with this
design, but it is my first attempt at something of this magnitude. I am having
trouble reaching maximum output values for L voltages beyond 5 volts. The pre-charger
would probably help in this instance.
In an industrial setting, the 32x8
Register File would resemble the following:
An
example of an 8-bit CPU on a 5x5mm chip would look like this: