se.py revision 2710
1# Simple test script
2#
3# Alpha: "m5 test.py"
4# MIPS: "m5 test.py -a Mips -c hello_mips"
5
6import os, optparse, sys
7import m5
8from m5.objects import *
9
10# parse command-line arguments
11parser = optparse.OptionParser(option_list=m5.standardOptions)
12
13parser.add_option("-c", "--cmd", default="hello")
14parser.add_option("-a", "--arch", choices=["Alpha", "Mips"], default="Alpha")
15parser.add_option("-t", "--timing", action="store_true")
16
17(options, args) = parser.parse_args()
18
19if args:
20    print "Error: script doesn't take any positional arguments"
21    sys.exit(1)
22
23# build configuration
24this_dir = os.path.dirname(__file__)
25
26print "arch =", options.arch
27process_class = eval(options.arch + "LiveProcess")
28
29process = process_class()
30process.executable = os.path.join(this_dir, options.cmd)
31process.cmd = options.cmd
32
33magicbus = Bus()
34mem = PhysicalMemory()
35
36if options.timing:
37    cpu = TimingSimpleCPU()
38else:
39    cpu = AtomicSimpleCPU()
40cpu.workload = process
41cpu.mem = magicbus
42
43system = System(physmem = mem, cpu = cpu)
44system.c1 =  Connector(side_a = mem, side_b = magicbus)
45root = Root(system = system)
46
47# instantiate configuration
48m5.instantiate(root)
49
50# simulate until program terminates
51exit_event = m5.simulate()
52
53print 'Exiting @', m5.curTick(), 'because', exit_event.getCause()
54
55