Is it necessary to duplicate this file?  Can memtest.py not be
extended to do this?

  Nate

On Wed, Nov 18, 2009 at 6:05 PM, Brad Beckmann <[email protected]> wrote:
> changeset 12da457d6e5c in /z/repo/m5
> details: http://repo.m5sim.org/m5?cmd=changeset;node=12da457d6e5c
> description:
>        ruby: Ruby memtest python script.
>
> diffstat:
>
> 1 file changed, 119 insertions(+)
> configs/example/memtest-ruby.py |  119 +++++++++++++++++++++++++++++++++++++++
>
> diffs (123 lines):
>
> diff -r 98101a5f7ee4 -r 12da457d6e5c configs/example/memtest-ruby.py
> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
> +++ b/configs/example/memtest-ruby.py   Wed Nov 18 13:55:57 2009 -0800
> @@ -0,0 +1,119 @@
> +# Copyright (c) 2006-2007 The Regents of The University of Michigan
> +# Copyright (c) 2009 Advanced Micro Devices, Inc.
> +# 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: Ron Dreslinski
> +#          Brad Beckmann
> +
> +import m5
> +from m5.objects import *
> +from m5.defines import buildEnv
> +from m5.util import addToPath
> +import os, optparse, sys
> +addToPath('../common')
> +addToPath('../../tests/configs/')
> +import ruby_config
> +
> +parser = optparse.OptionParser()
> +
> +parser.add_option("-a", "--atomic", action="store_true",
> +                  help="Use atomic (non-timing) mode")
> +parser.add_option("-b", "--blocking", action="store_true",
> +                  help="Use blocking caches")
> +parser.add_option("-l", "--maxloads", metavar="N", default=0,
> +                  help="Stop after N loads")
> +parser.add_option("-m", "--maxtick", type="int", default=m5.MaxTick,
> +                  metavar="T",
> +                  help="Stop after T ticks")
> +
> +parser.add_option("-t", "--testers", type="int", metavar="N", default=1,
> +                  help="number of testers/cores")
> +
> +parser.add_option("-f", "--functional", type="int", default=0,
> +                  metavar="PCT",
> +                  help="Target percentage of functional accesses "
> +                  "[default: %default]")
> +parser.add_option("-u", "--uncacheable", type="int", default=0,
> +                  metavar="PCT",
> +                  help="Target percentage of uncacheable accesses "
> +                  "[default: %default]")
> +
> +parser.add_option("--progress", type="int", default=1000,
> +                  metavar="NLOADS",
> +                  help="Progress message interval "
> +                  "[default: %default]")
> +
> +(options, args) = parser.parse_args()
> +
> +if args:
> +     print "Error: script doesn't take any positional arguments"
> +     sys.exit(1)
> +
> +block_size = 64
> +
> +if options.testers > block_size:
> +     print "Error: Number of testers %d limited to %d because of false 
> sharing" \
> +           % (options.testers, block_size)
> +     sys.exit(1)
> +
> +cpus = [ MemTest(atomic=options.atomic, max_loads=options.maxloads, \
> +                 percent_functional=options.functional, \
> +                 percent_uncacheable=options.uncacheable, \
> +                 progress_interval=options.progress) \
> +         for i in xrange(options.testers) ]
> +
> +# create the desired simulated system
> +# ruby memory
> +ruby_memory = ruby_config.generate("MI_example-homogeneous.rb", 
> options.testers)
> +
> +system = System(cpu = cpus, funcmem = PhysicalMemory(),
> +                physmem = ruby_memory)
> +
> +for cpu in cpus:
> +     cpu.test = system.physmem.port
> +     cpu.functional = system.funcmem.port
> +
> +
> +# -----------------------
> +# run simulation
> +# -----------------------
> +
> +root = Root( system = system )
> +if options.atomic:
> +    root.system.mem_mode = 'atomic'
> +else:
> +    root.system.mem_mode = 'timing'
> +
> +# Not much point in this being higher than the L1 latency
> +m5.ticks.setGlobalFrequency('1ns')
> +
> +# instantiate configuration
> +m5.instantiate(root)
> +
> +# simulate until program terminates
> +exit_event = m5.simulate(options.maxtick)
> +
> +print 'Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>
>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to