fs.py revision 2953
19793Sakash.bagdia@arm.comimport optparse, os, sys
27586SAli.Saidi@arm.com
37586SAli.Saidi@arm.comimport m5
47586SAli.Saidi@arm.comfrom m5.objects import *
57586SAli.Saidi@arm.comm5.AddToPath('../common')
67586SAli.Saidi@arm.comfrom FSConfig import *
77586SAli.Saidi@arm.comfrom SysPaths import *
87586SAli.Saidi@arm.comfrom Util import *
97586SAli.Saidi@arm.com
107586SAli.Saidi@arm.comparser = optparse.OptionParser()
117586SAli.Saidi@arm.com
127586SAli.Saidi@arm.comparser.add_option("-d", "--detailed", action="store_true")
133970Sgblack@eecs.umich.eduparser.add_option("-t", "--timing", action="store_true")
143005Sstever@eecs.umich.eduparser.add_option("-m", "--maxtick", type="int")
153005Sstever@eecs.umich.eduparser.add_option("--maxtime", type="float")
163005Sstever@eecs.umich.eduparser.add_option("--dual", help="Run full system using dual systems",
173005Sstever@eecs.umich.edu                  action="store_true")
183005Sstever@eecs.umich.edu
193005Sstever@eecs.umich.edu(options, args) = parser.parse_args()
203005Sstever@eecs.umich.edu
213005Sstever@eecs.umich.eduif args:
223005Sstever@eecs.umich.edu    print "Error: script doesn't take any positional arguments"
233005Sstever@eecs.umich.edu    sys.exit(1)
243005Sstever@eecs.umich.edu
253005Sstever@eecs.umich.eduif options.detailed:
263005Sstever@eecs.umich.edu    cpu = DetailedO3CPU()
273005Sstever@eecs.umich.edu    cpu2 = DetailedO3CPU()
283005Sstever@eecs.umich.edu    mem_mode = 'timing'
293005Sstever@eecs.umich.eduelif options.timing:
303005Sstever@eecs.umich.edu    cpu = TimingSimpleCPU()
313005Sstever@eecs.umich.edu    cpu2 = TimingSimpleCPU()
323005Sstever@eecs.umich.edu    mem_mode = 'timing'
333005Sstever@eecs.umich.eduelse:
343005Sstever@eecs.umich.edu    cpu = AtomicSimpleCPU()
353005Sstever@eecs.umich.edu    cpu2 = AtomicSimpleCPU()
363005Sstever@eecs.umich.edu    mem_mode = 'atomic'
373005Sstever@eecs.umich.edu
383005Sstever@eecs.umich.eduif options.dual:
393005Sstever@eecs.umich.edu    root = DualRoot(
403005Sstever@eecs.umich.edu        MyLinuxAlphaSystem(cpu, mem_mode, linux_image),
416654Snate@binkert.org        MyLinuxAlphaSystem(cpu2, mem_mode, linux_image))
426654Snate@binkert.org    root.client.readfile = script('netperf-stream-nt-client.rcS')
432889SN/A    root.server.readfile = script('netperf-server.rcS')
442710SN/Aelse:
456654Snate@binkert.org    root = TsunamiRoot(clock = '1THz', system = MyLinuxAlphaSystem(cpu, mem_mode, linux_image))
466654Snate@binkert.org
476654Snate@binkert.orgm5.instantiate(root)
485457Ssaidi@eecs.umich.edu
496654Snate@binkert.org#exit_event = m5.simulate(2600000000000)
506654Snate@binkert.org#if exit_event.getCause() != "user interrupt received":
512934SN/A#    m5.checkpoint(root, 'cpt')
522549SN/A#    exit_event = m5.simulate(300000000000)
532995SN/A#    if exit_event.getCause() != "user interrupt received":
543395Shsul@eecs.umich.edu#        m5.checkpoint(root, 'cptA')
556981SLisa.Hsu@amd.com
563448Shsul@eecs.umich.edu
578920Snilay@cs.wisc.eduif options.maxtick:
583444Sktlim@umich.edu    exit_event = m5.simulate(options.maxtick)
592889SN/Aelif options.maxtime:
608920Snilay@cs.wisc.edu    simtime = int(options.maxtime * root.clock.value)
618920Snilay@cs.wisc.edu    print "simulating for: ", simtime
623322Shsul@eecs.umich.edu    exit_event = m5.simulate(simtime)
632710SN/Aelse:
642710SN/A    exit_event = m5.simulate()
652710SN/A
662710SN/Aprint 'Exiting @ cycle', m5.curTick(), 'because', exit_event.getCause()
672710SN/A