1
0
Fork 0
rocket-chip/scripts/tracegen.py

68 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
# This file was originally written by Matthew Naylor, University of
# Cambridge.
#
# This software was partly developed by the University of Cambridge
# Computer Laboratory under DARPA/AFRL contract FA8750-10-C-0237
# ("CTSRD"), as part of the DARPA CRASH research programme.
#
# This software was partly developed by the University of Cambridge
# Computer Laboratory under DARPA/AFRL contract FA8750-11-C-0249
# ("MRC2"), as part of the DARPA MRC research programme.
#
# This software was partly developed by the University of Cambridge
# Computer Laboratory as part of the Rigorous Engineering of
# Mainstream Systems (REMS) project, funded by EPSRC grant
# EP/K008528/1.
# -------
# Outline
# -------
# Usage:
#
# tracegen.py EMULATOR SEED
#
# This script generates a trace using the given emulator (built
# with CONFIG=TraceGenConfig). It waits until all cores have
# completed trace generation before terminating the emulator.
import sys
import subprocess
import re
def main():
if len(sys.argv) != 3:
sys.stderr.write("Usage: tracegen.py EMULATOR SEED\n")
sys.exit(-1)
p = subprocess.Popen([sys.argv[1],
"+verbose", "-s" + sys.argv[2]],
stderr=subprocess.PIPE, stdout=subprocess.PIPE)
if p == None:
sys.stderr.write("File not found: " + sys.argv[1] + "\n")
sys.exit(-1)
numFinished = 0
while True:
line = p.stderr.readline()
if line[0:9] == "FINISHED ":
total = int(line[9:-1])
numFinished = numFinished + 1
if numFinished == total:
break
elif line[0:15] == "Completed after":
break
elif line[0:7] == "testing":
continue
else:
print line,
p.terminate()
try:
main()
except KeyboardInterrupt:
sys.exit(-1)