diff options
author | Gabe Black <gabeblack@google.com> | 2017-11-10 03:31:33 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-11-13 17:12:11 +0000 |
commit | 8327f8eb72764a277c4c5d21f483e0cd491c2d0e (patch) | |
tree | 0b34625e7ce65e0dacc32fa2a530ebe05774834f | |
parent | 4caa11a3bf0de4caca2a8851e5c0b584b5d309c2 (diff) | |
download | gem5-8327f8eb72764a277c4c5d21f483e0cd491c2d0e.tar.xz |
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 <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r-- | src/python/m5/params.py | 68 |
1 files 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 <sstream>') - - @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 <sstream>') - - @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' |