add MMU and SPR to list of FUs that must report "busy" i.e. block
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 29 Nov 2021 13:19:45 +0000 (13:19 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 29 Nov 2021 13:19:45 +0000 (13:19 +0000)
src/soc/simple/core.py

index f8c3c2451fc636c3601ff9913ca2925e47117362..de7c5324a8fd8d8a1d0150f80f79b634cbbdfb0e 100644 (file)
@@ -427,11 +427,15 @@ class NonProductionCore(ControlBase):
             # and resolved
             with m.If(self.issue_conflict):
                 comb += busy_o.eq(1)
-            # make sure that LDST, Branch and Trap all say "busy"
-            # and do not allow overlap
+            # make sure that LDST, SPR, MMU, Branch and Trap all say "busy"
+            # and do not allow overlap.  these are all the ones that
+            # are non-forward-progressing: exceptions etc. that otherwise
+            # change CoreState for some reason (MSR, PC, SVSTATE)
             for funame, fu in fus.items():
                 if (funame.lower().startswith('ldst') or
                     funame.lower().startswith('branch') or
+                    funame.lower().startswith('mmu') or
+                    funame.lower().startswith('spr') or
                     funame.lower().startswith('trap')):
                     with m.If(fu.busy_o):
                         comb += busy_o.eq(1)