se.py revision 2710
14158Sgblack@eecs.umich.edu# Simple test script
24158Sgblack@eecs.umich.edu#
34158Sgblack@eecs.umich.edu# Alpha: "m5 test.py"
44158Sgblack@eecs.umich.edu# MIPS: "m5 test.py -a Mips -c hello_mips"
54158Sgblack@eecs.umich.edu
67087Snate@binkert.orgimport os, optparse, sys
77087Snate@binkert.orgimport m5
87087Snate@binkert.orgfrom m5.objects import *
97087Snate@binkert.org
107087Snate@binkert.org# parse command-line arguments
117087Snate@binkert.orgparser = optparse.OptionParser(option_list=m5.standardOptions)
127087Snate@binkert.org
137087Snate@binkert.orgparser.add_option("-c", "--cmd", default="hello")
144158Sgblack@eecs.umich.eduparser.add_option("-a", "--arch", choices=["Alpha", "Mips"], default="Alpha")
157087Snate@binkert.orgparser.add_option("-t", "--timing", action="store_true")
167087Snate@binkert.org
177087Snate@binkert.org(options, args) = parser.parse_args()
187087Snate@binkert.org
197087Snate@binkert.orgif args:
207087Snate@binkert.org    print "Error: script doesn't take any positional arguments"
217087Snate@binkert.org    sys.exit(1)
227087Snate@binkert.org
234158Sgblack@eecs.umich.edu# build configuration
247087Snate@binkert.orgthis_dir = os.path.dirname(__file__)
254158Sgblack@eecs.umich.edu
264158Sgblack@eecs.umich.eduprint "arch =", options.arch
274158Sgblack@eecs.umich.eduprocess_class = eval(options.arch + "LiveProcess")
284158Sgblack@eecs.umich.edu
294158Sgblack@eecs.umich.eduprocess = process_class()
304158Sgblack@eecs.umich.eduprocess.executable = os.path.join(this_dir, options.cmd)
314158Sgblack@eecs.umich.eduprocess.cmd = options.cmd
324158Sgblack@eecs.umich.edu
334158Sgblack@eecs.umich.edumagicbus = Bus()
344158Sgblack@eecs.umich.edumem = PhysicalMemory()
354158Sgblack@eecs.umich.edu
364158Sgblack@eecs.umich.eduif options.timing:
374158Sgblack@eecs.umich.edu    cpu = TimingSimpleCPU()
384158Sgblack@eecs.umich.eduelse:
394158Sgblack@eecs.umich.edu    cpu = AtomicSimpleCPU()
404158Sgblack@eecs.umich.educpu.workload = process
414158Sgblack@eecs.umich.educpu.mem = magicbus
424158Sgblack@eecs.umich.edu
434158Sgblack@eecs.umich.edusystem = System(physmem = mem, cpu = cpu)
444158Sgblack@eecs.umich.edusystem.c1 =  Connector(side_a = mem, side_b = magicbus)
454158Sgblack@eecs.umich.eduroot = Root(system = system)
464158Sgblack@eecs.umich.edu
474158Sgblack@eecs.umich.edu# instantiate configuration
484158Sgblack@eecs.umich.edum5.instantiate(root)
494158Sgblack@eecs.umich.edu
504158Sgblack@eecs.umich.edu# simulate until program terminates
514158Sgblack@eecs.umich.eduexit_event = m5.simulate()
524544Sgblack@eecs.umich.edu
534158Sgblack@eecs.umich.eduprint 'Exiting @', m5.curTick(), 'because', exit_event.getCause()
544158Sgblack@eecs.umich.edu
554158Sgblack@eecs.umich.edu