summaryrefslogtreecommitdiff
path: root/src/python
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2014-10-09 17:52:00 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2014-10-09 17:52:00 -0400
commitc81517c293cdd3f612efae94d1143fb0cf002287 (patch)
tree9ea19c7d392e4ba450aa8f4f95831c51e7399cbd /src/python
parent06f4b521aa3ab32fbde45c97568bd84d218921d6 (diff)
downloadgem5-c81517c293cdd3f612efae94d1143fb0cf002287.tar.xz
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.
Diffstat (limited to 'src/python')
-rw-r--r--src/python/m5/params.py25
-rw-r--r--src/python/m5/util/convert.py8
2 files changed, 33 insertions, 0 deletions
diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index 6c4a61d6a..f16cabaff 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -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"
diff --git a/src/python/m5/util/convert.py b/src/python/m5/util/convert.py
index 26f351e99..351ee1ee0 100644
--- a/src/python/m5/util/convert.py
+++ b/src/python/m5/util/convert.py
@@ -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