summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2017-11-10 03:31:33 -0800
committerGabe Black <gabeblack@google.com>2017-11-13 17:12:11 +0000
commit8327f8eb72764a277c4c5d21f483e0cd491c2d0e (patch)
tree0b34625e7ce65e0dacc32fa2a530ebe05774834f
parent4caa11a3bf0de4caca2a8851e5c0b584b5d309c2 (diff)
downloadgem5-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.py68
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'