move dependency cells to row class
[soc.git] / src / scoreboard / dependence_cell.py
index ae552077841baf7e8189b8f7c64892c173bc60e1..a4cb8a2d27d9d7ee0ec1a8d28bde1f8ac4103031 100644 (file)
@@ -1,6 +1,6 @@
 from nmigen.compat.sim import run_simulation
 from nmigen.cli import verilog, rtlil
-from nmigen import Module, Signal, Elaboratable
+from nmigen import Module, Signal, Elaboratable, Array
 from nmutil.latch import SRLatch
 
 
@@ -75,6 +75,18 @@ class DependenceCell(Elaboratable):
         return list(self)
 
 
+class DependencyRow(Elaboratable):
+    def __init__(self, n_reg_col):
+        self.n_reg_col = n_reg_col
+        self.rcell = Array(DependenceCell() for f in range(self.n_reg_col))
+
+    def elaborate(self, platform):
+        m = Module()
+        for rn in range(self.n_reg_col):
+            setattr(m.submodules, "dm_r%d" % rn, self.rcell[rn])
+        return m
+
+
 def dcell_sim(dut):
     yield dut.dest_i.eq(1)
     yield dut.issue_i.eq(1)