move scoreboard multi rd/wr to new folder
[soc.git] / src / soc / scoremulti / reg_sel_multi.py
1 from nmigen import Elaboratable, Module, Signal, Array
2
3
4 class Reg_Rsv(Elaboratable):
5 """ these are allocated per-Register (vertically),
6 and are each of length fu_count
7 """
8 def __init__(self, fu_count, n_src, n_dest):
9 self.n_src = n_src
10 self.n_dest = n_dest
11 self.fu_count = fu_count
12 self.dest_rsel_i = Signal(fu_count, reset_less=True)
13 self.dest_rsel_i = Array(Signal(fu_count, name="dst_rsel_i",
14 reset_less=True) \
15 for i in range(n_dest))
16 self.src_rsel_i = Array(Signal(fu_count, name="src_rsel_i",
17 reset_less=True) \
18 for i in range(n_src))
19 self.dest_rsel_o = Signal(n_dest, reset_less=True)
20 self.src_rsel_o = Signal(n_src, reset_less=True)
21
22 def elaborate(self, platform):
23 m = Module()
24 for i in range(self.n_dest):
25 m.d.comb += self.dest_rsel_o[i].eq(self.dest_rsel_i[i].bool())
26 for i in range(self.n_src):
27 m.d.comb += self.src_rsel_o[i].eq(self.src_rsel_i[i].bool())
28 return m
29