Track minstret and mcycle separately now that the model is cycle-accurate
This commit is contained in:
parent
5dfe5cb62b
commit
5a39d8b7e7
|
@ -129,15 +129,18 @@ class RVCSR:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mcycle = 0
|
self.mcycle = 0
|
||||||
|
self.minstret = 0
|
||||||
self.mscratch = 0
|
self.mscratch = 0
|
||||||
|
|
||||||
def step(self):
|
def step(self):
|
||||||
self.mcycle += 1
|
self.mcycle += 1
|
||||||
|
self.minstret += 1
|
||||||
|
|
||||||
def read(self, addr, side_effect=True):
|
def read(self, addr, side_effect=True):
|
||||||
# Close your eyes
|
if addr in (RVCSR.MCYCLE, RVCSR.MTIME):
|
||||||
if addr in (RVCSR.MCYCLE, RVCSR.MTIME, RVCSR.MINSTRET):
|
|
||||||
return self.mcycle
|
return self.mcycle
|
||||||
|
elif addr == RVCSR.MINSTRET:
|
||||||
|
return self.minstret
|
||||||
elif addr == RVCSR.MSCRATCH:
|
elif addr == RVCSR.MSCRATCH:
|
||||||
return self.mscratch
|
return self.mscratch
|
||||||
else:
|
else:
|
||||||
|
@ -150,6 +153,8 @@ class RVCSR:
|
||||||
data = self.read(addr, side_effect=False) | data
|
data = self.read(addr, side_effect=False) | data
|
||||||
if addr == RVCSR.MCYCLE:
|
if addr == RVCSR.MCYCLE:
|
||||||
self.mcycle = data
|
self.mcycle = data
|
||||||
|
elif addr == RVCSR.MINSTRET:
|
||||||
|
self.minstret = data
|
||||||
elif addr == RVCSR.MSCRATCH:
|
elif addr == RVCSR.MSCRATCH:
|
||||||
self.mscratch = data
|
self.mscratch = data
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue