- def __init__(self, width, id_wid, num_rows):
- self.num_rows = num_rows
- self.inpipe = FPADDInMuxPipe(width, id_wid, num_rows) # fan-in
- self.fpadd = FPADDBasePipe(width, id_wid) # add stage
- self.outpipe = FPADDMuxOutPipe(width, id_wid, num_rows) # fan-out
-
- self.p = self.inpipe.p # kinda annoying,
- self.n = self.outpipe.n # use pipe in/out as this class in/out
- self._ports = self.inpipe.ports() + self.outpipe.ports()
-
- def elaborate(self, platform):
- m = Module()
- m.submodules.inpipe = self.inpipe
- m.submodules.fpadd = self.fpadd
- m.submodules.outpipe = self.outpipe
-
- m.d.comb += self.inpipe.n.connect_to_next(self.fpadd.p)
- m.d.comb += self.fpadd.connect_to_next(self.outpipe)
-
- return m
-
- def ports(self):
- return self._ports
+ def __init__(self, width, num_rows):
+ self.width = width
+ self.id_wid = num_bits(width)
+ self.alu = FPADDBasePipe(width, self.id_wid)
+ ReservationStations.__init__(self, num_rows)