Skip to content

Commit 4713313

Browse files
committed
Add TerminateException, for example called from Environment
1 parent c77a680 commit 4713313

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

riscvmodel/isa.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,3 +762,7 @@ def get_mnenomics():
762762
:rtype: List[str]
763763
"""
764764
return [i._mnemonic for i in get_insns()]
765+
766+
class TerminateException(Exception):
767+
def __init__(self, returncode):
768+
self.returncode = returncode

riscvmodel/model.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,11 @@ def execute(self, insn):
123123
elif not isinstance(insn, list):
124124
insn = [insn]
125125

126-
for i in insn:
127-
self.issue(i)
126+
try:
127+
for i in insn:
128+
self.issue(i)
129+
except TerminateException as ex:
130+
assert ex.returncode == 0
128131

129132
def randomize(self):
130133
self.state.randomize()

riscvmodel/sim.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from .model import Model, Memory
2+
from .isa import TerminateException
23

34
import struct
45

@@ -22,7 +23,10 @@ def run(self, *, pc=0):
2223
try:
2324
self.model.issue(self.program[int(self.model.state.pc)>>2])
2425
cnt += 1
25-
except IndexError as e:
26+
except TerminateException as exc:
27+
assert exc.returncode == 0
28+
return cnt
29+
except IndexError:
2630
return cnt
2731
return cnt
2832

0 commit comments

Comments
 (0)