From 8327f8eb72764a277c4c5d21f483e0cd491c2d0e Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 10 Nov 2017 03:31:33 -0800 Subject: config: Simplify the definitions of the Voltage and Current params. These had a lot of code which duplicated what was already in the Float param value class. Also, printing into the ini file with "%f" forces python to truncate values which require more precision than the fixed float format supports. Change-Id: Iad9623b71a31d17b69c184082585dcbb881eaa20 Reviewed-on: https://gem5-review.googlesource.com/5622 Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg --- src/python/m5/params.py | 68 +++++++++---------------------------------------- 1 file changed, 12 insertions(+), 56 deletions(-) diff --git a/src/python/m5/params.py b/src/python/m5/params.py index 9ca4f2d4d..8bac9f0d6 100644 --- a/src/python/m5/params.py +++ b/src/python/m5/params.py @@ -1541,71 +1541,27 @@ class Clock(TickParamValue): def ini_str(self): return self.period.ini_str() -class Voltage(float,ParamValue): - cxx_type = 'double' +class Voltage(Float): ex_str = "1V" - cmd_line_settable = True def __new__(cls, value): - # convert to voltage - val = convert.toVoltage(value) - return super(cls, Voltage).__new__(cls, val) - - def __call__(self, value): - val = convert.toVoltage(value) - self.__init__(val) - return value - - def __str__(self): - return str(self.getValue()) - - def getValue(self): - value = float(self) - return value + value = convert.toVoltage(value) + return super(cls, Voltage).__new__(cls, value) - def ini_str(self): - return '%f' % self.getValue() - - @classmethod - def cxx_ini_predecls(cls, code): - code('#include ') - - @classmethod - def cxx_ini_parse(self, code, src, dest, ret): - code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest)) + def __init__(self, value): + value = convert.toVoltage(value) + super(Voltage, self).__init__(value) -class Current(float, ParamValue): - cxx_type = 'double' +class Current(Float): 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 + value = convert.toCurrent(value) + return super(cls, Current).__new__(cls, value) - def ini_str(self): - return '%f' % self.getValue() - - @classmethod - def cxx_ini_predecls(cls, code): - code('#include ') - - @classmethod - def cxx_ini_parse(self, code, src, dest, ret): - code('%s (std::istringstream(%s) >> %s).eof();' % (ret, src, dest)) + def __init__(self, value): + value = convert.toCurrent(value) + super(Current, self).__init__(value) class NetworkBandwidth(float,ParamValue): cxx_type = 'float' -- cgit v1.2.3