+# Copyright (c) 2012 ARM Limited
+# All rights reserved.
+#
+# The license below extends only to copyright in the software and shall
+# not be construed as granting a license to any other intellectual
+# property including but not limited to intellectual property relating
+# to a hardware implementation of the functionality of the software
+# licensed hereunder. You may use the software subject to the license
+# terms below provided that you ensure that this notice is replicated
+# unmodified and in its entirety in all distributions of the software,
+# modified or unmodified, in source code or in binary form.
+#
# Copyright (c) 2006-2008 The Regents of The University of Michigan
# All rights reserved.
#
from m5.objects import *
from m5.util import addToPath, fatal
-if buildEnv['FULL_SYSTEM']:
- fatal("This script requires syscall emulation mode (*_SE).")
-
addToPath('../common')
addToPath('../ruby')
parser.add_option("-i", "--input", default="", help="Read stdin from a file.")
parser.add_option("--output", default="", help="Redirect stdout to a file.")
parser.add_option("--errout", default="", help="Redirect stderr to a file.")
-parser.add_option("--ruby", action="store_true")
execfile(os.path.join(config_root, "common", "Options.py"))
-(options, args) = parser.parse_args()
+if buildEnv['PROTOCOL'] != 'None':
+ parser.add_option("--ruby", action="store_true")
+ if '--ruby' in sys.argv:
+ Ruby.define_options(parser)
-if options.ruby:
- Ruby.define_options(parser)
- (options, args) = parser.parse_args()
+(options, args) = parser.parse_args()
if args:
print "Error: script doesn't take any positional arguments"
workloads = options.cmd
numThreads = 1
-if options.detailed or options.inorder:
+if options.cpu_type == "detailed" or options.cpu_type == "inorder":
#check for SMT workload
workloads = options.cmd.split(';')
if len(workloads) > 1:
process += [smt_process, ]
smt_idx += 1
numThreads = len(workloads)
-
+
if options.ruby:
- if options.detailed:
- print >> sys.stderr, "Ruby only works with TimingSimpleCPU!!"
+ if not (options.cpu_type == "detailed" or options.cpu_type == "timing"):
+ print >> sys.stderr, "Ruby requires TimingSimpleCPU or O3CPU!!"
sys.exit(1)
- elif not options.timing:
- print >> sys.stderr, "****WARN: using Timing CPU since it's needed by Ruby"
-
- class CPUClass(TimingSimpleCPU): pass
- test_mem_mode = 'timing'
- FutureClass = None
-else:
- (CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
+(CPUClass, test_mem_mode, FutureClass) = Simulation.setCPUClass(options)
CPUClass.clock = '2GHz'
CPUClass.numThreads = numThreads;
if options.ruby:
options.use_map = True
- system.ruby = Ruby.create_system(options, system)
+ Ruby.create_system(options, system)
assert(options.num_cpus == len(system.ruby._cpu_ruby_ports))
+ system.system_port = system.ruby._sys_port_proxy.port
else:
+ system.system_port = system.membus.port
system.physmem.port = system.membus.port
CacheConfig.config_cache(options, system)
if options.fastmem:
system.cpu[0].physmem_port = system.physmem.port
-root = Root(system = system)
+root = Root(full_system = False, system = system)
Simulation.run(options, root, system, FutureClass)