mmu: add debug output
authorTobias Platen <tplaten@posteo.de>
Thu, 25 Nov 2021 16:53:42 +0000 (17:53 +0100)
committerTobias Platen <tplaten@posteo.de>
Thu, 25 Nov 2021 16:53:42 +0000 (17:53 +0100)
src/soc/experiment/mmu.py

index 966bbad887770f666dfbcdb01a48ae817efa1a79..aadffaaa22ddc0882e8a49eb86b3a12471ba148d 100644 (file)
@@ -33,6 +33,9 @@ from soc.experiment.mem_types import (LoadStore1ToMMUType,
                                  MMUToICacheType)
 
 
+# for debugging
+display_invalid = True
+
 @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)
+                    if(display_invalid):
+                        sync += Display("MMUBUG: Use RPDS = 0 to disable"
+                                        " radix tree walks")
                 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)
+            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
@@ -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)
+            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