projects
/
soc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mmu: add debug output
[soc.git]
/
src
/
soc
/
experiment
/
mmu.py
diff --git
a/src/soc/experiment/mmu.py
b/src/soc/experiment/mmu.py
index 966bbad887770f666dfbcdb01a48ae817efa1a79..aadffaaa22ddc0882e8a49eb86b3a12471ba148d 100644
(file)
--- a/
src/soc/experiment/mmu.py
+++ b/
src/soc/experiment/mmu.py
@@
-33,6
+33,9
@@
from soc.experiment.mem_types import (LoadStore1ToMMUType,
MMUToICacheType)
MMUToICacheType)
+# for debugging
+display_invalid = True
+
@unique
class State(Enum):
IDLE = 0 # zero is default on reset for r.state
@unique
class State(Enum):
IDLE = 0 # zero is default on reset for r.state
@@
-166,6
+169,9
@@
class MMU(Elaboratable):
# Use RPDS = 0 to disable radix tree walks
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
# Use RPDS = 0 to disable radix tree walks
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
+ if(display_invalid):
+ sync += Display("MMUBUG: Use RPDS = 0 to disable"
+ " radix tree walks")
with m.Else():
comb += v.state.eq(State.SEGMENT_CHECK)
with m.Else():
comb += v.state.eq(State.SEGMENT_CHECK)
@@
-212,6
+218,7
@@
class MMU(Elaboratable):
with m.Else():
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
with m.Else():
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
+ if(display_invalid): m.d.sync += Display("MMUBUG: mbits is invalid")
def radix_read_wait(self, m, v, r, d_in, data):
comb = m.d.comb
def radix_read_wait(self, m, v, r, d_in, data):
comb = m.d.comb
@@
-278,6
+285,8
@@
class MMU(Elaboratable):
# non-present PTE, generate a DSI
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
# non-present PTE, generate a DSI
comb += v.state.eq(State.RADIX_FINISH)
comb += v.invalid.eq(1)
+ if(display_invalid):
+ sync += Display("MMUBUG: non-present PTE, generate a DSI")
def segment_check(self, m, v, r, data, finalmask):
comb = m.d.comb
def segment_check(self, m, v, r, data, finalmask):
comb = m.d.comb