python: Fix unknown params and proxy multiplication
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Thu, 7 Mar 2019 16:12:23 +0000 (17:12 +0100)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Thu, 14 Mar 2019 12:11:29 +0000 (12:11 +0000)
One of the recent changes made params not visible anymore:
    NameError: global name 'params' is not defined
This is fixed by adding the proper import statement.

However, the second error makes the multiplication values be assigned
to other proxies (that are not even used on the multiplication). A
workaround is added to prevent this from happening by extending "*=".

Change-Id: I3ad276a456efff62058672d16caac2b3ad1b326b
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17048
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

src/python/m5/proxy.py

index d289545553bc70bd9ea61fc4a8c20acc84175ab2..86321964a02783002918c312e29a83fbc3005a65 100644 (file)
@@ -87,6 +87,7 @@ class BaseProxy(object):
     __rmul__ = __mul__
 
     def _mulcheck(self, result, base):
+        from . import params
         for multiplier in self._multipliers:
             if isproxy(multiplier):
                 multiplier = multiplier.unproxy(base)
@@ -96,7 +97,7 @@ class BaseProxy(object):
                     raise TypeError(
                         "Proxy multiplier must be a numerical param")
                 multiplier = multiplier.getValue()
-            result *= multiplier
+            result = result * multiplier
         return result
 
     def unproxy(self, base):