Gabe Black has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8762 )

Change subject: config: Switch from the print statement to the print function.
......................................................................

config: Switch from the print statement to the print function.

Change-Id: I701fa58cfcfa2767ce9ad24da314a053889878d0
Reviewed-on: https://gem5-review.googlesource.com/8762
Reviewed-by: Andreas Sandberg <andreas.sandb...@arm.com>
Reviewed-by: Jason Lowe-Power <ja...@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutier...@amd.com>
Maintainer: Gabe Black <gabebl...@google.com>
---
M configs/common/Benchmarks.py
M configs/common/CacheConfig.py
M configs/common/CpuConfig.py
M configs/common/FSConfig.py
M configs/common/GPUTLBConfig.py
M configs/common/MemConfig.py
M configs/common/PlatformConfig.py
M configs/common/Simulation.py
M configs/common/cores/arm/HPI.py
M configs/common/cpu2000.py
M configs/dram/lat_mem_rd.py
M configs/dram/low_power_sweep.py
M configs/dram/sweep.py
M configs/example/apu_se.py
M configs/example/arm/fs_bigLITTLE.py
M configs/example/arm/fs_power.py
M configs/example/arm/starter_fs.py
M configs/example/arm/starter_se.py
M configs/example/etrace_replay.py
M configs/example/fs.py
M configs/example/garnet_synth_traffic.py
M configs/example/hmctest.py
M configs/example/memcheck.py
M configs/example/memtest.py
M configs/example/read_config.py
M configs/example/ruby_direct_test.py
M configs/example/ruby_gpu_random_test.py
M configs/example/ruby_mem_test.py
M configs/example/ruby_random_test.py
M configs/example/se.py
M configs/learning_gem5/part1/simple.py
M configs/learning_gem5/part1/two_level.py
M configs/learning_gem5/part2/hello_goodbye.py
M configs/learning_gem5/part2/run_simple.py
M configs/learning_gem5/part2/simple_cache.py
M configs/learning_gem5/part2/simple_memobj.py
M configs/ruby/Ruby.py
M configs/splash2/cluster.py
M configs/splash2/run.py
39 files changed, 273 insertions(+), 194 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved
  Andreas Sandberg: Looks good to me, approved
  Anthony Gutierrez: Looks good to me, approved
  Gabe Black: Looks good to me, approved



diff --git a/configs/common/Benchmarks.py b/configs/common/Benchmarks.py
index dec1e3e..b7d10b5 100644
--- a/configs/common/Benchmarks.py
+++ b/configs/common/Benchmarks.py
@@ -26,6 +26,8 @@
 #
 # Authors: Ali Saidi

+from __future__ import print_function
+
 from SysPaths import script, disk, binary
 from os import environ as env
 from m5.defines import buildEnv
@@ -63,8 +65,8 @@
         elif buildEnv['TARGET_ISA'] == 'sparc':
             return env.get('LINUX_IMAGE', disk('disk.s10hw2'))
         else:
- print "Don't know what default disk image to use for %s ISA" % \
-                buildEnv['TARGET_ISA']
+            print("Don't know what default disk image to use for %s ISA" %
+                buildEnv['TARGET_ISA'])
             exit(1)

     def rootdev(self):
diff --git a/configs/common/CacheConfig.py b/configs/common/CacheConfig.py
index a0a18a3..3fa3676 100644
--- a/configs/common/CacheConfig.py
+++ b/configs/common/CacheConfig.py
@@ -41,13 +41,15 @@
 # Configure the M5 cache hierarchy config in one place
 #

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from Caches import *

 def config_cache(options, system):
if options.external_memory_system and (options.caches or options.l2cache): - print "External caches and internal caches are exclusive options.\n" + print("External caches and internal caches are exclusive options.\n")
         sys.exit(1)

     if options.external_memory_system:
@@ -57,7 +59,7 @@
         try:
             from cores.arm.O3_ARM_v7a import *
         except:
- print "O3_ARM_v7a_3 is unavailable. Did you compile the O3 model?" + print("O3_ARM_v7a_3 is unavailable. Did you compile the O3 model?")
             sys.exit(1)

         dcache_class, icache_class, l2_cache_class, walk_cache_class = \
diff --git a/configs/common/CpuConfig.py b/configs/common/CpuConfig.py
index 327c431..3f193ae 100644
--- a/configs/common/CpuConfig.py
+++ b/configs/common/CpuConfig.py
@@ -35,6 +35,8 @@
 #
 # Authors: Andreas Sandberg

+from __future__ import print_function
+
 from m5 import fatal
 import m5.objects
 import inspect
@@ -64,23 +66,23 @@
         cpu_class = _cpu_classes[name]
         return cpu_class
     except KeyError:
-        print "%s is not a valid CPU model." % (name,)
+        print("%s is not a valid CPU model." % (name,))
         sys.exit(1)

 def print_cpu_list():
     """Print a list of available CPU classes including their aliases."""

-    print "Available CPU classes:"
+    print("Available CPU classes:")
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
     for name, cls in _cpu_classes.items():
-        print "\t%s" % name
+        print("\t%s" % name)

         # Try to extract the class documentation from the class help
         # string.
         doc = inspect.getdoc(cls)
         if doc:
             for line in doc_wrapper.wrap(doc):
-                print line
+                print(line)

 def cpu_names():
     """Return a list of valid CPU names."""
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py
index fc8765b..42cfafe 100644
--- a/configs/common/FSConfig.py
+++ b/configs/common/FSConfig.py
@@ -39,6 +39,8 @@
 #
 # Authors: Kevin Lim

+from __future__ import print_function
+
 from m5.objects import *
 from Benchmarks import *
 from m5.util import *
@@ -259,7 +261,8 @@

     if isinstance(self.realview, VExpress_EMM64):
         if os.path.split(mdesc.disk())[-1] == 'linux-aarch32-ael.img':
- print "Selected 64-bit ARM architecture, updating default disk image..."
+            print("Selected 64-bit ARM architecture, updating default "
+                  "disk image...")
             mdesc.diskname = 'linaro-minimal-aarch64.img'


diff --git a/configs/common/GPUTLBConfig.py b/configs/common/GPUTLBConfig.py
index b7ea6dc..00746ce 100644
--- a/configs/common/GPUTLBConfig.py
+++ b/configs/common/GPUTLBConfig.py
@@ -33,6 +33,8 @@
 #  Author: Lisa Hsu
 #

+from __future__ import print_function
+
 # Configure the TLB hierarchy
 # Places which would probably need to be modified if you
 # want a different hierarchy are specified by a <Modify here .. >'
@@ -88,7 +90,7 @@
     elif options.TLB_config == "2CU":
         num_TLBs = n_cu >> 1
     else:
-        print "Bad option for TLB Configuration."
+        print("Bad option for TLB Configuration.")
         sys.exit(1)

#----------------------------------------------------------------------------------------
diff --git a/configs/common/MemConfig.py b/configs/common/MemConfig.py
index 475bbeb..3603580 100644
--- a/configs/common/MemConfig.py
+++ b/configs/common/MemConfig.py
@@ -36,6 +36,8 @@
 # Authors: Andreas Sandberg
 #          Andreas Hansson

+from __future__ import print_function
+
 import m5.objects
 import inspect
 import sys
@@ -64,23 +66,23 @@
         mem_class = _mem_classes[name]
         return mem_class
     except KeyError:
-        print "%s is not a valid memory controller." % (name,)
+        print("%s is not a valid memory controller." % (name,))
         sys.exit(1)

 def print_mem_list():
     """Print a list of available memory classes."""

-    print "Available memory classes:"
+    print("Available memory classes:")
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
     for name, cls in _mem_classes.items():
-        print "\t%s" % name
+        print("\t%s" % name)

         # Try to extract the class documentation from the class help
         # string.
         doc = inspect.getdoc(cls)
         if doc:
             for line in doc_wrapper.wrap(doc):
-                print line
+                print(line)

 def mem_names():
     """Return a list of valid memory names."""
@@ -223,8 +225,8 @@

             if opt_elastic_trace_en:
                 mem_ctrl.latency = '1ns'
-                print "For elastic trace, over-riding Simple Memory " \
-                    "latency to 1ns."
+                print("For elastic trace, over-riding Simple Memory "
+                    "latency to 1ns.")

             mem_ctrls.append(mem_ctrl)

diff --git a/configs/common/PlatformConfig.py b/configs/common/PlatformConfig.py
index e2589c0..34325f3 100644
--- a/configs/common/PlatformConfig.py
+++ b/configs/common/PlatformConfig.py
@@ -38,6 +38,8 @@
 # Authors: Andreas Sandberg
 #          Pierre-Yves Peneau

+from __future__ import print_function
+
 import m5.objects
 import inspect
 import sys
@@ -83,22 +85,22 @@
 def print_platform_list():
"""Print a list of available Platform classes including their aliases."""

-    print "Available Platform classes:"
+    print("Available Platform classes:")
doc_wrapper = TextWrapper(initial_indent="\t\t", subsequent_indent="\t\t")
     for name, cls in _platform_classes.items():
-        print "\t%s" % name
+        print("\t%s" % name)

         # Try to extract the class documentation from the class help
         # string.
         doc = inspect.getdoc(cls)
         if doc:
             for line in doc_wrapper.wrap(doc):
-                print line
+                print(line)

     if _platform_aliases:
-        print "\Platform aliases:"
+        print("\Platform aliases:")
         for alias, target in _platform_aliases.items():
-            print "\t%s => %s" % (alias, target)
+            print("\t%s => %s" % (alias, target))

 def platform_names():
     """Return a list of valid Platform names."""
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index 7c949b9..6df90cb 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -39,6 +39,8 @@
 #
 # Authors: Lisa Hsu

+from __future__ import print_function
+
 import sys
 from os import getcwd
 from os.path import join as joinpath
@@ -170,7 +172,7 @@
             weight_inst = float(match.group(3))
             interval_length = int(match.group(4))
             warmup_length = int(match.group(5))
-        print "Resuming from", checkpoint_dir
+        print("Resuming from", checkpoint_dir)
         simpoint_start_insts = []
         simpoint_start_insts.append(warmup_length)
         simpoint_start_insts.append(warmup_length + interval_length)
@@ -178,9 +180,9 @@
         if testsys.switch_cpus != None:
testsys.switch_cpus[0].simpoint_start_insts = simpoint_start_insts

-        print "Resuming from SimPoint",
-        print "#%d, start_inst:%d, weight:%f, interval:%d, warmup:%d" % \
- (index, start_inst, weight_inst, interval_length, warmup_length)
+        print("Resuming from SimPoint", end=' ')
+        print("#%d, start_inst:%d, weight:%f, interval:%d, warmup:%d" %
+ (index, start_inst, weight_inst, interval_length, warmup_length))

     else:
         dirs = listdir(cptdir)
@@ -210,10 +212,10 @@
         if options.checkpoint_restore != None:
             checkpoint_inst += options.checkpoint_restore

-        print "Creating checkpoint at inst:%d" % (checkpoint_inst)
+        print("Creating checkpoint at inst:%d" % (checkpoint_inst))
         exit_event = m5.simulate()
         exit_cause = exit_event.getCause()
-        print "exit cause = %s" % exit_cause
+        print("exit cause = %s" % exit_cause)

         # skip checkpoint instructions should they exist
         while exit_cause == "checkpoint":
@@ -223,7 +225,7 @@
         if exit_cause == "a thread reached the max instruction count":
             m5.checkpoint(joinpath(cptdir, "cpt.%s.%d" % \
                     (options.bench, checkpoint_inst)))
-            print "Checkpoint written."
+            print("Checkpoint written.")

     else:
         when, period = options.take_checkpoints.split(",", 1)
@@ -288,10 +290,10 @@

     simpoint_filename, weight_filename, interval_length, warmup_length = \
         options.take_simpoint_checkpoints.split(",", 3)
-    print "simpoint analysis file:", simpoint_filename
-    print "simpoint weight file:", weight_filename
-    print "interval length:", interval_length
-    print "warmup length:", warmup_length
+    print("simpoint analysis file:", simpoint_filename)
+    print("simpoint weight file:", weight_filename)
+    print("interval length:", interval_length)
+    print("warmup length:", warmup_length)

     interval_length = int(interval_length)
     warmup_length = int(warmup_length)
@@ -339,11 +341,11 @@
     simpoints.sort(key=lambda obj: obj[2])
     for s in simpoints:
         interval, weight, starting_inst_count, actual_warmup_length = s
-        print str(interval), str(weight), starting_inst_count, \
-            actual_warmup_length
+        print(str(interval), str(weight), starting_inst_count,
+            actual_warmup_length)
         simpoint_start_insts.append(starting_inst_count)

-    print "Total # of simpoints:", len(simpoints)
+    print("Total # of simpoints:", len(simpoints))
     testsys.cpu[0].simpoint_start_insts = simpoint_start_insts

     return (simpoints, interval_length)
@@ -364,7 +366,7 @@

             # skip checkpoint instructions should they exist
             while exit_event.getCause() == "checkpoint":
-                print "Found 'checkpoint' exit event...ignoring..."
+                print("Found 'checkpoint' exit event...ignoring...")
                 exit_event = m5.simulate()

             exit_cause = exit_event.getCause()
@@ -375,16 +377,16 @@
                 "cpt.simpoint_%02d_inst_%d_weight_%f_interval_%d_warmup_%d"
                 % (index, starting_inst_count, weight, interval_length,
                 actual_warmup_length)))
-            print "Checkpoint #%d written. start inst:%d weight:%f" % \
-                (num_checkpoints, starting_inst_count, weight)
+            print("Checkpoint #%d written. start inst:%d weight:%f" %
+                (num_checkpoints, starting_inst_count, weight))
             num_checkpoints += 1
             last_chkpnt_inst_count = starting_inst_count
         else:
             break
         index += 1

-    print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_cause)
-    print "%d checkpoints taken" % num_checkpoints
+    print('Exiting @ tick %i because %s' % (m5.curTick(), exit_cause))
+    print("%d checkpoints taken" % num_checkpoints)
     sys.exit(code)

 def restoreSimpointCheckpoint():
@@ -392,7 +394,7 @@
     exit_cause = exit_event.getCause()

     if exit_cause == "simpoint starting point found":
-        print "Warmed up! Dumping and resetting stats!"
+        print("Warmed up! Dumping and resetting stats!")
         m5.stats.dump()
         m5.stats.reset()

@@ -400,14 +402,14 @@
         exit_cause = exit_event.getCause()

         if exit_cause == "simpoint starting point found":
-            print "Done running SimPoint!"
+            print("Done running SimPoint!")
             sys.exit(exit_event.getCode())

-    print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_cause)
+    print('Exiting @ tick %i because %s' % (m5.curTick(), exit_cause))
     sys.exit(exit_event.getCode())

 def repeatSwitch(testsys, repeat_switch_cpu_list, maxtick, switch_freq):
-    print "starting switch loop"
+    print("starting switch loop")
     while True:
         exit_event = m5.simulate(switch_freq)
         exit_cause = exit_event.getCause()
@@ -489,10 +491,10 @@
         switch_class = getCPUClass(options.cpu_type)[0]
         if switch_class.require_caches() and \
                 not options.caches:
-            print "%s: Must be used with caches" % str(switch_class)
+            print("%s: Must be used with caches" % str(switch_class))
             sys.exit(1)
         if not switch_class.support_take_over():
-            print "%s: CPU switching not supported" % str(switch_class)
+            print("%s: CPU switching not supported" % str(switch_class))
             sys.exit(1)

         repeat_switch_cpus = [switch_class(switched_out=True, \
@@ -641,32 +643,32 @@

     if options.standard_switch or cpu_class:
         if options.standard_switch:
-            print "Switch at instruction count:%s" % \
-                    str(testsys.cpu[0].max_insts_any_thread)
+            print("Switch at instruction count:%s" %
+                    str(testsys.cpu[0].max_insts_any_thread))
             exit_event = m5.simulate()
         elif cpu_class and options.fast_forward:
-            print "Switch at instruction count:%s" % \
-                    str(testsys.cpu[0].max_insts_any_thread)
+            print("Switch at instruction count:%s" %
+                    str(testsys.cpu[0].max_insts_any_thread))
             exit_event = m5.simulate()
         else:
-            print "Switch at curTick count:%s" % str(10000)
+            print("Switch at curTick count:%s" % str(10000))
             exit_event = m5.simulate(10000)
-        print "Switched CPUS @ tick %s" % (m5.curTick())
+        print("Switched CPUS @ tick %s" % (m5.curTick()))

         m5.switchCpus(testsys, switch_cpu_list)

         if options.standard_switch:
-            print "Switch at instruction count:%d" % \
-                    (testsys.switch_cpus[0].max_insts_any_thread)
+            print("Switch at instruction count:%d" %
+                    (testsys.switch_cpus[0].max_insts_any_thread))

             #warmup instruction count may have already been set
             if options.warmup_insts:
                 exit_event = m5.simulate()
             else:
                 exit_event = m5.simulate(options.standard_switch)
-            print "Switching CPUS @ tick %s" % (m5.curTick())
-            print "Simulation ends instruction count:%d" % \
-                    (testsys.switch_cpus_1[0].max_insts_any_thread)
+            print("Switching CPUS @ tick %s" % (m5.curTick()))
+            print("Simulation ends instruction count:%d" %
+                    (testsys.switch_cpus_1[0].max_insts_any_thread))
             m5.switchCpus(testsys, switch_cpu_list1)

     # If we're taking and restoring checkpoints, use checkpoint_dir
@@ -699,7 +701,7 @@
     else:
         if options.fast_forward:
             m5.stats.reset()
-        print "**** REAL SIMULATION ****"
+        print("**** REAL SIMULATION ****")

         # If checkpoints are being taken, then the checkpoint instruction
         # will occur in the benchmark code it self.
@@ -709,7 +711,8 @@
         else:
             exit_event = benchCheckpoints(options, maxtick, cptdir)

- print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())
+    print('Exiting @ tick %i because %s' %
+          (m5.curTick(), exit_event.getCause()))
     if options.checkpoint_at_end:
         m5.checkpoint(joinpath(cptdir, "cpt.%d"))

diff --git a/configs/common/cores/arm/HPI.py b/configs/common/cores/arm/HPI.py
index 03bad24..a6f77af 100644
--- a/configs/common/cores/arm/HPI.py
+++ b/configs/common/cores/arm/HPI.py
@@ -45,6 +45,8 @@

 """

+from __future__ import print_function
+
 from m5.objects import *

 # Simple function to allow a string of [01x_] to be converted into a
@@ -71,7 +73,7 @@
         elif char == 'x':
             pass
         else:
-            print "Can't parse implicant character", char
+            print("Can't parse implicant character", char)

     return (ret_mask, ret_match)

@@ -133,7 +135,7 @@
             ret = TimingExprRef()
             ret.index = env[name]
         else:
-            print "Invalid expression name", name
+            print("Invalid expression name", name)
             ret = TimingExprNull()
         return ret
     return body
diff --git a/configs/common/cpu2000.py b/configs/common/cpu2000.py
index 3d01fe9..da87507 100644
--- a/configs/common/cpu2000.py
+++ b/configs/common/cpu2000.py
@@ -26,6 +26,8 @@
 #
 # Authors: Nathan Binkert

+from __future__ import print_function
+
 import os
 import sys
 from os.path import basename, exists, join as joinpath, normpath
@@ -747,8 +749,8 @@
     from pprint import pprint
     for bench in all:
         for input_set in 'ref', 'test', 'train':
-            print 'class: %s' % bench.__name__
+            print('class: %s' % bench.__name__)
             x = bench('alpha', 'tru64', input_set)
-            print '%s: %s' % (x, input_set)
+            print('%s: %s' % (x, input_set))
             pprint(x.makeProcessArgs())
-            print
+            print()
diff --git a/configs/dram/lat_mem_rd.py b/configs/dram/lat_mem_rd.py
index dc0cfcb..dc80bd2 100644
--- a/configs/dram/lat_mem_rd.py
+++ b/configs/dram/lat_mem_rd.py
@@ -35,6 +35,8 @@
 #
 # Authors: Andreas Hansson

+from __future__ import print_function
+
 import gzip
 import optparse
 import os
@@ -60,22 +62,22 @@
 try:
     import packet_pb2
 except:
-    print "Did not find packet proto definitions, attempting to generate"
+    print("Did not find packet proto definitions, attempting to generate")
     from subprocess import call
     error = call(['protoc', '--python_out=configs/dram',
                   '--proto_path=src/proto', 'src/proto/packet.proto'])
     if not error:
-        print "Generated packet proto definitions"
+        print("Generated packet proto definitions")

         try:
             import google.protobuf
         except:
-            print "Please install the Python protobuf module"
+            print("Please install the Python protobuf module")
             exit(-1)

         import packet_pb2
     else:
-        print "Failed to import packet proto definitions"
+        print("Failed to import packet proto definitions")
         exit(-1)

 parser = optparse.OptionParser()
@@ -92,7 +94,7 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 # start by creating the system itself, using a multi-layer 2.0 GHz
@@ -171,7 +173,7 @@
     try:
         proto_out = gzip.open(filename, 'wb')
     except IOError:
-        print "Failed to open ", filename, " for writing"
+        print("Failed to open ", filename, " for writing")
         exit(-1)

     # write the magic number in 4-byte Little Endian, similar to what
@@ -208,7 +210,7 @@
     proto_out.close()

 # this will take a while, so keep the user informed
-print "Generating traces, please wait..."
+print("Generating traces, please wait...")

 nxt_range = 0
 nxt_state = 0
@@ -304,6 +306,6 @@
 m5.simulate(nxt_state * period)

 # print all we need to make sense of the stats output
-print "lat_mem_rd with %d iterations, ranges:" % iterations
+print("lat_mem_rd with %d iterations, ranges:" % iterations)
 for r in ranges:
-    print r
+    print(r)
diff --git a/configs/dram/low_power_sweep.py b/configs/dram/low_power_sweep.py
index 9adfcaf..2aa6490 100644
--- a/configs/dram/low_power_sweep.py
+++ b/configs/dram/low_power_sweep.py
@@ -36,6 +36,8 @@
 # Authors: Radhika Jagtap
 #          Andreas Hansson

+from __future__ import print_function
+
 import argparse

 import m5
@@ -239,13 +241,13 @@
 # Simulate for exactly as long as it takes to go through all the states
 # This is why sim exists.
 m5.simulate(nxt_state * period + idle_period)
-print "--- Done DRAM low power sweep ---"
-print "Fixed params - "
-print "\tburst: %d, banks: %d, max stride: %d, itt min: %s ns" %  \
-  (burst_size, nbr_banks, max_stride, itt_min)
-print "Swept params - "
-print "\titt max multiples input:", itt_max_multiples
-print "\titt max values", itt_max_values
-print "\tbank utilization values", bank_util_values
-print "\tstride values:", stride_values
-print "Traffic gen config file:", cfg_file_name
+print("--- Done DRAM low power sweep ---")
+print("Fixed params - ")
+print("\tburst: %d, banks: %d, max stride: %d, itt min: %s ns" %  \
+  (burst_size, nbr_banks, max_stride, itt_min))
+print("Swept params - ")
+print("\titt max multiples input:", itt_max_multiples)
+print("\titt max values", itt_max_values)
+print("\tbank utilization values", bank_util_values)
+print("\tstride values:", stride_values)
+print("Traffic gen config file:", cfg_file_name)
diff --git a/configs/dram/sweep.py b/configs/dram/sweep.py
index 32cf003..8380f74 100644
--- a/configs/dram/sweep.py
+++ b/configs/dram/sweep.py
@@ -35,6 +35,8 @@
 #
 # Authors: Andreas Hansson

+from __future__ import print_function
+
 import optparse

 import m5
@@ -75,7 +77,7 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 # at the moment we stay with the default open-adaptive page policy,
@@ -204,5 +206,5 @@
 m5.instantiate()
 m5.simulate(nxt_state * period)

-print "DRAM sweep with burst: %d, banks: %d, max stride: %d" % \
-    (burst_size, nbr_banks, max_stride)
+print("DRAM sweep with burst: %d, banks: %d, max stride: %d" %
+    (burst_size, nbr_banks, max_stride))
diff --git a/configs/example/apu_se.py b/configs/example/apu_se.py
index 012fdd3..da6305f 100644
--- a/configs/example/apu_se.py
+++ b/configs/example/apu_se.py
@@ -33,6 +33,8 @@
 #  Author: Sooraj Puthoor
 #

+from __future__ import print_function
+
 import optparse, os, re
 import math
 import glob
@@ -385,7 +387,7 @@
     kernel_path = os.path.dirname(executable)
     kernel_files = glob.glob(os.path.join(kernel_path, '*.asm'))
     if kernel_files:
-        print "Using GPU kernel code file(s)", ",".join(kernel_files)
+        print("Using GPU kernel code file(s)", ",".join(kernel_files))
     else:
         fatal("Can't locate kernel code (.asm) in " + kernel_path)

@@ -489,7 +491,7 @@

 for i in xrange(n_cu):
     if i > 0 and not i % options.cu_per_sqc:
-        print "incrementing idx on ", i
+        print("incrementing idx on ", i)
         gpu_port_idx += 1
     system.cpu[shader_idx].CUs[i].sqc_port = \
             system.ruby._cpu_ports[gpu_port_idx].slave
@@ -552,15 +554,14 @@
 host_cpu.workload[0].map(0x10000000, 0x200000000, 4096)

 if options.fast_forward:
-    print "Switch at instruction count: %d" % \
-        cpu_list[0].max_insts_any_thread
+ print("Switch at instruction count: %d" % cpu_list[0].max_insts_any_thread)

 exit_event = m5.simulate(maxtick)

 if options.fast_forward:
if exit_event.getCause() == "a thread reached the max instruction count":
         m5.switchCpus(system, switch_cpu_list)
-        print "Switched CPUS @ tick %s" % (m5.curTick())
+        print("Switched CPUS @ tick %s" % (m5.curTick()))
         m5.stats.reset()
         exit_event = m5.simulate(maxtick - m5.curTick())
 elif options.fast_forward_pseudo_op:
@@ -568,15 +569,15 @@
# If we are switching *to* kvm, then the current stats are meaningful
         # Note that we don't do any warmup by default
         if type(switch_cpu_list[0][0]) == FutureCpuClass:
-            print "Dumping stats..."
+            print("Dumping stats...")
             m5.stats.dump()
         m5.switchCpus(system, switch_cpu_list)
-        print "Switched CPUS @ tick %s" % (m5.curTick())
+        print("Switched CPUS @ tick %s" % (m5.curTick()))
         m5.stats.reset()
         # This lets us switch back and forth without keeping a counter
         switch_cpu_list = [(x[1], x[0]) for x in switch_cpu_list]
         exit_event = m5.simulate(maxtick - m5.curTick())

-print "Ticks:", m5.curTick()
-print 'Exiting because ', exit_event.getCause()
+print("Ticks:", m5.curTick())
+print('Exiting because ', exit_event.getCause())
 sys.exit(exit_event.getCode())
diff --git a/configs/example/arm/fs_bigLITTLE.py b/configs/example/arm/fs_bigLITTLE.py
index 7e0555c..7d66c03 100644
--- a/configs/example/arm/fs_bigLITTLE.py
+++ b/configs/example/arm/fs_bigLITTLE.py
@@ -40,6 +40,8 @@
 # a generic ARM bigLITTLE system.


+from __future__ import print_function
+
 import argparse
 import os
 import sys
@@ -311,12 +313,12 @@
         event = m5.simulate()
         exit_msg = event.getCause()
         if exit_msg == "checkpoint":
-            print "Dropping checkpoint at tick %d" % m5.curTick()
+            print("Dropping checkpoint at tick %d" % m5.curTick())
             cpt_dir = os.path.join(checkpoint_dir, "cpt.%d" % m5.curTick())
             m5.checkpoint(cpt_dir)
-            print "Checkpoint done."
+            print("Checkpoint done.")
         else:
-            print exit_msg, " @ ", m5.curTick()
+            print(exit_msg, " @ ", m5.curTick())
             break

     sys.exit(event.getCode())
diff --git a/configs/example/arm/fs_power.py b/configs/example/arm/fs_power.py
index 14dbae0..b27455f 100644
--- a/configs/example/arm/fs_power.py
+++ b/configs/example/arm/fs_power.py
@@ -39,6 +39,8 @@
 # This configuration file extends the example ARM big.LITTLE(tm)
 # with example power models.

+from __future__ import print_function
+
 import argparse
 import os

@@ -90,11 +92,11 @@

     bL.instantiate(options)

-    print "*" * 70
-    print "WARNING: The power numbers generated by this script are " \
-        "examples. They are not representative of any particular " \
-        "implementation or process."
-    print "*" * 70
+    print("*" * 70)
+    print("WARNING: The power numbers generated by this script are "
+        "examples. They are not representative of any particular "
+        "implementation or process.")
+    print("*" * 70)

     # Dumping stats periodically
     m5.stats.periodicStatDump(m5.ticks.fromSeconds(0.1E-3))
diff --git a/configs/example/arm/starter_fs.py b/configs/example/arm/starter_fs.py
index 2ca1cb8..a199768 100644
--- a/configs/example/arm/starter_fs.py
+++ b/configs/example/arm/starter_fs.py
@@ -43,6 +43,8 @@
 at: http://www.arm.com/ResearchEnablement/SystemModeling
 """

+from __future__ import print_function
+
 import os
 import m5
 from m5.util import addToPath
@@ -97,7 +99,7 @@
         dtb_file = args.dtb

     if args.script and not os.path.isfile(args.script):
-        print "Error: Bootscript %s does not exist" % args.script
+        print("Error: Bootscript %s does not exist" % args.script)
         sys.exit(1)

     cpu_class = cpu_types[args.cpu][0]
@@ -175,18 +177,18 @@
 def run(args):
     cptdir = m5.options.outdir
     if args.checkpoint:
-        print "Checkpoint directory: %s" % cptdir
+        print("Checkpoint directory: %s" % cptdir)

     while True:
         event = m5.simulate()
         exit_msg = event.getCause()
         if exit_msg == "checkpoint":
-            print "Dropping checkpoint at tick %d" % m5.curTick()
+            print("Dropping checkpoint at tick %d" % m5.curTick())
cpt_dir = os.path.join(m5.options.outdir, "cpt.%d" % m5.curTick())
             m5.checkpoint(os.path.join(cpt_dir))
-            print "Checkpoint done."
+            print("Checkpoint done.")
         else:
-            print exit_msg, " @ ", m5.curTick()
+            print(exit_msg, " @ ", m5.curTick())
             break

     sys.exit(event.getCode())
diff --git a/configs/example/arm/starter_se.py b/configs/example/arm/starter_se.py
index 902e6e4..ef218d9 100644
--- a/configs/example/arm/starter_se.py
+++ b/configs/example/arm/starter_se.py
@@ -43,6 +43,8 @@
 at: http://www.arm.com/ResearchEnablement/SystemModeling
 """

+from __future__ import print_function
+
 import os
 import m5
 from m5.util import addToPath
@@ -145,7 +147,7 @@

process = Process(pid=100 + idx, cwd=cwd, cmd=argv, executable=argv[0])

- print "info: %d. command and arguments: %s" % (idx + 1, process.cmd) + print("info: %d. command and arguments: %s" % (idx + 1, process.cmd))
         multiprocesses.append(process)

     return multiprocesses
@@ -168,8 +170,8 @@
     # that we can pass to gem5.
     processes = get_processes(args.commands_to_run)
     if len(processes) != args.num_cores:
-        print "Error: Cannot map %d command(s) onto %d " \
-            "CPU(s)" % (len(processes), args.num_cores)
+        print("Error: Cannot map %d command(s) onto %d CPU(s)" %
+              (len(processes), args.num_cores))
         sys.exit(1)

     # Assign one workload to each CPU
@@ -225,7 +227,7 @@
     # Print the reason for the simulation exit. Some exit codes are
     # requests for service (e.g., checkpoints) from the simulation
     # script. We'll just ignore them here and exit.
-    print event.getCause(), " @ ", m5.curTick()
+    print(event.getCause(), " @ ", m5.curTick())
     sys.exit(event.getCode())


diff --git a/configs/example/etrace_replay.py b/configs/example/etrace_replay.py
index f8586d6..e64871a 100644
--- a/configs/example/etrace_replay.py
+++ b/configs/example/etrace_replay.py
@@ -37,6 +37,8 @@

 # Basic elastic traces replay script that configures a Trace CPU

+from __future__ import print_function
+
 import optparse

 from m5.util import addToPath, fatal
@@ -53,14 +55,14 @@
 Options.addCommonOptions(parser)

 if '--ruby' in sys.argv:
-    print "This script does not support Ruby configuration, mainly"\
-    " because Trace CPU has been tested only with classic memory system"
+    print("This script does not support Ruby configuration, mainly"
+    " because Trace CPU has been tested only with classic memory system")
     sys.exit(1)

 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 numThreads = 1
diff --git a/configs/example/fs.py b/configs/example/fs.py
index f7115eb..0f87e2b 100644
--- a/configs/example/fs.py
+++ b/configs/example/fs.py
@@ -41,6 +41,8 @@
 # Authors: Ali Saidi
 #          Brad Beckmann

+from __future__ import print_function
+
 import optparse
 import sys

@@ -74,8 +76,8 @@

 def cmd_line_template():
     if options.command_line and options.command_line_file:
-        print "Error: --command-line and --command-line-file are " \
-              "mutually exclusive"
+        print("Error: --command-line and --command-line-file are "
+              "mutually exclusive")
         sys.exit(1)
     if options.command_line:
         return options.command_line
@@ -310,7 +312,7 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 # system under test can be any CPU
@@ -323,8 +325,8 @@
     try:
         bm = Benchmarks[options.benchmark]
     except KeyError:
- print "Error benchmark %s has not been defined." % options.benchmark
-        print "Valid benchmarks are: %s" % DefinedBenchmarks
+ print("Error benchmark %s has not been defined." % options.benchmark)
+        print("Valid benchmarks are: %s" % DefinedBenchmarks)
         sys.exit(1)
 else:
     if options.dual:
@@ -357,7 +359,7 @@
 elif len(bm) == 1:
     root = Root(full_system=True, system=test_sys)
 else:
-    print "Error I don't know how to create more than 2 systems."
+    print("Error I don't know how to create more than 2 systems.")
     sys.exit(1)

 if options.timesync:
diff --git a/configs/example/garnet_synth_traffic.py b/configs/example/garnet_synth_traffic.py
index 0cb1fae..92fb3a0 100644
--- a/configs/example/garnet_synth_traffic.py
+++ b/configs/example/garnet_synth_traffic.py
@@ -26,6 +26,8 @@
 #
 # Author: Tushar Krishna

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
@@ -90,14 +92,13 @@
 (options, args) = parser.parse_args()

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)


 if options.inj_vnet > 2:
-    print "Error: Injection vnet %d should be 0 (1-flit), 1 (1-flit) \
-                  or 2 (5-flit) or -1 (random)"\
-           % (options.inj_vnet)
+    print("Error: Injection vnet %d should be 0 (1-flit), 1 (1-flit) "
+          "or 2 (5-flit) or -1 (random)" % (options.inj_vnet))
     sys.exit(1)


@@ -153,4 +154,4 @@
 # simulate until program terminates
 exit_event = m5.simulate(options.abs_max_tick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/hmctest.py b/configs/example/hmctest.py
index 9ed3ef4..c370d0a 100644
--- a/configs/example/hmctest.py
+++ b/configs/example/hmctest.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
 import sys
 import argparse
 import subprocess
@@ -100,13 +102,13 @@
     root = build_system(options)
     # instantiate all of the objects we've created so far
     m5.instantiate()
-    print "Beginning simulation!"
+    print("Beginning simulation!")
     event = m5.simulate(10000000000)
     m5.stats.dump()
-    print 'Exiting @ tick %i because %s (exit code is %i)' % (m5.curTick(),
+    print('Exiting @ tick %i because %s (exit code is %i)' % (m5.curTick(),
event.getCause(), - event.getCode())
-    print "Done"
+ event.getCode()))
+    print("Done")


 if __name__ == "__m5_main__":
diff --git a/configs/example/memcheck.py b/configs/example/memcheck.py
index 0bbcd2f..c2eed19 100644
--- a/configs/example/memcheck.py
+++ b/configs/example/memcheck.py
@@ -39,6 +39,8 @@
 # Authors: Ron Dreslinski
 #          Andreas Hansson

+from __future__ import print_function
+
 import optparse
 import random
 import sys
@@ -108,7 +110,7 @@
 (options, args) = parser.parse_args()

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 # Start by parsing the command line options and do some basic sanity
@@ -118,36 +120,36 @@
      tree_depth = random.randint(1, 4)
      cachespec = [random.randint(1, 3) for i in range(tree_depth)]
      testerspec = [random.randint(1, 3) for i in range(tree_depth + 1)]
-     print "Generated random tree -c", ':'.join(map(str, cachespec)), \
-         "-t", ':'.join(map(str, testerspec))
+     print("Generated random tree -c", ':'.join(map(str, cachespec)),
+         "-t", ':'.join(map(str, testerspec)))
 else:
      try:
           cachespec = [int(x) for x in options.caches.split(':')]
           testerspec = [int(x) for x in options.testers.split(':')]
      except:
-          print "Error: Unable to parse caches or testers option"
+          print("Error: Unable to parse caches or testers option")
           sys.exit(1)

      if len(cachespec) < 1:
-          print "Error: Must have at least one level of caches"
+          print("Error: Must have at least one level of caches")
           sys.exit(1)

      if len(cachespec) != len(testerspec) - 1:
-          print "Error: Testers must have one element more than caches"
+          print("Error: Testers must have one element more than caches")
           sys.exit(1)

      if testerspec[-1] == 0:
-          print "Error: Must have testers at the uppermost level"
+          print("Error: Must have testers at the uppermost level")
           sys.exit(1)

      for t in testerspec:
           if t < 0:
-               print "Error: Cannot have a negative number of testers"
+               print("Error: Cannot have a negative number of testers")
                sys.exit(1)

      for c in cachespec:
           if c < 1:
-               print "Error: Must have 1 or more caches at each level"
+               print("Error: Must have 1 or more caches at each level")
                sys.exit(1)

 # Determine the tester multiplier for each level as the string
@@ -155,7 +157,7 @@
 multiplier = [1]
 for c in cachespec:
      if c < 1:
-          print "Error: Must have at least one cache per level"
+          print("Error: Must have at least one cache per level")
      multiplier.append(multiplier[-1] * c)

 numtesters = 0
@@ -275,7 +277,7 @@
                cache.mem_side = xbar.slave
      else:
           if not next_cache:
-               print "Error: No next-level cache at top level"
+               print("Error: No next-level cache at top level")
                sys.exit(1)

           if ntesters > 1:
@@ -315,4 +317,4 @@
 # Simulate until program terminates
 exit_event = m5.simulate(options.maxtick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/memtest.py b/configs/example/memtest.py
index d6f940e..df22609 100644
--- a/configs/example/memtest.py
+++ b/configs/example/memtest.py
@@ -39,6 +39,8 @@
 # Authors: Ron Dreslinski
 #          Andreas Hansson

+from __future__ import print_function
+
 import optparse
 import random
 import sys
@@ -107,7 +109,7 @@
 (options, args) = parser.parse_args()

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 # Get the total number of testers
@@ -137,41 +139,41 @@
           if numtesters(cachespec, testerspec) < block_size:
                break

-     print "Generated random tree -c", ':'.join(map(str, cachespec)), \
-         "-t", ':'.join(map(str, testerspec))
+     print("Generated random tree -c", ':'.join(map(str, cachespec)),
+         "-t", ':'.join(map(str, testerspec)))
 else:
      try:
           cachespec = [int(x) for x in options.caches.split(':')]
           testerspec = [int(x) for x in options.testers.split(':')]
      except:
-          print "Error: Unable to parse caches or testers option"
+          print("Error: Unable to parse caches or testers option")
           sys.exit(1)

      if len(cachespec) < 1:
-          print "Error: Must have at least one level of caches"
+          print("Error: Must have at least one level of caches")
           sys.exit(1)

      if len(cachespec) != len(testerspec) - 1:
-          print "Error: Testers must have one element more than caches"
+          print("Error: Testers must have one element more than caches")
           sys.exit(1)

      if testerspec[-1] == 0:
-          print "Error: Must have testers at the uppermost level"
+          print("Error: Must have testers at the uppermost level")
           sys.exit(1)

      for t in testerspec:
           if t < 0:
-               print "Error: Cannot have a negative number of testers"
+               print("Error: Cannot have a negative number of testers")
                sys.exit(1)

      for c in cachespec:
           if c < 1:
-               print "Error: Must have 1 or more caches at each level"
+               print("Error: Must have 1 or more caches at each level")
                sys.exit(1)

      if numtesters(cachespec, testerspec) > block_size:
-          print "Error: Limited to %s testers because of false sharing" \
-              % (block_size)
+          print("Error: Limited to %s testers because of false sharing"
+              % (block_size))
           sys.exit(1)

 # Define a prototype L1 cache that we scale for all successive levels
@@ -280,7 +282,7 @@
                cache.mem_side = xbar.slave
      else:
           if not next_cache:
-               print "Error: No next-level cache at top level"
+               print("Error: No next-level cache at top level")
                sys.exit(1)

           if ntesters > 1:
@@ -318,4 +320,4 @@
 # Simulate until program terminates
 exit_event = m5.simulate(options.maxtick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/read_config.py b/configs/example/read_config.py
index 7569cd1..3c17d4b 100644
--- a/configs/example/read_config.py
+++ b/configs/example/read_config.py
@@ -45,6 +45,8 @@
 # between system construction and run control may allow better
 # debugging.

+from __future__ import print_function
+
 import argparse
 import ConfigParser
 import inspect
@@ -540,5 +542,4 @@
 m5.instantiate(args.checkpoint_dir)

 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (
-    m5.curTick(), exit_event.getCause())
+print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/example/ruby_direct_test.py b/configs/example/ruby_direct_test.py
index 9e8c87a..317fb47 100644
--- a/configs/example/ruby_direct_test.py
+++ b/configs/example/ruby_direct_test.py
@@ -28,6 +28,8 @@
 # Authors: Ron Dreslinski
 #          Brad Beckmann

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
@@ -65,7 +67,7 @@
 (options, args) = parser.parse_args()

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 #
@@ -83,7 +85,7 @@
 elif options.test_type == "Invalidate":
     generator = InvalidateGenerator(num_cpus = options.num_cpus)
 else:
-    print "Error: unknown direct test generator"
+    print("Error: unknown direct test generator")
     sys.exit(1)

 # Create the M5 system.
@@ -130,4 +132,4 @@
 # simulate until program terminates
 exit_event = m5.simulate(options.abs_max_tick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/ruby_gpu_random_test.py b/configs/example/ruby_gpu_random_test.py
index 80aecf9..4f71cd8 100644
--- a/configs/example/ruby_gpu_random_test.py
+++ b/configs/example/ruby_gpu_random_test.py
@@ -33,6 +33,8 @@
 #  Author: Brad Beckmann
 #

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
@@ -100,7 +102,7 @@
 options.num_sqc = int((n_cu + options.cu_per_sqc - 1) / options.cu_per_sqc)

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 #
@@ -183,4 +185,4 @@
 # simulate until program terminates
 exit_event = m5.simulate(options.abs_max_tick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/ruby_mem_test.py b/configs/example/ruby_mem_test.py
index 010c4a2..ab658f7 100644
--- a/configs/example/ruby_mem_test.py
+++ b/configs/example/ruby_mem_test.py
@@ -28,6 +28,8 @@
 # Authors: Ron Dreslinski
 #          Brad Beckmann

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
@@ -81,14 +83,14 @@
 options.l3_assoc=2

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 block_size = 64

 if options.num_cpus > block_size:
- print "Error: Number of testers %d limited to %d because of false sharing" \
-           % (options.num_cpus, block_size)
+ print("Error: Number of testers %d limited to %d because of false sharing"
+           % (options.num_cpus, block_size))
      sys.exit(1)

 #
@@ -183,4 +185,4 @@
 # simulate until program terminates
 exit_event = m5.simulate(options.abs_max_tick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/ruby_random_test.py b/configs/example/ruby_random_test.py
index d96905e..d6b53cf 100644
--- a/configs/example/ruby_random_test.py
+++ b/configs/example/ruby_random_test.py
@@ -28,6 +28,8 @@
 # Authors: Ron Dreslinski
 #          Brad Beckmann

+from __future__ import print_function
+
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
@@ -75,7 +77,7 @@
 options.l3_assoc=2

 if args:
-     print "Error: script doesn't take any positional arguments"
+     print("Error: script doesn't take any positional arguments")
      sys.exit(1)

 #
@@ -156,4 +158,4 @@
 # simulate until program terminates
 exit_event = m5.simulate(options.abs_max_tick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())
diff --git a/configs/example/se.py b/configs/example/se.py
index 56e4753..99d79bc 100644
--- a/configs/example/se.py
+++ b/configs/example/se.py
@@ -42,6 +42,8 @@
 #
 # "m5 test.py"

+from __future__ import print_function
+
 import optparse
 import sys
 import os
@@ -131,7 +133,7 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 multiprocesses = []
@@ -140,7 +142,7 @@
 if options.bench:
     apps = options.bench.split("-")
     if len(apps) != options.num_cpus:
-        print "number of benchmarks not equal to set num_cpus!"
+        print("number of benchmarks not equal to set num_cpus!")
         sys.exit(1)

     for app in apps:
@@ -156,13 +158,14 @@
                         app, options.spec_input))
             multiprocesses.append(workload.makeProcess())
         except:
-            print >>sys.stderr, "Unable to find workload for %s: %s" % (
-                    buildEnv['TARGET_ISA'], app)
+            print("Unable to find workload for %s: %s" %
+                  (buildEnv['TARGET_ISA'], app),
+                  file=sys.stderr)
             sys.exit(1)
 elif options.cmd:
     multiprocesses, numThreads = get_processes(options)
 else:
-    print >> sys.stderr, "No workload specified. Exiting!\n"
+    print("No workload specified. Exiting!\n", file=sys.stderr)
     sys.exit(1)


diff --git a/configs/learning_gem5/part1/simple.py b/configs/learning_gem5/part1/simple.py
index 31fdb0d..5336b44 100644
--- a/configs/learning_gem5/part1/simple.py
+++ b/configs/learning_gem5/part1/simple.py
@@ -37,6 +37,8 @@

 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -102,6 +104,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/learning_gem5/part1/two_level.py b/configs/learning_gem5/part1/two_level.py
index 1330d5d..51d51c4 100644
--- a/configs/learning_gem5/part1/two_level.py
+++ b/configs/learning_gem5/part1/two_level.py
@@ -40,6 +40,8 @@

 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -146,6 +148,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/learning_gem5/part2/hello_goodbye.py b/configs/learning_gem5/part2/hello_goodbye.py
index 6e82a63..e908ae0 100644
--- a/configs/learning_gem5/part2/hello_goodbye.py
+++ b/configs/learning_gem5/part2/hello_goodbye.py
@@ -36,6 +36,8 @@

 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -51,6 +53,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/learning_gem5/part2/run_simple.py b/configs/learning_gem5/part2/run_simple.py
index 07b366a..1b729ae 100644
--- a/configs/learning_gem5/part2/run_simple.py
+++ b/configs/learning_gem5/part2/run_simple.py
@@ -35,6 +35,8 @@

 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -49,6 +51,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/learning_gem5/part2/simple_cache.py b/configs/learning_gem5/part2/simple_cache.py
index a07147c..98078df 100644
--- a/configs/learning_gem5/part2/simple_cache.py
+++ b/configs/learning_gem5/part2/simple_cache.py
@@ -33,6 +33,8 @@
 This config file assumes that the x86 ISA was built.
 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -96,6 +98,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause())) diff --git a/configs/learning_gem5/part2/simple_memobj.py b/configs/learning_gem5/part2/simple_memobj.py
index 8d3553d..066bca0 100644
--- a/configs/learning_gem5/part2/simple_memobj.py
+++ b/configs/learning_gem5/part2/simple_memobj.py
@@ -33,6 +33,8 @@
 This config file assumes that the x86 ISA was built.
 """

+from __future__ import print_function
+
 # import the m5 (gem5) library created when gem5 is built
 import m5
 # import all of the SimObjects
@@ -94,6 +96,6 @@
 # instantiate all of the objects we've created above
 m5.instantiate()

-print "Beginning simulation!"
+print("Beginning simulation!")
 exit_event = m5.simulate()
-print 'Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()) +print('Exiting @ tick %i because %s' % (m5.curTick(), exit_event.getCause()))
diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py
index 04eda5a..9e110f8 100644
--- a/configs/ruby/Ruby.py
+++ b/configs/ruby/Ruby.py
@@ -39,6 +39,8 @@
 #
 # Authors: Brad Beckmann

+from __future__ import print_function
+
 import math
 import m5
 from m5.objects import *
@@ -151,7 +153,7 @@
                                     ruby)"
                   % protocol)
     except:
- print "Error: could not create sytem for ruby protocol %s" % protocol + print("Error: could not create sytem for ruby protocol %s" % protocol)
         raise

     # Create the network topology
diff --git a/configs/splash2/cluster.py b/configs/splash2/cluster.py
index a0423e6..f819bd1 100644
--- a/configs/splash2/cluster.py
+++ b/configs/splash2/cluster.py
@@ -30,6 +30,8 @@
 #
 # "m5 test.py"

+from __future__ import print_function
+
 import os
 import optparse
 import sys
@@ -70,7 +72,7 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 # --------------------
@@ -297,5 +299,5 @@
 else:
     exit_event = m5.simulate(m5.MaxTick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())

diff --git a/configs/splash2/run.py b/configs/splash2/run.py
index 0f374c1..b17eb54 100644
--- a/configs/splash2/run.py
+++ b/configs/splash2/run.py
@@ -29,6 +29,8 @@
 # Splash2 Run Script
 #

+from __future__ import print_function
+
 import os
 import optparse
 import sys
@@ -67,11 +69,11 @@
 (options, args) = parser.parse_args()

 if args:
-    print "Error: script doesn't take any positional arguments"
+    print("Error: script doesn't take any positional arguments")
     sys.exit(1)

 if not options.numcpus:
-    print "Specify the number of cpus with -n"
+    print("Specify the number of cpus with -n")
     sys.exit(1)

 # --------------------
@@ -253,9 +255,10 @@
 elif options.benchmark == 'WaterSpatial':
     root.workload = Water_spatial()
 else:
- print >> sys.stderr, """The --benchmark environment variable was set to something improper.
-Use Cholesky, FFT, LUContig, LUNoncontig, Radix, Barnes, FMM, OceanContig,
-OceanNoncontig, Raytrace, WaterNSquared, or WaterSpatial"""
+    print("The --benchmark environment variable was set to something "
+          "improper. Use Cholesky, FFT, LUContig, LUNoncontig, Radix, "
+ "Barnes, FMM, OceanContig, OceanNoncontig, Raytrace, WaterNSquared, "
+          "or WaterSpatial", file=sys.stderr)
     sys.exit(1)

 # --------------------
@@ -281,5 +284,5 @@
 else:
     exit_event = m5.simulate(m5.MaxTick)

-print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
+print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause())


--
To view, visit https://gem5-review.googlesource.com/8762
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I701fa58cfcfa2767ce9ad24da314a053889878d0
Gerrit-Change-Number: 8762
Gerrit-PatchSet: 3
Gerrit-Owner: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Anthony Gutierrez <anthony.gutier...@amd.com>
Gerrit-Reviewer: Brandon Potter <brandon.pot...@amd.com>
Gerrit-Reviewer: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Siddhesh Poyarekar <siddhesh.poyare...@gmail.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to