diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-07-05 20:30:45 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-07-05 20:30:45 -0400 |
commit | b36796914af8bfc6729cc8a519e57572460e43e8 (patch) | |
tree | 1886edde38b2da28cb45f4e13135b1993502f45d /configs/test/test.py | |
parent | f456360bbcd6e4e4fd1550e96658934affac3eb9 (diff) | |
parent | 4201ec84b2dd7d96148bf661124dd7b5d0e7204b (diff) | |
download | gem5-b36796914af8bfc6729cc8a519e57572460e43e8.tar.xz |
Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem.head
--HG--
extra : convert_revision : a64362d3cf8de00c97bea25118fee33cffe22707
Diffstat (limited to 'configs/test/test.py')
-rw-r--r-- | configs/test/test.py | 97 |
1 files changed, 89 insertions, 8 deletions
diff --git a/configs/test/test.py b/configs/test/test.py index 75e832f5e..625304a08 100644 --- a/configs/test/test.py +++ b/configs/test/test.py @@ -1,12 +1,93 @@ -from m5 import * +# Simple test script +# +# Alpha: "m5 test.py" +# MIPS: "m5 test.py -a Mips -c hello_mips" -class HelloWorld(AlphaLiveProcess): - executable = '../configs/test/hello' - cmd = 'hello' +import os, optparse, sys +import m5 +from m5.objects import * +from FullO3Config import * + +# parse command-line arguments +parser = optparse.OptionParser(option_list=m5.standardOptions) + +parser.add_option("-c", "--cmd", default="hello", + help="The binary to run in syscall emulation mode.") +parser.add_option("-o", "--options", default="", + help="The options to pass to the binary, use \" \" around the entire\ + string.") +parser.add_option("-i", "--input", default="", + help="A file of input to give to the binary.") +parser.add_option("-t", "--timing", action="store_true", + help="Use simple timing CPU.") +parser.add_option("-d", "--detailed", action="store_true", + help="Use detailed CPU.") +parser.add_option("-m", "--maxtick", type="int", + help="Set the maximum number of ticks to run for") + +(options, args) = parser.parse_args() +m5.setStandardOptions(options) + +if args: + print "Error: script doesn't take any positional arguments" + sys.exit(1) + +# build configuration +this_dir = os.path.dirname(__file__) + +process = LiveProcess() +process.executable = os.path.join(this_dir, options.cmd) +process.cmd = options.cmd + " " + options.options +if options.input != "": + process.input = options.input magicbus = Bus() mem = PhysicalMemory() -cpu = AtomicSimpleCPU(workload=HelloWorld(), mem=magicbus) -system = System(physmem=mem, cpu=cpu) -system.c1 = Connector(side_a=mem, side_b=magicbus) -root = Root(system=system) + +if options.timing and options.detailed: + print "Error: you may only specify one cpu model"; + sys.exit(1) + +if options.timing: + cpu = TimingSimpleCPU() +elif options.detailed: + #check for SMT workload + workloads = options.cmd.split(';') + if len(workloads) > 1: + process = [] + smt_idx = 0 + inputs = [] + + if options.input != "": + inputs = options.input.split(';') + + for wrkld in workloads: + smt_process = LiveProcess() + smt_process.executable = os.path.join(this_dir, wrkld) + smt_process.cmd = wrkld + " " + options.options + if inputs and inputs[smt_idx]: + smt_process.input = inputs[smt_idx] + process += [smt_process, ] + smt_idx += 1 + + cpu = DetailedO3CPU() +else: + cpu = AtomicSimpleCPU() +cpu.workload = process +cpu.mem = magicbus + +system = System(physmem = mem, cpu = cpu) +mem.port = magicbus.port +root = Root(system = system) + +# instantiate configuration +m5.instantiate(root) + +# simulate until program terminates +if options.maxtick: + exit_event = m5.simulate(options.maxtick) +else: + exit_event = m5.simulate() + +print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause() + |