python: Fix unknown params and proxy multiplication

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 <>
Reviewed-by: Andreas Sandberg <>
Reviewed-by: Jason Lowe-Power <>
Reviewed-by: Nikos Nikoleris <>
Maintainer: Andreas Sandberg <>
diff --git a/src/python/m5/ b/src/python/m5/
index d289545..8632196 100644
--- a/src/python/m5/
+++ b/src/python/m5/
@@ -87,6 +87,7 @@
     __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 @@
                     raise TypeError(
                         "Proxy multiplier must be a numerical param")
                 multiplier = multiplier.getValue()
-            result *= multiplier
+            result = result * multiplier
         return result
     def unproxy(self, base):