ticks.py (13431:40bbea43ddf7) | ticks.py (13663:9b64aeabf9a5) |
---|---|
1# Copyright (c) 2007 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 33 unchanged lines hidden (view full) --- 42 43 if isinstance(ticksPerSecond, (int, long)): 44 tps = ticksPerSecond 45 elif isinstance(ticksPerSecond, float): 46 tps = ticksPerSecond 47 elif isinstance(ticksPerSecond, str): 48 tps = round(convert.anyToFrequency(ticksPerSecond)) 49 else: | 1# Copyright (c) 2007 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 33 unchanged lines hidden (view full) --- 42 43 if isinstance(ticksPerSecond, (int, long)): 44 tps = ticksPerSecond 45 elif isinstance(ticksPerSecond, float): 46 tps = ticksPerSecond 47 elif isinstance(ticksPerSecond, str): 48 tps = round(convert.anyToFrequency(ticksPerSecond)) 49 else: |
50 raise TypeError, \ 51 "wrong type '%s' for ticksPerSecond" % type(ticksPerSecond) | 50 raise TypeError( 51 "wrong type '%s' for ticksPerSecond" % type(ticksPerSecond)) |
52 _m5.core.setClockFrequency(int(tps)) 53 54# how big does a rounding error need to be before we warn about it? 55frequency_tolerance = 0.001 # 0.1% 56 57def fromSeconds(value): 58 import _m5.core 59 60 if not isinstance(value, float): | 52 _m5.core.setClockFrequency(int(tps)) 53 54# how big does a rounding error need to be before we warn about it? 55frequency_tolerance = 0.001 # 0.1% 56 57def fromSeconds(value): 58 import _m5.core 59 60 if not isinstance(value, float): |
61 raise TypeError, "can't convert '%s' to type tick" % type(value) | 61 raise TypeError("can't convert '%s' to type tick" % type(value)) |
62 63 # once someone needs to convert to seconds, the global frequency 64 # had better be fixed 65 if not _m5.core.clockFrequencyFixed(): | 62 63 # once someone needs to convert to seconds, the global frequency 64 # had better be fixed 65 if not _m5.core.clockFrequencyFixed(): |
66 raise AttributeError, \ 67 "In order to do conversions, the global frequency must be fixed" | 66 raise AttributeError( 67 "In order to do conversions, the global frequency must be fixed") |
68 69 if value == 0: 70 return 0 71 72 # convert the value from time to ticks 73 value *= _m5.core.getClockFrequency() 74 75 int_value = int(round(value)) 76 err = (value - int_value) / value 77 if err > frequency_tolerance: 78 warn("rounding error > tolerance\n %f rounded to %d", value, 79 int_value) 80 return int_value 81 82__all__ = [ 'setGlobalFrequency', 'fixGlobalFrequency', 'fromSeconds', 83 'frequency_tolerance' ] | 68 69 if value == 0: 70 return 0 71 72 # convert the value from time to ticks 73 value *= _m5.core.getClockFrequency() 74 75 int_value = int(round(value)) 76 err = (value - int_value) / value 77 if err > frequency_tolerance: 78 warn("rounding error > tolerance\n %f rounded to %d", value, 79 int_value) 80 return int_value 81 82__all__ = [ 'setGlobalFrequency', 'fixGlobalFrequency', 'fromSeconds', 83 'frequency_tolerance' ] |