non-begin, non-end mode involves FPDivStage0Data
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 29 Jun 2019 09:07:56 +0000 (10:07 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 29 Jun 2019 09:07:56 +0000 (10:07 +0100)
src/ieee754/fpdiv/divstages.py

index 2d0cbe5d0e03c8bfe6fadf07d41b5a2e43642140..8e33ba8eebc71a9956ab0df7ef0bb2285a4295e4 100644 (file)
@@ -17,6 +17,7 @@ from ieee754.fpcommon.postcalc import FPAddStage1Data
 from .div0 import FPDivStage0Mod
 from .div1 import FPDivStage1Mod
 from .div2 import FPDivStage2Mod
+from .div0 import FPDivStage0Data
 
 
 class FPDivStages(FPState, SimpleHandshake):
@@ -33,13 +34,13 @@ class FPDivStages(FPState, SimpleHandshake):
 
     def ispec(self):
         if self.begin:
-            return FPSCData(self.width, self.id_wid, False)
-        return FPAddStage1Data(self.width, self.id_wid) # AddStage1 ospec
+            return FPSCData(self.width, self.id_wid, False) # from denorm
+        return FPDivStage0Data(self.width, self.id_wid) # DIV ispec (loop)
 
     def ospec(self):
         if self.end: # TODO
-            return FPAddStage1Data(self.width, self.id_wid) # AddStage1 ospec
-        return FPAddStage1Data(self.width, self.id_wid) # AddStage1 ospec
+            return FPAddStage1Data(self.width, self.id_wid) # to post-norm
+        return FPDivStage0Data(self.width, self.id_wid) # DIV ospec (loop)
 
     def setup(self, m, i):
         """ links module to inputs and outputs
@@ -52,6 +53,9 @@ class FPDivStages(FPState, SimpleHandshake):
         # end mode takes the DIV pipeline/chain data and munges it
         # into the format that the normalisation can accept.
 
+        # neither start nor end mode simply takes the exact same
+        # data in as out, this is where the Q/Rem comes in and Q/Rem goes out
+
         divstages = []
 
         if self.begin: # XXX check this