Skip to content

Commit 8565830

Browse files
committed
Add SingleRegister
1 parent a1943cf commit 8565830

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

riscvmodel/types.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,38 @@ def changes(self) -> list:
281281
def __str__(self):
282282
return "{}".format([str(r) for r in self.regs])
283283

284+
class SingleRegister(object):
285+
def __init__(self, bits: int, id: str):
286+
self.bits = bits
287+
self.reg = Register(bits)
288+
self.reg_update = None
289+
self.id = id
290+
291+
def randomize(self):
292+
self.reg.randomize()
293+
294+
def update(self, value):
295+
reg = Register(self.bits)
296+
reg.set(value)
297+
self.reg_update = TraceRegister(self.id, reg)
298+
299+
def get(self):
300+
return self.reg
301+
302+
def commit(self):
303+
if self.reg_update:
304+
self.reg.set(self.reg_update.value)
305+
self.reg_update = None
306+
307+
def changes(self) -> list:
308+
return [self.reg_update] if self.reg_update else []
309+
310+
def __int__(self):
311+
return self.reg.value
312+
313+
def __iadd__(self, other):
314+
self.update(self.reg.value + other)
315+
return self.reg
284316

285317
class Trace(object):
286318
pass

0 commit comments

Comments
 (0)