From 7aa1395877534e4244b00d65776efa1bde59aeb0 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Thu, 21 May 2020 17:41:29 -0700 Subject: [PATCH] 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 Change-Id: I14c43e38e8c678f77baf13407f7eeff4b86f1014 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29372 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- src/python/m5/ticks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/python/m5/ticks.py b/src/python/m5/ticks.py index 64b7cb811..047116ac7 100644 --- a/src/python/m5/ticks.py +++ b/src/python/m5/ticks.py @@ -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, -- 2.30.2