summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/m5/config.py40
-rw-r--r--python/m5/objects/Bus.mpy2
2 files changed, 39 insertions, 3 deletions
diff --git a/python/m5/config.py b/python/m5/config.py
index e097173f3..1af2c5e3e 100644
--- a/python/m5/config.py
+++ b/python/m5/config.py
@@ -27,7 +27,7 @@
from __future__ import generators
import os, re, sys, types, inspect
-from m5 import panic
+from m5 import panic, env
from convert import *
from multidict import multidict
@@ -1340,6 +1340,42 @@ class Enum(ParamType):
# "Constants"... handy aliases for various values.
#
+class Frequency(int,ParamType):
+ _cpp_param_decl = 'Tick'
+
+ def __new__(cls, value):
+ if isinstance(value, basestring):
+ val = int(env['FREQUENCY'] / toFrequency(value))
+ else:
+ val = toFrequency(value)
+ return super(cls, Frequency).__new__(cls, val)
+
+ def _convert(cls, value):
+ return cls(value)
+ _convert = classmethod(_convert)
+
+ def _string(cls, value):
+ return '%d' % value
+ _string = classmethod(_string)
+
+class Latency(int,ParamType):
+ _cpp_param_decl = 'Tick'
+ def __new__(cls, value):
+ if isinstance(value, basestring):
+ val = int(env['FREQUENCY'] * toLatency(value))
+ else:
+ val = toLatency(value)
+ return super(cls, Latency).__new__(cls, val)
+
+ def _convert(cls, value):
+ return cls(value)
+ _convert = classmethod(_convert)
+
+ def _string(cls, value):
+ return '%d' % value
+ _string = classmethod(_string)
+
+
# Some memory range specifications use this as a default upper bound.
MaxAddr = Addr.max
MaxTick = Tick.max
@@ -1383,6 +1419,6 @@ __all__ = ['ConfigNode', 'SimObject', 'ParamContext', 'Param', 'VectorParam',
'Int', 'Unsigned', 'Int8', 'UInt8', 'Int16', 'UInt16',
'Int32', 'UInt32', 'Int64', 'UInt64',
'Counter', 'Addr', 'Tick', 'Percent',
- 'MemorySize',
+ 'MemorySize', 'Frequency', 'Latency',
'Range', 'AddrRange', 'MaxAddr', 'MaxTick', 'AllMemory', 'NULL',
'NextEthernetAddr', 'instantiate']
diff --git a/python/m5/objects/Bus.mpy b/python/m5/objects/Bus.mpy
index 025d69785..330a2c82b 100644
--- a/python/m5/objects/Bus.mpy
+++ b/python/m5/objects/Bus.mpy
@@ -2,5 +2,5 @@ from BaseHier import BaseHier
simobj Bus(BaseHier):
type = 'Bus'
- clock_ratio = Param.Int("ratio of CPU to bus frequency")
+ clock_ratio = Param.Frequency("ratio of CPU to bus frequency")
width = Param.Int("bus width in bytes")