manivats / SRAM

0 stars 0 forks source link

SRAM(1024x32): (32kbits or 4KB), 1.8V and access time is <2.5ns(OpenRAM)

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

  1. For download Click here
  2. Installation guide for Linux Click here
  3. Installation guide for Windows Click here

    Contents

    Introduction

    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:-

    • Bitcell
    • Sense Amplifier
    • Write Driver
    • Precharge circuit
    • Master slave DFF
    • Trigate

    Advantage of SRAM over DRAM

    Faster because periodic refreshing is not required.

    Disadvantage of SRAM over DRAM

    • Uses more power
    • Required larger area.

    Steps for Waveform

    To see the waveform perform following steps

  4. Open the terminal
  5. Install Ngspice if you don't have sudo apt get install ngspice
  6. Move to the directory using cd Folder_name where you want to clone the repository
  7. Type git clone https://github.com/manivats/SRAM.git
  8. Type cd SRAM/Prelayout_simulation
  9. Type ngspice
  10. ngspice 1 -> will show on the terminal , for plot commands read the below text.

    Bitcell

bitcell

Modes of Operation

Standby Mode/ Hold Mode

The word line is not active and the bitcell will retain the value.

Read Mode

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.

Write Mode

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.

Hold Mode

hold_cir

Type the following command after this ngspice 1 ->in the terminal

hold_curve.cir.out
plot qb vs q q vs q1 q

hold_curve

Read Mode

read_cir_curve

Type the following command after this ngspice 1 ->in the terminal

read_curve.cir.out
plot qb vs q q vs q1 q

read_curve

Write Mode

write_cir _curve

Type the following command after this ngspice 1 ->in the terminal

write_curve.cir.out
plot qb vs q q vs q1 q

write curve

SNM Calculation

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.

Hold SNM & Read SNM

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.

Write SNM

1) Make a maximum size square in the upper part of curve. 2) SNM will be the smallest side of square.

SNM calculated table

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
NOTE:- The above curves have the last row parameters

Precharge Circuit

PMOS Precharge circuit

precharge

Type the following command after this ngspice 1 -> in terminal

pre_charge.cir.out
plot pr_en
plot bl
plot blb

pr_en bl blb

Sense Amplifier

sense_amp

Type the following command after this ngspice 1 -> in terminal

sense_amplifier.cir.out
plot bl blb
plot en
plot q1 qb1

bl_blb en q1_qb1

NOTE:-

1) Sensitivity is 100mV.

2) The correct output will we observed when en is high.

Write Driver

write_driver

Block diagram of writer with precharge circuit

write_with_pre

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

din_dinb bbl bblb pr_en bl_blb

Trigate

trigate

Type the following command after this ngspice 1 -> in terminal

trigate.cir.out
plot in in_inv
plot en enb
plot out

in in_iv en enb out

Read Operation

Block diagram of read operation

block_dia_readop

Circuit diagram is in two parts

PART-1 1half_read

PART-2 2half_read

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

wl pr_en q qb bl_blb en q1 qb1

NOTE :-

1) The correct output will we observed when en is high.

Contributors

Contact Information