diff options
author | Megan Wachs <megan@sifive.com> | 2016-08-04 14:21:37 -0700 |
---|---|---|
committer | Megan Wachs <megan@sifive.com> | 2016-08-08 11:48:02 -0700 |
commit | 1d9383f6a7b1a31406dd86adc0975775eb1442a1 (patch) | |
tree | 104b0244255b2894748bc3912f01b274d5d16e89 /debug/testlib.py | |
parent | 99ea2bfc87739eb62a8eb1012e6b38d123feede5 (diff) | |
download | riscv-tests-1d9383f6a7b1a31406dd86adc0975775eb1442a1.zip riscv-tests-1d9383f6a7b1a31406dd86adc0975775eb1442a1.tar.gz riscv-tests-1d9383f6a7b1a31406dd86adc0975775eb1442a1.tar.bz2 |
Added FreedomE300 Simulator target
Diffstat (limited to 'debug/testlib.py')
-rw-r--r-- | debug/testlib.py | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/debug/testlib.py b/debug/testlib.py index b3f8f66..d6044f5 100644 --- a/debug/testlib.py +++ b/debug/testlib.py @@ -5,6 +5,7 @@ import subprocess import tempfile import testlib import unittest +import time # Note that gdb comes with its own testsuite. I was unable to figure out how to # run that testsuite against the spike simulator. @@ -76,8 +77,47 @@ class Spike(object): def wait(self, *args, **kwargs): return self.process.wait(*args, **kwargs) +class VcsSim(object): + def __init__(self, simv=None, debug=False): + if simv: + cmd = shlex.split(simv) + else: + cmd = ["simv"] + cmd += ["+jtag_vpi_enable"] + if debug: + cmd[0] = cmd[0] + "-debug" + cmd += ["+vcdplusfile=output/gdbserver.vpd"] + logfile = open("simv.log", "w") + logfile.write("+ %s\n" % " ".join(cmd)) + logfile.flush() + listenfile = open("simv.log", "r") + listenfile.seek(0,2) + self.process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=logfile, + stderr=logfile) + done = False + while (not done): + line = listenfile.readline() + if (not line): + time.sleep(1) + if ("Listening on port 5555" in line): + done = True + + def __del__(self): + print "DELETE called for VcsSim" + try: + self.process.kill() + self.process.wait() + except OSError: + pass + + class Openocd(object): - def __init__(self, cmd=None, config=None, debug=False): + def __init__(self, cmd=None, config=None, debug=False, keepAlive=None): + + # keep handles to other processes -- don't let them be + # garbage collected yet. + + self.keepAlive = keepAlive if cmd: cmd = shlex.split(cmd) else: |