split out addstages to separate module
[ieee754fpu.git] / src / add / nmigen_add_experiment.py
index bffd4b22c0c53582fca80368b58b25b6cd214019..a80b5a7c3b93e134bf4fa4f433cbcf64012a7955 100644 (file)
@@ -33,43 +33,7 @@ from fpadd.align import (FPAddAlignMulti, FPAddAlignMultiMod, FPNumIn2Ops,
                          FPAddAlignSingleMod, FPAddAlignSingle)
 from fpadd.add0 import (FPAddStage0Data, FPAddStage0Mod, FPAddStage0)
 from fpadd.add1 import (FPAddStage1Mod, FPAddStage1)
-
-
-class FPAddAlignSingleAdd(FPState, UnbufferedPipeline):
-
-    def __init__(self, width, id_wid):
-        FPState.__init__(self, "align")
-        self.width = width
-        self.id_wid = id_wid
-        UnbufferedPipeline.__init__(self, self) # pipeline is its own stage
-        self.a1o = self.ospec()
-
-    def ispec(self):
-        return FPSCData(self.width, self.id_wid)
-
-    def ospec(self):
-        return FPAddStage1Data(self.width, self.id_wid) # AddStage1 ospec
-
-    def setup(self, m, i):
-        """ links module to inputs and outputs
-        """
-
-        # chain AddAlignSingle, AddStage0 and AddStage1
-        mod = FPAddAlignSingleMod(self.width, self.id_wid)
-        a0mod = FPAddStage0Mod(self.width, self.id_wid)
-        a1mod = FPAddStage1Mod(self.width, self.id_wid)
-
-        chain = StageChain([mod, a0mod, a1mod])
-        chain.setup(m, i)
-
-        self.o = a1mod.o
-
-    def process(self, i):
-        return self.o
-
-    def action(self, m):
-        m.d.sync += self.a1o.eq(self.process(None))
-        m.next = "normalise_1"
+from fpadd.addstages import FPAddAlignSingleAdd
 
 
 class FPOpData: