2016-11-08 18:57:35 +01:00
|
|
|
import optparse
|
|
|
|
|
import getpass
|
2016-11-11 23:05:14 +01:00
|
|
|
import os
|
2016-11-08 18:57:35 +01:00
|
|
|
|
|
|
|
|
class options(optparse.Values):
|
|
|
|
|
"""
|
2018-01-20 01:38:19 +01:00
|
|
|
Class for holding all of the OpenRAM options. All of these options can be over-riden in a configuration file
|
|
|
|
|
that is the sole required command-line positional argument for openram.py.
|
2016-11-08 18:57:35 +01:00
|
|
|
"""
|
2016-11-15 17:57:06 +01:00
|
|
|
|
2016-11-08 18:57:35 +01:00
|
|
|
# This is the technology directory.
|
|
|
|
|
openram_tech = ""
|
|
|
|
|
# This is the name of the technology.
|
|
|
|
|
tech_name = ""
|
|
|
|
|
# This is the temp directory where all intermediate results are stored.
|
2018-01-20 01:39:14 +01:00
|
|
|
openram_temp = "/tmp/openram_{0}_{1}_temp/".format(getpass.getuser(),os.getpid())
|
|
|
|
|
#openram_temp = "/Users/{}/openram_temp/".format(getpass.getuser())
|
2016-11-08 18:57:35 +01:00
|
|
|
# This is the verbosity level to control debug information. 0 is none, 1
|
|
|
|
|
# is minimal, etc.
|
|
|
|
|
debug_level = 0
|
|
|
|
|
# This determines whether LVS and DRC is checked for each submodule.
|
|
|
|
|
check_lvsdrc = True
|
2017-11-14 22:24:14 +01:00
|
|
|
# Variable to select the variant of spice
|
2017-11-23 00:57:29 +01:00
|
|
|
spice_name = ""
|
2016-11-08 18:57:35 +01:00
|
|
|
# Should we print out the banner at startup
|
|
|
|
|
print_banner = True
|
2017-11-14 23:59:14 +01:00
|
|
|
# The DRC/LVS/PEX executable being used which is derived from the user PATH.
|
2018-01-12 23:39:42 +01:00
|
|
|
drc_exe = None
|
|
|
|
|
lvs_exe = None
|
|
|
|
|
pex_exe = None
|
2016-11-08 18:57:35 +01:00
|
|
|
# The spice executable being used which is derived from the user PATH.
|
|
|
|
|
spice_exe = ""
|
|
|
|
|
# Run with extracted parasitics
|
2016-11-15 18:03:16 +01:00
|
|
|
use_pex = False
|
2017-11-09 20:13:44 +01:00
|
|
|
# Remove noncritical memory cells for characterization speed-up
|
2017-11-14 22:24:14 +01:00
|
|
|
trim_netlist = True
|
2017-12-19 18:01:24 +01:00
|
|
|
# Use detailed LEF blockages
|
|
|
|
|
detailed_blockages = True
|
2016-11-08 18:57:35 +01:00
|
|
|
# Define the output file paths
|
2018-01-20 01:38:19 +01:00
|
|
|
output_path = "."
|
2016-11-08 18:57:35 +01:00
|
|
|
# Define the output file base name
|
2018-01-20 01:38:19 +01:00
|
|
|
output_name = "sram"
|
2017-11-09 20:13:44 +01:00
|
|
|
# Use analytical delay models by default rather than (slow) characterization
|
|
|
|
|
analytical_delay = True
|
2018-02-01 20:53:02 +01:00
|
|
|
# Purge the temp directory after a successful run (doesn't purge on errors, anyhow)
|
|
|
|
|
purge_temp = True
|
2018-02-10 00:33:03 +01:00
|
|
|
|
|
|
|
|
# These are the configuration parameters
|
|
|
|
|
rw_ports = 1
|
|
|
|
|
r_ports = 0
|
|
|
|
|
supply_voltages = [3]
|
|
|
|
|
temperatures = [25]
|
|
|
|
|
process_corners = ["TT"]
|
2018-02-01 20:53:02 +01:00
|
|
|
|
2018-01-20 01:38:19 +01:00
|
|
|
|
|
|
|
|
# These are the default modules that can be over-riden
|
|
|
|
|
decoder = "hierarchical_decoder"
|
|
|
|
|
ms_flop = "ms_flop"
|
|
|
|
|
ms_flop_array = "ms_flop_array"
|
|
|
|
|
control_logic = "control_logic"
|
|
|
|
|
bitcell_array = "bitcell_array"
|
|
|
|
|
sense_amp = "sense_amp"
|
|
|
|
|
sense_amp_array = "sense_amp_array"
|
|
|
|
|
precharge_array = "precharge_array"
|
|
|
|
|
column_mux_array = "single_level_column_mux_array"
|
|
|
|
|
write_driver = "write_driver"
|
|
|
|
|
write_driver_array = "write_driver_array"
|
|
|
|
|
tri_gate = "tri_gate"
|
|
|
|
|
tri_gate_array = "tri_gate_array"
|
|
|
|
|
wordline_driver = "wordline_driver"
|
|
|
|
|
replica_bitline = "replica_bitline"
|
|
|
|
|
replica_bitcell = "replica_bitcell"
|
|
|
|
|
bitcell = "bitcell"
|
|
|
|
|
delay_chain = "delay_chain"
|
|
|
|
|
|