start also putting in additional DivPipe*Stage usage
[ieee754fpu.git] / src / ieee754 / div_rem_sqrt_rsqrt / div_pipe.py
index 24be906feab06917bf4f7e32a5aaef24ae5c81fe..e885aa4def4937d54a507d8cbde877b0c94cb9a4 100644 (file)
@@ -126,15 +126,47 @@ class DivPipeBaseStage:
     """ Base Mix-in for DivPipe*Stage. """
 
     def _elaborate(self, m, platform):
+        m.d.comb += self.o.z.eq(self.i.z)
         m.d.comb += self.o.oz.eq(self.i.oz)
         m.d.comb += self.o.out_do_z.eq(self.i.out_do_z)
         m.d.comb += self.o.ctx.eq(self.i.ctx)
 
-# FIXME: in DivPipeSetupStage.elaborate
-# DivPipeBaseStage._elaborate(self, m, platform)
 
-# FIXME: in DivPipeCalculateStage.elaborate
-# DivPipeBaseStage._elaborate(self, m, platform)
+class DivPipeSetupStage(DivPipeBaseStage, DivPipeCoreSetupStage):
+
+    def __init__(self, pspec):
+        # XXX TODO: get core_config from pspec
+        DivPipeCoreSetupStage.__init__(core_config)
+        self.pspec = pspec
+
+    def elaborate(self, platform):
+        m = DivPipeCoreSetupStage(platform) # XXX TODO: out_do_z logic!
+        self._elaborate(m, platform)
+        return m
+
+
+class DivPipeCalculateStage(DivPipeBaseStage, DivPipeCoreCalculateStage):
+
+    def __init__(self, pspec, stage_index):
+        # XXX TODO: get core_config from pspec
+        DivPipeCoreCalculateStage.__init__(core_config, stage_index)
+        self.pspec = pspec
+
+    def elaborate(self, platform):
+        m = DivPipeCoreCalculateStage(platform) # XXX TODO: out_do_z logic!
+        self._elaborate(m, platform)
+        return m
+
+
+class DivPipeFinalStage(DivPipeBaseStage, DivPipeCoreFinalStage):
+
+    def __init__(self, pspec, stage_index):
+        # XXX TODO: get core_config from pspec
+        DivPipeCoreFinalStage.__init__(core_config, stage_index)
+        self.pspec = pspec
+
+    def elaborate(self, platform):
+        m = DivPipeCoreCalculateStage(platform) # XXX TODO: out_do_z logic!
+        self._elaborate(m, platform)
+        return m
 
-# FIXME: in DivPipeFinalStage.elaborate
-# DivPipeBaseStage._elaborate(self, m, platform)