run.py revision 14143:0981b2cc0a73
1# Copyright (c) 2012, 2019 ARM Limited 2# All rights reserved 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license 9# terms below provided that you ensure that this notice is replicated 10# unmodified and in its entirety in all distributions of the software, 11# modified or unmodified, in source code or in binary form. 12# 13# Copyright (c) 2006-2007 The Regents of The University of Michigan 14# All rights reserved. 15# 16# Redistribution and use in source and binary forms, with or without 17# modification, are permitted provided that the following conditions are 18# met: redistributions of source code must retain the above copyright 19# notice, this list of conditions and the following disclaimer; 20# redistributions in binary form must reproduce the above copyright 21# notice, this list of conditions and the following disclaimer in the 22# documentation and/or other materials provided with the distribution; 23# neither the name of the copyright holders nor the names of its 24# contributors may be used to endorse or promote products derived from 25# this software without specific prior written permission. 26# 27# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 28# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 29# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 30# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 31# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 32# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 33# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 34# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 35# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 36# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 37# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38# 39# Authors: Steve Reinhardt 40# Nikos Nikoleris 41 42from __future__ import print_function 43 44import sys 45import os 46import os.path 47from os.path import join as joinpath 48 49import m5 50 51def run_test(root): 52 """Default run_test implementations. Scripts can override it.""" 53 54 # instantiate configuration 55 m5.instantiate() 56 57 # simulate until program terminates 58 exit_event = m5.simulate() 59 print('Exiting @ tick', m5.curTick(), 'because', exit_event.getCause()) 60 61config = sys.argv[1] 62os.environ['M5_PATH'] = os.path.dirname(__file__) 63 64# path setup 65gem5_root = joinpath(os.path.dirname(__file__), '..', '..', '..', '..', '..') 66sys.path.append(joinpath(gem5_root, 'configs')) 67tests_root = joinpath(gem5_root, 'tests') 68sys.path.append(joinpath(tests_root, 'configs')) 69 70exec(compile(open(config).read(), config, 'exec')) 71 72system = root.system 73system.readfile = os.path.join(tests_root, 'halt.sh') 74 75# The CPU can either be a list of CPUs or a single object. 76if isinstance(system.cpu, list): 77 [ cpu.createThreads() for cpu in system.cpu ] 78else: 79 system.cpu.createThreads() 80 81# Since we're in batch mode, don't allow tcp socket connections 82m5.disableAllListeners() 83 84run_test(root) 85