temporarily not use MultiPriorityPicker
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 17 Apr 2020 13:40:56 +0000 (14:40 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 17 Apr 2020 13:40:56 +0000 (14:40 +0100)
src/soc/scoreboard/group_picker.py

index de9a0d94c1f2a888b46d67f61b6b99f659c572d6..1f68b128b6beab393fe004ae46f324c7dcbbf785 100644 (file)
@@ -46,7 +46,8 @@ from nmigen.compat.sim import run_simulation
 from nmigen.cli import verilog, rtlil
 from nmigen import Module, Signal, Elaboratable, Array
 
-from nmutil.picker import MultiPriorityPicker as MPP
+#from nmutil.picker import MultiPriorityPicker as MPP
+from nmutil.picker import PriorityPicker
 
 
 class GroupPicker(Elaboratable):
@@ -85,17 +86,18 @@ class GroupPicker(Elaboratable):
     def elaborate(self, platform):
         m = Module()
 
-        m.submodules.rpick = rpick = MPP(self.gp_wid, self.n_src, False, True)
-        m.submodules.wpick = wpick = MPP(self.gp_wid, self.n_dst, False, True)
-
         # combine release (output ready signal) with writeable
         for i in range(self.n_dst):
-            m.d.comb += wpick.i[i].eq(self.writable_i[i] & self.req_rel_i[i])
-            m.d.comb += self.go_wr_o[i].eq(wpick.o[i])
+            wpick = PriorityPicker(self.gp_wid)
+            setattr(m.submodules, "wpick%d" % i, wpick)
+            m.d.comb += wpick.i.eq(self.writable_i[i] & self.req_rel_i[i])
+            m.d.comb += self.go_wr_o[i].eq(wpick.o)
 
         for i in range(self.n_src):
-            m.d.comb += rpick.i[i].eq(self.readable_i[i] & self.rd_rel_i[i])
-            m.d.comb += self.go_rd_o[i].eq(rpick.o[i])
+            rpick = PriorityPicker(self.gp_wid)
+            setattr(m.submodules, "rpick%d" % i, rpick)
+            m.d.comb += rpick.i.eq(self.readable_i[i] & self.rd_rel_i[i])
+            m.d.comb += self.go_rd_o[i].eq(rpick.o)
 
         return m