diff --git a/doitcode/generate.py b/doitcode/generate.py
index 05075ea..4c677a4 100644
--- a/doitcode/generate.py
+++ b/doitcode/generate.py
@@ -2,18 +2,19 @@
 # PDKMaster & co. don't put a license requirement on the generated files.
 # The generated gds files in this project are released under the LGPL 2.0 or later license.
 from pathlib import Path
-from typing import Dict, Any, cast
+from typing import Any, cast
 
 import pya as _pya
 # Disable type checking
 pya = cast(Any, _pya)
 
+from pdkmaster.technology import geometry as _geo
 from pdkmaster.design import library as _lib
 from pdkmaster.io.klayout import export as _klexp
 
 from c4m.pdk import sky130
 
-from . import frame as _frm
+from . import frame as _frm, sram as _ram
 
 
 __all__ = ["gen_gds"]
@@ -64,6 +65,11 @@
     ckt = top.new_circuit()
     layouter = top.new_circuitlayouter()
 
+    # Add the SRAM
+    sram_cell = _ram.ConnectedSRAM(lib=lib)
+    sram_inst = ckt.instantiate(sram_cell, name="sramtop")
+    layouter.place(sram_inst, origin=_geo.origin)
+
     # Add circuit and
     layouter.layout.boundary = _frm.boundary
 
diff --git a/doitcode/sram.py b/doitcode/sram.py
new file mode 100644
index 0000000..83dd44f
--- /dev/null
+++ b/doitcode/sram.py
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+from pdkmaster.design import circuit as _ckt, library as _lbry
+
+from c4m.pdk import sky130
+
+from . import frame as _frm
+
+
+__all__ = ["ConnectedSRAM"]
+
+
+class _io_spec:
+    def __init__(self, *, io_number: int, sram_signal: str):
+        self.io_number = io_number
+        self.sram_signal = sram_signal
+
+
+io_specs = (
+    _io_spec(sram_signal="a[8]", io_number=14),
+    _io_spec(sram_signal="a[7]", io_number=15),
+    _io_spec(sram_signal="a[6]", io_number=16),
+    _io_spec(sram_signal="a[5]", io_number=17),
+    _io_spec(sram_signal="a[4]", io_number=18),
+    _io_spec(sram_signal="a[3]", io_number=19),
+    _io_spec(sram_signal="a[2]", io_number=20),
+    _io_spec(sram_signal="a[1]", io_number=21),
+    _io_spec(sram_signal="a[0]", io_number=22),
+)
+io_sig2spec = {
+    spec.sram_signal: spec
+    for spec in io_specs
+}
+
+class ConnectedSRAM(_lbry._OnDemandCell[_lbry.Library]):
+    def __init__(self, *, lib: _lbry.Library):
+        super().__init__(lib=lib, name="ConnectedSRAM")
+
+    def _create_circuit(self):
+        stdcells = sky130.stdcelllib.cells
+
+        mem_factory = sky130.Sky130SP6TFactory(lib=self.lib)
+
+        sram_cell = mem_factory.block(words=512, word_size=8, we_size=1)
+        
+        ckt = self.new_circuit()
+
+        ckt.instantiate(sram_cell, name="sram")
+
+    def _create_layout(self):
+        ckt = self.circuit
+        nets = ckt.nets
+        insts = ckt.instances
+
+        layouter = self.new_circuitlayouter()
+        layout = layouter.layout
+
+        _sram_lay = layouter.inst_layout(inst=insts.sram)
+        _sram_bb = _sram_lay.boundary
+        assert _sram_bb is not None
+
+        layouter.place(_sram_lay, origin=(_frm.boundary.center - _sram_bb.center))
+
+        layout.boundary = _frm.boundary
diff --git a/gds/user_analog_project_wrapper.gds.gz b/gds/user_analog_project_wrapper.gds.gz
index f4c3333..87aa811 100644
--- a/gds/user_analog_project_wrapper.gds.gz
+++ b/gds/user_analog_project_wrapper.gds.gz
Binary files differ
