mirror of https://github.com/VLSIDA/OpenRAM.git
Move DRC/LVS/PEX tools to tech file.
This commit is contained in:
parent
abd8b0a23a
commit
d511f648c6
|
|
@ -448,14 +448,24 @@ def init_paths():
|
||||||
|
|
||||||
def set_default_corner():
|
def set_default_corner():
|
||||||
""" Set the default corner. """
|
""" Set the default corner. """
|
||||||
|
|
||||||
|
import tech
|
||||||
# Set some default options now based on the technology...
|
# Set some default options now based on the technology...
|
||||||
if (OPTS.process_corners == ""):
|
if (OPTS.process_corners == ""):
|
||||||
OPTS.process_corners = tech.spice["fet_models"].keys()
|
if OPTS.nominal_corner_only:
|
||||||
|
OPTS.process_corners = ["TT"]
|
||||||
|
else:
|
||||||
|
OPTS.process_corners = tech.spice["fet_models"].keys()
|
||||||
if (OPTS.supply_voltages == ""):
|
if (OPTS.supply_voltages == ""):
|
||||||
OPTS.supply_voltages = tech.spice["supply_voltages"]
|
if OPTS.nominal_corner_only:
|
||||||
|
OPTS.supply_voltages = [tech.spice["supply_voltages"][1]]
|
||||||
|
else:
|
||||||
|
OPTS.supply_voltages = tech.spice["supply_voltages"]
|
||||||
if (OPTS.temperatures == ""):
|
if (OPTS.temperatures == ""):
|
||||||
OPTS.temperatures = tech.spice["temperatures"]
|
if OPTS.nominal_corner_only:
|
||||||
|
OPTS.temperatures = [tech.spice["temperatures"][1]]
|
||||||
|
else:
|
||||||
|
OPTS.temperatures = tech.spice["temperatures"]
|
||||||
|
|
||||||
|
|
||||||
def import_tech():
|
def import_tech():
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ class options(optparse.Values):
|
||||||
write_size = None
|
write_size = None
|
||||||
|
|
||||||
# These will get initialized by the user or the tech file
|
# These will get initialized by the user or the tech file
|
||||||
|
nominal_corner_only = True
|
||||||
supply_voltages = ""
|
supply_voltages = ""
|
||||||
temperatures = ""
|
temperatures = ""
|
||||||
process_corners = ""
|
process_corners = ""
|
||||||
|
|
@ -85,6 +86,8 @@ class options(optparse.Values):
|
||||||
check_lvsdrc = False
|
check_lvsdrc = False
|
||||||
# This determines whether LVS and DRC is checked for every submodule.
|
# This determines whether LVS and DRC is checked for every submodule.
|
||||||
inline_lvsdrc = False
|
inline_lvsdrc = False
|
||||||
|
# Treat the bitcell as a black box (no DRC, LVS, or extraction)
|
||||||
|
blackbox_bitcell = False
|
||||||
# Remove noncritical memory cells for characterization speed-up
|
# Remove noncritical memory cells for characterization speed-up
|
||||||
trim_netlist = False
|
trim_netlist = False
|
||||||
# Run with extracted parasitics
|
# Run with extracted parasitics
|
||||||
|
|
@ -110,8 +113,7 @@ class options(optparse.Values):
|
||||||
|
|
||||||
# Should we print out the banner at startup
|
# Should we print out the banner at startup
|
||||||
print_banner = True
|
print_banner = True
|
||||||
# Use detailed LEF blockages
|
|
||||||
detailed_blockages = True
|
|
||||||
# Define the output file paths
|
# Define the output file paths
|
||||||
output_path = "."
|
output_path = "."
|
||||||
# Define the output file base name
|
# Define the output file base name
|
||||||
|
|
|
||||||
|
|
@ -11,20 +11,6 @@ num_words = 16
|
||||||
|
|
||||||
tech_name = OPTS.tech_name
|
tech_name = OPTS.tech_name
|
||||||
|
|
||||||
process_corners = ["TT"]
|
|
||||||
supply_voltages = [5.0]
|
|
||||||
temperatures = [25]
|
|
||||||
|
|
||||||
route_supplies = True
|
route_supplies = True
|
||||||
check_lvsdrc = True
|
check_lvsdrc = True
|
||||||
|
|
||||||
if tech_name.startswith("scn"):
|
|
||||||
drc_name = "magic"
|
|
||||||
lvs_name = "netgen"
|
|
||||||
pex_name = "magic"
|
|
||||||
else:
|
|
||||||
supply_voltages = [1.0]
|
|
||||||
drc_name = "calibre"
|
|
||||||
lvs_name = "calibre"
|
|
||||||
pex_name = "calibre"
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,22 +10,10 @@ word_size = 1
|
||||||
num_words = 16
|
num_words = 16
|
||||||
|
|
||||||
tech_name = OPTS.tech_name
|
tech_name = OPTS.tech_name
|
||||||
process_corners = ["TT"]
|
|
||||||
supply_voltages = [5.0]
|
|
||||||
temperatures = [25]
|
|
||||||
|
|
||||||
route_supplies = True
|
route_supplies = True
|
||||||
check_lvsdrc = True
|
check_lvsdrc = True
|
||||||
inline_lvsdrc = True
|
inline_lvsdrc = True
|
||||||
analytical_delay = False
|
analytical_delay = False
|
||||||
|
|
||||||
if tech_name.startswith("scn"):
|
|
||||||
drc_name = "magic"
|
|
||||||
lvs_name = "netgen"
|
|
||||||
pex_name = "magic"
|
|
||||||
else:
|
|
||||||
supply_voltages = [1.0]
|
|
||||||
drc_name = "calibre"
|
|
||||||
lvs_name = "calibre"
|
|
||||||
pex_name = "calibre"
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,18 +10,5 @@ word_size = 1
|
||||||
num_words = 16
|
num_words = 16
|
||||||
|
|
||||||
tech_name = OPTS.tech_name
|
tech_name = OPTS.tech_name
|
||||||
process_corners = ["TT"]
|
|
||||||
supply_voltages = [5.0]
|
|
||||||
temperatures = [25]
|
|
||||||
|
|
||||||
if tech_name.startswith("scn"):
|
|
||||||
drc_name = "magic"
|
|
||||||
lvs_name = "netgen"
|
|
||||||
pex_name = "magic"
|
|
||||||
else:
|
|
||||||
supply_voltages = [1.0]
|
|
||||||
drc_name = "calibre"
|
|
||||||
lvs_name = "calibre"
|
|
||||||
pex_name = "calibre"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,12 @@ If not, OpenRAM will continue as if nothing happened!
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import debug
|
import debug
|
||||||
from globals import OPTS,find_exe,get_tool
|
from globals import OPTS
|
||||||
|
from globals import find_exe
|
||||||
|
from globals import get_tool
|
||||||
|
from tech import drc_name
|
||||||
|
from tech import lvs_name
|
||||||
|
from tech import pex_name
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
debug.info(1,"Initializing verify...")
|
debug.info(1,"Initializing verify...")
|
||||||
|
|
@ -29,29 +34,29 @@ if not OPTS.check_lvsdrc:
|
||||||
OPTS.pex_exe = None
|
OPTS.pex_exe = None
|
||||||
else:
|
else:
|
||||||
debug.info(1, "Finding DRC/LVS/PEX tools.")
|
debug.info(1, "Finding DRC/LVS/PEX tools.")
|
||||||
OPTS.drc_exe = get_tool("DRC", ["calibre","assura","magic"], OPTS.drc_name)
|
OPTS.drc_exe = get_tool("DRC", ["calibre","assura","magic"], drc_name)
|
||||||
OPTS.lvs_exe = get_tool("LVS", ["calibre","assura","netgen"], OPTS.lvs_name)
|
OPTS.lvs_exe = get_tool("LVS", ["calibre","assura","netgen"], lvs_name)
|
||||||
OPTS.pex_exe = get_tool("PEX", ["calibre","magic"], OPTS.pex_name)
|
OPTS.pex_exe = get_tool("PEX", ["calibre","magic"], pex_name)
|
||||||
|
|
||||||
if OPTS.drc_exe == None:
|
if OPTS.drc_exe == None:
|
||||||
from .none import run_drc,print_drc_stats
|
from .none import run_drc, print_drc_stats
|
||||||
elif "calibre"==OPTS.drc_exe[0]:
|
elif "calibre"==OPTS.drc_exe[0]:
|
||||||
from .calibre import run_drc,print_drc_stats
|
from .calibre import run_drc, print_drc_stats
|
||||||
elif "assura"==OPTS.drc_exe[0]:
|
elif "assura"==OPTS.drc_exe[0]:
|
||||||
from .assura import run_drc,print_drc_stats
|
from .assura import run_drc, print_drc_stats
|
||||||
elif "magic"==OPTS.drc_exe[0]:
|
elif "magic"==OPTS.drc_exe[0]:
|
||||||
from .magic import run_drc,print_drc_stats
|
from .magic import run_drc, print_drc_stats
|
||||||
else:
|
else:
|
||||||
debug.warning("Did not find a supported DRC tool.")
|
debug.warning("Did not find a supported DRC tool.")
|
||||||
|
|
||||||
if OPTS.lvs_exe == None:
|
if OPTS.lvs_exe == None:
|
||||||
from .none import run_lvs,print_lvs_stats
|
from .none import run_lvs, print_lvs_stats
|
||||||
elif "calibre"==OPTS.lvs_exe[0]:
|
elif "calibre"==OPTS.lvs_exe[0]:
|
||||||
from .calibre import run_lvs,print_lvs_stats
|
from .calibre import run_lvs, print_lvs_stats
|
||||||
elif "assura"==OPTS.lvs_exe[0]:
|
elif "assura"==OPTS.lvs_exe[0]:
|
||||||
from .assura import run_lvs,print_lvs_stats
|
from .assura import run_lvs, print_lvs_stats
|
||||||
elif "netgen"==OPTS.lvs_exe[0]:
|
elif "netgen"==OPTS.lvs_exe[0]:
|
||||||
from .magic import run_lvs,print_lvs_stats
|
from .magic import run_lvs, print_lvs_stats
|
||||||
else:
|
else:
|
||||||
debug.warning("Did not find a supported LVS tool.")
|
debug.warning("Did not find a supported LVS tool.")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
process_corners = ["TT"]
|
||||||
|
supply_voltages = [1.0]
|
||||||
|
temperatures = [25]
|
||||||
|
|
||||||
|
drc_name = "calibre"
|
||||||
|
lvs_name = "calibre"
|
||||||
|
pex_name = "calibre"
|
||||||
|
|
@ -336,3 +336,14 @@ parameter["bitcell_drain_cap"] = 0.1 #In Femto-Farad, approximation of dr
|
||||||
##END Spice Simulation Parameters
|
##END Spice Simulation Parameters
|
||||||
###################################################
|
###################################################
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##BEGIN Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
drc_name = "calibre"
|
||||||
|
lvs_name = "calibre"
|
||||||
|
pex_name = "calibre"
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##END Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,5 @@ except:
|
||||||
DRCLVS_HOME=OPENRAM_TECH+"/scn3me_subm/tech"
|
DRCLVS_HOME=OPENRAM_TECH+"/scn3me_subm/tech"
|
||||||
os.environ["DRCLVS_HOME"] = DRCLVS_HOME
|
os.environ["DRCLVS_HOME"] = DRCLVS_HOME
|
||||||
|
|
||||||
# try:
|
os.environ["SPICE_MODEL_DIR"] = "{0}/models".format(os.path.dirname(__file__))
|
||||||
# SPICE_MODEL_DIR = os.path.abspath(os.environ.get("SPICE_MODEL_DIR"))
|
|
||||||
# except:
|
|
||||||
OPENRAM_TECH=os.path.abspath(os.environ.get("OPENRAM_TECH"))
|
|
||||||
os.environ["SPICE_MODEL_DIR"] = "{0}/{1}/models".format(OPENRAM_TECH, TECHNOLOGY)
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -277,3 +277,15 @@ parameter["bitcell_drain_cap"] = 0.2 #In Femto-Farad, approximation of dr
|
||||||
###################################################
|
###################################################
|
||||||
##END Spice Simulation Parameters
|
##END Spice Simulation Parameters
|
||||||
###################################################
|
###################################################
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##BEGIN Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
drc_name = "magic"
|
||||||
|
lvs_name = "netgen"
|
||||||
|
pex_name = "magic"
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##END Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,5 @@ except:
|
||||||
DRCLVS_HOME=OPENRAM_TECH+"/scn4m_subm/tech"
|
DRCLVS_HOME=OPENRAM_TECH+"/scn4m_subm/tech"
|
||||||
os.environ["DRCLVS_HOME"] = DRCLVS_HOME
|
os.environ["DRCLVS_HOME"] = DRCLVS_HOME
|
||||||
|
|
||||||
# try:
|
os.environ["SPICE_MODEL_DIR"] = "{0}/models".format(os.path.dirname(__file__))
|
||||||
# SPICE_MODEL_DIR = os.path.abspath(os.environ.get("SPICE_MODEL_DIR"))
|
|
||||||
# except:
|
|
||||||
OPENRAM_TECH=os.path.abspath(os.environ.get("OPENRAM_TECH"))
|
|
||||||
os.environ["SPICE_MODEL_DIR"] = "{0}/{1}/models".format(OPENRAM_TECH, TECHNOLOGY)
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
process_corners = ["TT"]
|
||||||
|
supply_voltages = [5.0]
|
||||||
|
temperatures = [25]
|
||||||
|
|
||||||
|
drc_name = "magic"
|
||||||
|
lvs_name = "netgen"
|
||||||
|
pex_name = "magic"
|
||||||
|
|
@ -301,3 +301,15 @@ parameter["bitcell_drain_cap"] = 0.2 #In Femto-Farad, approximation of dr
|
||||||
###################################################
|
###################################################
|
||||||
##END Spice Simulation Parameters
|
##END Spice Simulation Parameters
|
||||||
###################################################
|
###################################################
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##BEGIN Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
drc_name = "magic"
|
||||||
|
lvs_name = "netgen"
|
||||||
|
pex_name = "magic"
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
##END Technology Tool Preferences
|
||||||
|
###################################################
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue