mirror of https://github.com/VLSIDA/OpenRAM.git
Add sky130 config examples
This commit is contained in:
parent
a111ecb74c
commit
01f4ad7a11
|
|
@ -0,0 +1,20 @@
|
||||||
|
"""
|
||||||
|
Pseudo-dual port (independent read and write ports), 8bit word, 1 kbyte SRAM.
|
||||||
|
|
||||||
|
Useful as a byte FIFO between two devices (the reader and the writer).
|
||||||
|
"""
|
||||||
|
word_size = 8 # Bits
|
||||||
|
num_words = 1024
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Dual port
|
||||||
|
num_rw_ports = 0
|
||||||
|
num_r_ports = 1
|
||||||
|
num_w_ports = 1
|
||||||
|
ports_human = '1r1w'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
"""
|
||||||
|
Dual port (1 read/write + 1 read only) 1 kbytes SRAM with byte write.
|
||||||
|
|
||||||
|
FIXME: What is this useful for?
|
||||||
|
FIXME: Why would you want byte write on this?
|
||||||
|
"""
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 256
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Dual port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 1
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw1r'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
"""
|
||||||
|
Dual port (1 read/write + 1 read only) 1 kbytes SRAM with byte write.
|
||||||
|
|
||||||
|
FIXME: What is this useful for?
|
||||||
|
FIXME: Why would you want byte write on this?
|
||||||
|
"""
|
||||||
|
word_size = 8 # Bits
|
||||||
|
num_words = 1024
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Dual port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 1
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw1r'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
"""
|
||||||
|
Single port, 1 kbytes SRAM, with byte write, useful for RISC-V processor main
|
||||||
|
memory.
|
||||||
|
"""
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 256
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Single port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 0
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
"""
|
||||||
|
Dual port (1 read/write + 1 read only), 2 kbytes SRAM (with byte write).
|
||||||
|
|
||||||
|
FIXME: What is this useful for?
|
||||||
|
FIXME: Why would you want byte write on this?
|
||||||
|
"""
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 512
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Dual port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 1
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw1r'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
"""
|
||||||
|
Single port, 2 kbytes SRAM, with byte write, useful for RISC-V processor main
|
||||||
|
memory.
|
||||||
|
"""
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 512
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Single port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 0
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
"""
|
||||||
|
Dual port (1 read/write + 1 read only), 4 kbytes SRAM (with byte write).
|
||||||
|
|
||||||
|
FIXME: What is this useful for?
|
||||||
|
FIXME: Why would you want byte write on this?
|
||||||
|
"""
|
||||||
|
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 1024
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Dual port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 1
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw1r'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
"""
|
||||||
|
Single port, 4 kbytes SRAM, with byte write, useful for RISC-V processor main
|
||||||
|
memory.
|
||||||
|
"""
|
||||||
|
|
||||||
|
word_size = 32 # Bits
|
||||||
|
num_words = 1024
|
||||||
|
human_byte_size = "{:.0f}kbytes".format((word_size * num_words)/1024/8)
|
||||||
|
|
||||||
|
# Allow byte writes
|
||||||
|
write_size = 8 # Bits
|
||||||
|
|
||||||
|
# Single port
|
||||||
|
num_rw_ports = 1
|
||||||
|
num_r_ports = 0
|
||||||
|
num_w_ports = 0
|
||||||
|
ports_human = '1rw'
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Include with
|
||||||
|
# import os
|
||||||
|
# exec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
|
||||||
|
|
||||||
|
|
||||||
|
tech_name = "sky130"
|
||||||
|
nominal_corner_only = True
|
||||||
|
|
||||||
|
# Local wordlines have issues with met3 power routing for now
|
||||||
|
#local_array_size = 16
|
||||||
|
|
||||||
|
#route_supplies = False
|
||||||
|
check_lvsdrc = True
|
||||||
|
#perimeter_pins = False
|
||||||
|
#netlist_only = True
|
||||||
|
#analytical_delay = False
|
||||||
|
|
||||||
|
output_name = "{tech_name}_sram_{human_byte_size}_{ports_human}_{word_size}x{num_words}_{write_size}".format(**locals())
|
||||||
|
output_path = "macro/{output_name}".format(**locals())
|
||||||
Loading…
Reference in New Issue