memCellsF09 Single- and Double-port SRAM building blocks Background Allen Tanner built an SRAM/ROM generator program back in 2004 the ROM seems to work fine – there are fabricated examples that work the SRAM isn’t as good – there are fabricated examples that work and that don’t work So, I have new (tested) SRAM cells For ROM, we’ll still use “makemem” 1
ROM ROM 2
ROM ROM 3
ROM Layout ROM Layout 4
makemem 102 vladimir:~> java -cp /uusoc/facility/cad_common/local/Cadence/lib/mem/j makemem -h makemem v2.2 Nov 8, 2004 Allen Tanner University of Utah CS6710 Enter the following: java makemem choice options Where: choice selects the creation of either ROM or SRAM. for ROM enter:-r rname : rname.rom is the file name. : for SRAM enter:-s r c : Version 1 SRAM single port. for SRAM enter:-s1 r c : Version 2 SRAM single port. for SRAM enter:-s2 r c : Version 2 SRAM dual port. for SRAM enter:-s3 r c : Version 2 SRAM triple port. : r is the number of rows (decimal). : c is the number of columns (decimal). : :-h -H : help (no processing occurs when help is requested). :-f fname : output file name. Used with .cif, .v & .il files. :-n sname rname : sname for array top cell name. : : rname for ROM (only) dockable ROM array top cell name :-t n : use tristate buffers on the outputs of ROM. :-q : output hello.txt file to find the working file directory. makemem Limits Number of rows is limited to 64 by address decoder design Columns are not restricted For ROM you can add a tristate bus at the output which is another level of decoding width must be an even number SRAM has single, dual, and triple port options 5
ROM vs. Verilog ROM vs. Verilog 6
ROM vs. Verilog ROM vs. Verilog 7
ROM vs. Verilog ROM vs. Verilog 8
ROM vs. Verilog SRAM Can be tricky Make the SRAM bit cells as small as possible assembled into “columns” A column is bunch of bit cells and the associated support for writing (big drivers) and reading (pullups, sense amps, or inverters) those bits Column “height” is number of words in the memory Columns are tiled in “width” to make the number of bits in a word addressing hardware on the side convert binary addresses into unary row addresses 9
SRAM example (4x8) SRAM cells R/W circuits Address Column decoder SRAM Cell 10
SRAM Cell SRAM Cell (4x4) 11
SRAM Column Support SRAM Column Support 12
Double-port SRAM One RW port, one R-only port duplicates the read circuits for a second port Double-port SRAM One RW port, one R-only port duplicates the read circuits for a second port 13
2-port column support 2-port column support 14
2-port example (32x16) memCellsF09 Building blocks for these SRAMs /uusoc/facility/cad_common/local/Cadence/lib/OA/memCellsF09 Make sure to turn “categories” on Things are separated into categories to keep things organized Both 8t (single-port) and 10t (double-port) columns are available in 4, 8, 16, 32, and 64 rows Tile them horizontally to get bits in a word Must be even (columns are two-bits wide) 15
Address Decoders two kinds: static and pseudoNMOS static burns less power, but is slower pseudoNMOS uses more power, but is faster I have speed numbers, but couldn’t find them this morning – I’ll report them next week memCellsF09 Library 16
Memory Size Comparison 4rows by 8bits 32rows by 16bits 32rows by 16bits Dual port 17
Recommend
More recommend