from ieee754.fpcommon.normtopack import FPNormToPack
from .specialcases import FPMulSpecialCasesDeNorm
from .mulstages import FPMulStages
-
+from ieee754.pipeline import PipelineSpec
class FPMULBasePipe(ControlBase):
- def __init__(self, width, id_wid):
+ def __init__(self, pspec):
ControlBase.__init__(self)
- self.pipe1 = FPMulSpecialCasesDeNorm(width, id_wid)
- self.pipe2 = FPMulStages(width, id_wid)
- self.pipe3 = FPNormToPack(width, id_wid)
+ self.pipe1 = FPMulSpecialCasesDeNorm(pspec)
+ self.pipe2 = FPMulStages(pspec)
+ self.pipe3 = FPNormToPack(pspec)
self._eqs = self.connect([self.pipe1, self.pipe2, self.pipe3])
Fan-in and Fan-out are combinatorial.
"""
- def __init__(self, width, num_rows):
- self.width = width
+
+ def __init__(self, width, num_rows, op_wid=0):
self.id_wid = num_bits(width)
- self.alu = FPMULBasePipe(width, self.id_wid)
+ self.op_wid = op_wid
+ self.pspec = PipelineSpec(width, self.id_wid, self.op_wid)
+ self.alu = FPMULBasePipe(self.pspec)
ReservationStations.__init__(self, num_rows)
def i_specfn(self):
- return FPADDBaseData(self.width, self.id_wid)
+ return FPADDBaseData(self.pspec)
def o_specfn(self):
- return FPPackData(self.width, self.id_wid)
+ return FPPackData(self.pspec)