python: Change m5's tick mechanism of rounding non intergral ticks
This commit changes m5's tick rounding mechanism from python's round() to python's ceil() function. Currently, non intergral ticks are rounded by round() function in python. In python2, this function rounds values >= 0.5 to 1. However, in python3, 0.5 is rounded to 0. This causes the function to return 0 ticks for non-zero second values, which doesn't make sense, and also causes several tests to fail. ceil() function is now used to round up the tick values. This makes more sense as non-zero second values won't be rounded to zero in any cases. Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu> Change-Id: I14c43e38e8c678f77baf13407f7eeff4b86f1014 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29372 Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
from __future__ import print_function
|
||||
from math import ceil
|
||||
import six
|
||||
if six.PY3:
|
||||
long = int
|
||||
@@ -73,7 +74,7 @@ def fromSeconds(value):
|
||||
# convert the value from time to ticks
|
||||
value *= _m5.core.getClockFrequency()
|
||||
|
||||
int_value = int(round(value))
|
||||
int_value = int(ceil(value))
|
||||
err = (value - int_value) / value
|
||||
if err > frequency_tolerance:
|
||||
warn("rounding error > tolerance\n %f rounded to %d", value,
|
||||
|
||||
Reference in New Issue
Block a user