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:
parent
06f4b521aa
commit
c81517c293
2 changed files with 33 additions and 0 deletions
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue