shorter way of getting FU busy signals
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Nov 2021 23:48:05 +0000 (23:48 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Nov 2021 23:48:05 +0000 (23:48 +0000)
src/soc/simple/core.py

index 1c67c87b3f5c783c72131918e4efff317babdb4c..00e351cb0de557173e41474c9c25294684471cbe 100644 (file)
@@ -333,11 +333,9 @@ class NonProductionCore(ControlBase):
                             rdmask = get_rdflags(self.i.e, fu)
                             comb += fu.rdmaskn.eq(~rdmask)
 
-        # if instruction is busy, set busy output for core. also
-        # continue to hold each fu rdmask
-        for funame, fu in fus.items():
-            with m.If(fu.busy_o):
-                comb += busy_o.eq(fu.busy_o)
+        # if instruction is busy, set busy output for core.
+        busys = map(lambda fu: fu.busy_o, fus.values())
+        comb += busy_o.eq(Cat(*busys).bool())
 
         # set ready/valid signalling.  if busy, means refuse incoming issue
         # XXX note: for an in-order core this is far too simple.  busy must