diff options
Diffstat (limited to 'configs')
-rw-r--r-- | configs/common/FSConfig.py | 5 | ||||
-rw-r--r-- | configs/example/fs.py | 122 | ||||
-rw-r--r-- | configs/example/se.py | 116 | ||||
-rw-r--r-- | configs/test/fs.py | 93 | ||||
-rw-r--r-- | configs/test/test.py | 83 |
5 files changed, 242 insertions, 177 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py index 7d62297a9..e86cc05f5 100644 --- a/configs/common/FSConfig.py +++ b/configs/common/FSConfig.py @@ -46,8 +46,11 @@ class BaseTsunami(Tsunami): ide = IdeController(disks=[Parent.disk0, Parent.disk2], pci_func=0, pci_dev=0, pci_bus=0) -def makeLinuxAlphaSystem(mem_mode, mdesc): +def makeLinuxAlphaSystem(mem_mode, mdesc = None): self = LinuxAlphaSystem() + if not mdesc: + # generic system + mdesc = Machine() self.readfile = mdesc.script() self.iobus = Bus(bus_id=0) self.membus = Bus(bus_id=1) diff --git a/configs/example/fs.py b/configs/example/fs.py new file mode 100644 index 000000000..92d2e29e6 --- /dev/null +++ b/configs/example/fs.py @@ -0,0 +1,122 @@ +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Ali Saidi + +import optparse, os, sys + +import m5 +from m5.objects import * +m5.AddToPath('../common') +from FSConfig import * +from SysPaths import * +from Benchmarks import * + +parser = optparse.OptionParser() + +parser.add_option("-d", "--detailed", action="store_true") +parser.add_option("-t", "--timing", action="store_true") +parser.add_option("-m", "--maxtick", type="int") +parser.add_option("--maxtime", type="float") +parser.add_option("--dual", action="store_true", + help="Simulate two systems attached with an ethernet link") +parser.add_option("-b", "--benchmark", action="store", type="string", + dest="benchmark", + help="Specify the benchmark to run. Available benchmarks: %s"\ + % DefinedBenchmarks) + +(options, args) = parser.parse_args() + +if args: + print "Error: script doesn't take any positional arguments" + sys.exit(1) + +if options.detailed: + cpu = DetailedO3CPU() + cpu2 = DetailedO3CPU() + mem_mode = 'timing' +elif options.timing: + cpu = TimingSimpleCPU() + cpu2 = TimingSimpleCPU() + mem_mode = 'timing' +else: + cpu = AtomicSimpleCPU() + cpu2 = AtomicSimpleCPU() + mem_mode = 'atomic' + +cpu.clock = '2GHz' +cpu2.clock = '2GHz' + +if options.benchmark: + if options.benchmark not in Benchmarks: + print "Error benchmark %s has not been defined." % options.benchmark + print "Valid benchmarks are: %s" % DefinedBenchmarks + sys.exit(1) + + bm = Benchmarks[options.benchmark] +else: + if options.dual: + bm = [Machine(), Machine()] + else: + bm = [Machine()] + +if len(bm) == 2: + s1 = makeLinuxAlphaSystem(mem_mode, bm[0]) + s1.cpu = cpu + cpu.connectMemPorts(s1.membus) + s2 = makeLinuxAlphaSystem(mem_mode, bm[1]) + s2.cpu = cpu2 + cpu2.connectMemPorts(s2.membus) + root = makeDualRoot(s1, s2) +elif len(bm) == 1: + root = Root(clock = '1THz', + system = makeLinuxAlphaSystem(mem_mode, bm[0])) + root.system.cpu = cpu + cpu.connectMemPorts(root.system.membus) +else: + print "Error I don't know how to create more than 2 systems." + sys.exit(1) + +m5.instantiate(root) + +#exit_event = m5.simulate(2600000000000) +#if exit_event.getCause() != "user interrupt received": +# m5.checkpoint(root, 'cpt') +# exit_event = m5.simulate(300000000000) +# if exit_event.getCause() != "user interrupt received": +# m5.checkpoint(root, 'cptA') + + +if options.maxtick: + exit_event = m5.simulate(options.maxtick) +elif options.maxtime: + simtime = int(options.maxtime * root.clock.value) + print "simulating for: ", simtime + exit_event = m5.simulate(simtime) +else: + exit_event = m5.simulate() + +print 'Exiting @ cycle', m5.curTick(), 'because', exit_event.getCause() diff --git a/configs/example/se.py b/configs/example/se.py new file mode 100644 index 000000000..2bfd0f172 --- /dev/null +++ b/configs/example/se.py @@ -0,0 +1,116 @@ +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Steve Reinhardt + +# Simple test script +# +# "m5 test.py" + +import m5 +from m5.objects import * +import os, optparse, sys +m5.AddToPath('../common') +from FullO3Config import * + +parser = optparse.OptionParser() + +parser.add_option("-c", "--cmd", + default="../../tests/test-progs/hello/bin/alpha/linux/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("-d", "--detailed", action="store_true") +parser.add_option("-t", "--timing", action="store_true") +parser.add_option("-m", "--maxtick", type="int") + +(options, args) = parser.parse_args() + +if args: + print "Error: script doesn't take any positional arguments" + sys.exit(1) + +process = LiveProcess() +process.executable = options.cmd +process.cmd = options.cmd + " " + options.options +if options.input != "": + process.input = options.input + +if 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 = 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 + + +if options.timing: + cpu = TimingSimpleCPU() +elif options.detailed: + cpu = DetailedO3CPU() +else: + cpu = AtomicSimpleCPU() + +cpu.workload = process + +system = System(cpu = cpu, + physmem = PhysicalMemory(), + membus = Bus()) +system.physmem.port = system.membus.port +system.cpu.connectMemPorts(system.membus) + +root = Root(system = system) + +if options.timing or options.detailed: + root.system.mem_mode = 'timing' + +# 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() + diff --git a/configs/test/fs.py b/configs/test/fs.py deleted file mode 100644 index 4a3876b36..000000000 --- a/configs/test/fs.py +++ /dev/null @@ -1,93 +0,0 @@ -import optparse, os, sys - -import m5 -from m5.objects import * -m5.AddToPath('../common') -from FSConfig import * -from SysPaths import * -from Benchmarks import * - -parser = optparse.OptionParser() - -parser.add_option("-d", "--detailed", action="store_true") -parser.add_option("-t", "--timing", action="store_true") -parser.add_option("-m", "--maxtick", type="int") -parser.add_option("--maxtime", type="float") -parser.add_option("--dual", action="store_true", - help="Simulate two systems attached with an ethernet link") -parser.add_option("-b", "--benchmark", action="store", type="string", - dest="benchmark", - help="Specify the benchmark to run. Available benchmarks: %s"\ - % DefinedBenchmarks) - -(options, args) = parser.parse_args() - -if args: - print "Error: script doesn't take any positional arguments" - sys.exit(1) - -if options.detailed: - cpu = DetailedO3CPU() - cpu2 = DetailedO3CPU() - mem_mode = 'timing' -elif options.timing: - cpu = TimingSimpleCPU() - cpu2 = TimingSimpleCPU() - mem_mode = 'timing' -else: - cpu = AtomicSimpleCPU() - cpu2 = AtomicSimpleCPU() - mem_mode = 'atomic' - - -if options.benchmark: - if options.benchmark not in Benchmarks: - print "Error benchmark %s has not been defined." % options.benchmark - print "Valid benchmarks are: %s" % DefinedBenchmarks - sys.exit(1) - - bm = Benchmarks[options.benchmark] - - if len(bm) == 2: - s1 = makeLinuxAlphaSystem(mem_mode, bm[0]) - s2 = makeLinuxAlphaSystem(mem_mode, bm[1]) - cpu.connectMemPorts(s1.membus) - cpu2.connectMemPorts(s2.membus) - root = makeDualRoot(s1, s2) - elif len(bm) == 1: - root = Root(clock = '1THz', - system = makeLinuxAlphaSystem(mem_mode, bm[0])) - cpu.connectMemPorts(root.system.membus) - else: - print "Error I don't know how to create more than 2 systems." - sys.exit(1) - -else: - if options.dual: - root = makeDualRoot( - makeLinuxAlphaSystem(cpu, mem_mode, Machine()), - makeLinuxAlphaSystem(cpu2, mem_mode, Machine())) - else: - root = Root(clock = '1THz', - system = makeLinuxAlphaSystem(cpu, mem_mode, Machine())) - -m5.instantiate(root) - -#exit_event = m5.simulate(2600000000000) -#if exit_event.getCause() != "user interrupt received": -# m5.checkpoint(root, 'cpt') -# exit_event = m5.simulate(300000000000) -# if exit_event.getCause() != "user interrupt received": -# m5.checkpoint(root, 'cptA') - - -if options.maxtick: - exit_event = m5.simulate(options.maxtick) -elif options.maxtime: - simtime = int(options.maxtime * root.clock.value) - print "simulating for: ", simtime - exit_event = m5.simulate(simtime) -else: - exit_event = m5.simulate() - -print 'Exiting @ cycle', m5.curTick(), 'because', exit_event.getCause() diff --git a/configs/test/test.py b/configs/test/test.py deleted file mode 100644 index 9d780547b..000000000 --- a/configs/test/test.py +++ /dev/null @@ -1,83 +0,0 @@ -# Simple test script -# -# Alpha: "m5 test.py" -# MIPS: "m5 test.py -c hello_mips" - -import m5 -import os, optparse, sys -m5.AddToPath('../common') -from SEConfig import * -from FullO3Config import * -from m5.objects import * - -parser = optparse.OptionParser() - -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("-d", "--detailed", action="store_true") -parser.add_option("-t", "--timing", action="store_true") -parser.add_option("-m", "--maxtick", type="int") - -(options, args) = parser.parse_args() - -if args: - print "Error: script doesn't take any positional arguments" - sys.exit(1) - -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 - -if 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 - - -if options.timing: - cpu = TimingSimpleCPU() -elif options.detailed: - cpu = DetailedO3CPU() -else: - cpu = AtomicSimpleCPU() - -root = MySESystem(cpu, process) - -if options.timing or options.detailed: - root.system.mem_mode = 'timing' - -# 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() - |