python: Change m5's tick mechanism of rounding non intergral ticks
authorHoa Nguyen <hoanguyen@ucdavis.edu>
Fri, 22 May 2020 00:41:29 +0000 (17:41 -0700)
committerHoa Nguyen <hoanguyen@ucdavis.edu>
Fri, 22 May 2020 09:15:59 +0000 (09:15 +0000)
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>
src/python/m5/ticks.py

index 64b7cb8118fe2ddee49d0832cd2f96a134ffa38b..047116ac781edf07aff4070e1b0d2a1c79038d0d 100644 (file)
@@ -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,