The project is a description of all the necessary components used in making 1-bit 6T-SRAM cell and their analysis using the tool ESIM on the technology node osu180nm.
Steps to Download esim
Installation guide for Windows Click here
SRAM (Static Random Access Memory)
It is a random access memory that has a access time independent of the physical location of the data.
Blocks required to make SRAM are:-
Faster because periodic refreshing is not required.
sudo apt get install ngspice
cd Folder_name
where you want to clone the repositorygit clone https://github.com/manivats/SRAM.git
cd SRAM/Prelayout_simulation
ngspice
ngspice 1 ->
will show on the terminal , for plot commands read the below text.
The word line is not active and the bitcell will retain the value.
Intially the bit line and bit bar line is precharged to Vdd.The word line is made active and bit line or bit line bar changes value according to the values present at q & qb.Sense amplifier senses the values at bl & blb and produced the desired output.
The bl & blb are precharged to Vdd. Whatever value we want to write into the cell should be present at bl. Using write drive we make bl/blb ,0/1.
Below are the circuits and curves for hold , read and write mode without feedback connections to calculate SNM.
Type the following command after this ngspice 1 ->
in the terminal
hold_curve.cir.out
plot qb vs q q vs q1 q
Type the following command after this ngspice 1 ->
in the terminal
read_curve.cir.out
plot qb vs q q vs q1 q
Type the following command after this ngspice 1 ->
in the terminal
write_curve.cir.out
plot qb vs q q vs q1 q
SNM helps us to analyse the stability of SRAM.It is defined as the least noise voltage needed to flip the cell state.Easiest way to calculate SNM is by Butterfly Curve.
1)make the maximum possible size squares which can be fitted in the lower and upper part of the curve. 2)take the largest side of both squares. 3)SNM will be the minimum of two largest sides of square.
1) Make a maximum size square in the upper part of curve. 2) SNM will be the smallest side of square.
NMOS (W) | PMOS (W) | ACCESS (W) | HOLD SNM | READ SNM |
---|---|---|---|---|
0.44u | 0.28u | 0.35u | 0.6v | 0.3v |
0.44u | 0.88u | 0.35u | 0.75v | 0.36v |
0.7u | 0.35u | 0.35u | 0.61v | 0.35v |
0.36u | 0.9u | 0.27u | 0.6v | 0.4v |
1.20u | 0.66u | 0.60u | 0.62v | 0.38v |
Type the following command after this ngspice 1 ->
in terminal
pre_charge.cir.out
plot pr_en
plot bl
plot blb
Type the following command after this ngspice 1 ->
in terminal
sense_amplifier.cir.out
plot bl blb
plot en
plot q1 qb1
1) Sensitivity is 100mV.
2) The correct output will we observed when en
is high.
Type the following command after this ngspice 1 ->
in terminal
write_driver.cir.out
plot din_dinb
plot bbl bblb
plot pr_en
plot bl blb
Type the following command after this ngspice 1 ->
in terminal
trigate.cir.out
plot in in_inv
plot en enb
plot out
PART-1
PART-2
Type the following command after this ngspice 1 ->
in terminal
read_operation.cir.out
plot wl pr_en
plot q qb
plot bl blb
plot en
plot q1 qb1
1) The correct output will we observed when en
is high.