mirror of https://github.com/VLSIDA/OpenRAM.git
Added model selection option.
This commit is contained in:
parent
8a75b83889
commit
fc55cd194d
|
|
@ -11,9 +11,7 @@ import math
|
||||||
import datetime
|
import datetime
|
||||||
from .setup_hold import *
|
from .setup_hold import *
|
||||||
from .delay import *
|
from .delay import *
|
||||||
from .elmore import *
|
|
||||||
from .charutils import *
|
from .charutils import *
|
||||||
from .linear_regression import *
|
|
||||||
import tech
|
import tech
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from globals import OPTS
|
from globals import OPTS
|
||||||
|
|
@ -585,16 +583,24 @@ class lib:
|
||||||
def compute_delay(self):
|
def compute_delay(self):
|
||||||
"""Compute SRAM delays for current corner"""
|
"""Compute SRAM delays for current corner"""
|
||||||
if self.use_model:
|
if self.use_model:
|
||||||
|
model_name_lc = OPTS.model_name.lower()
|
||||||
|
if model_name_lc == "linear_regression":
|
||||||
|
from .linear_regression import linear_regression as model
|
||||||
|
elif model_name_lc == "elmore":
|
||||||
|
from .elmore import elmore as model
|
||||||
|
else:
|
||||||
|
debug.error("{} model not recognized. See options.py for available models.".format(OPTS.model_name))
|
||||||
import math
|
import math
|
||||||
#FIXME: ML models only designed for delay. Cannot produce all values for Lib
|
#FIXME: ML models only designed for delay. Cannot produce all values for Lib
|
||||||
d = linear_regression()
|
m = model()
|
||||||
temp_wpr = 2.0 #OPTS not working right now
|
#temp_wpr = 2.0 #OPTS not working right now
|
||||||
log_num_words = math.log(OPTS.num_words, 2)
|
log_num_words = math.log(OPTS.num_words, 2)
|
||||||
|
debug.info(1, "OPTS.words_per_row={}".format(OPTS.words_per_row))
|
||||||
model_inputs = [log_num_words,
|
model_inputs = [log_num_words,
|
||||||
OPTS.word_size,
|
OPTS.word_size,
|
||||||
temp_wpr,
|
OPTS.words_per_row,
|
||||||
self.sram.width * self.sram.height]
|
self.sram.width * self.sram.height]
|
||||||
char_results = d.get_prediction(model_inputs)
|
char_results = m.get_prediction(model_inputs)
|
||||||
|
|
||||||
#self.d = elmore(self.sram, self.sp_file, self.corner)
|
#self.d = elmore(self.sram, self.sp_file, self.corner)
|
||||||
# char_results = self.d.analytical_delay(self.slews,self.loads)
|
# char_results = self.d.analytical_delay(self.slews,self.loads)
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,9 @@ class options(optparse.Values):
|
||||||
use_pex = False
|
use_pex = False
|
||||||
# Output config with all options
|
# Output config with all options
|
||||||
output_extended_config = True
|
output_extended_config = True
|
||||||
|
# Determines which analytical model to use.
|
||||||
|
# Available Models: elmore, linear_regression
|
||||||
|
model_name = "linear_regression"
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Tool options
|
# Tool options
|
||||||
|
|
@ -152,8 +154,6 @@ class options(optparse.Values):
|
||||||
bitcell = "bitcell"
|
bitcell = "bitcell"
|
||||||
buf_dec = "pbuf"
|
buf_dec = "pbuf"
|
||||||
column_mux_array = "column_mux_array"
|
column_mux_array = "column_mux_array"
|
||||||
col_cap = "col_cap"
|
|
||||||
col_cap_array = "col_cap_array"
|
|
||||||
control_logic = "control_logic"
|
control_logic = "control_logic"
|
||||||
decoder = "hierarchical_decoder"
|
decoder = "hierarchical_decoder"
|
||||||
delay_chain = "delay_chain"
|
delay_chain = "delay_chain"
|
||||||
|
|
@ -162,12 +162,10 @@ class options(optparse.Values):
|
||||||
inv_dec = "pinv"
|
inv_dec = "pinv"
|
||||||
nand2_dec = "pnand2"
|
nand2_dec = "pnand2"
|
||||||
nand3_dec = "pnand3"
|
nand3_dec = "pnand3"
|
||||||
nand4_dec = "pnand4"
|
nand4_dec = "pnand4" # Not available right now
|
||||||
precharge_array = "precharge_array"
|
precharge_array = "precharge_array"
|
||||||
ptx = "ptx"
|
ptx = "ptx"
|
||||||
replica_bitline = "replica_bitline"
|
replica_bitline = "replica_bitline"
|
||||||
row_cap = "row_cap"
|
|
||||||
row_cap_array = "row_cap_array"
|
|
||||||
sense_amp_array = "sense_amp_array"
|
sense_amp_array = "sense_amp_array"
|
||||||
sense_amp = "sense_amp"
|
sense_amp = "sense_amp"
|
||||||
tri_gate_array = "tri_gate_array"
|
tri_gate_array = "tri_gate_array"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue