diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/m5/config.py | 40 | ||||
-rw-r--r-- | python/m5/objects/Bus.mpy | 2 |
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") |