config: Add Current as a parameter type

This patch adds the Python parameter type Current, which is used for
the DRAM power modelling (to start with). With this addition we avoid
implicit unit assumptions.
This commit is contained in:
Andreas Hansson 2014-10-09 17:52:00 -04:00
parent 06f4b521aa
commit c81517c293
2 changed files with 33 additions and 0 deletions

View file

@ -1485,6 +1485,31 @@ class Voltage(float,ParamValue):
def ini_str(self):
return '%f' % self.getValue()
class Current(float, ParamValue):
cxx_type = 'double'
ex_str = "1mA"
cmd_line_settable = False
def __new__(cls, value):
# convert to current
val = convert.toCurrent(value)
return super(cls, Current).__new__(cls, val)
def __call__(self, value):
val = convert.toCurrent(value)
self.__init__(val)
return value
def __str__(self):
return str(self.getValue())
def getValue(self):
value = float(self)
return value
def ini_str(self):
return '%f' % self.getValue()
class NetworkBandwidth(float,ParamValue):
cxx_type = 'float'
ex_str = "1Gbps"

View file

@ -311,3 +311,11 @@ def toVoltage(value):
raise ValueError, "cannot convert '%s' to voltage" % value
def toCurrent(value):
if not isinstance(value, str):
raise TypeError, "wrong type '%s' should be str" % type(value)
if value.endswith('A'):
return toFloat(value[:-1])
raise ValueError, "cannot convert '%s' to current" % value