Add LEF output for ROM

This commit is contained in:
mole99 2023-12-14 16:44:09 +01:00
parent 05884cf6a7
commit 8032fa75a4
3 changed files with 15 additions and 3 deletions

View File

@ -11,13 +11,14 @@ from math import ceil, log
from openram.base import vector
from openram.base import design
from openram.base import rom_verilog
from openram.base import lef
from openram import OPTS, print_time
from openram.sram_factory import factory
from openram.tech import spice
from openram.tech import drc, layer, parameter
class rom_bank(design,rom_verilog):
class rom_bank(design, rom_verilog, lef):
"""
Rom data bank with row and column decoder + control logic
@ -27,6 +28,7 @@ class rom_bank(design,rom_verilog):
def __init__(self, name, rom_config):
super().__init__(name=name)
lef.__init__(self, ["m1", "m2", "m3", "m4"])
self.rom_config = rom_config
rom_config.set_local_config(self)

View File

@ -59,6 +59,9 @@ class rom():
def sp_write(self, name, lvs=False, trim=False):
self.r.sp_write(name, lvs, trim)
def lef_write(self, name):
self.r.lef_write(name)
def gds_write(self, name):
self.r.gds_write(name)
@ -106,6 +109,13 @@ class rom():
output_path=OPTS.output_path)
print_time("GDS", datetime.datetime.now(), start_time)
# Create a LEF physical model
start_time = datetime.datetime.now()
lefname = OPTS.output_path + self.r.name + ".lef"
debug.print_raw("LEF: Writing to {0}".format(lefname))
self.lef_write(lefname)
print_time("LEF", datetime.datetime.now(), start_time)
# Save the LVS file
start_time = datetime.datetime.now()
lvsname = OPTS.output_path + self.r.name + ".lvs.sp"

View File

@ -51,7 +51,7 @@ openram.print_time("Start", start_time)
output_extensions = [ "sp", "v"]
# Only output lef/gds if back-end
if not OPTS.netlist_only:
output_extensions.extend(["gds"])
output_extensions.extend(["lef", "gds"])
output_files = ["{0}{1}.{2}".format(OPTS.output_path,
OPTS.output_name, x)
@ -69,4 +69,4 @@ r.save()
# Delete temp files etc.
openram.end_openram()
openram.print_time("End", datetime.datetime.now(), start_time)
openram.print_time("End", datetime.datetime.now(), start_time)