identify points where DivPipeCore*Data is needed
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 5 Jul 2019 10:27:44 +0000 (11:27 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 5 Jul 2019 10:28:23 +0000 (11:28 +0100)
src/ieee754/fpdiv/div1.py
src/ieee754/fpdiv/div2.py
src/ieee754/fpdiv/divstages.py

index dd2aba48d0d3ebefc0a1c949f4ad63e3045dfabf..27e4b782328708f4f56032e7d94d4c46fd90b137 100644 (file)
@@ -9,7 +9,7 @@ from nmigen.cli import main, verilog
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
 from ieee754.fpcommon.fpbase import FPState
 from ieee754.fpcommon.denorm import FPSCData
-from .div0 import FPDivStage0Data
+from .div0 import FPDivStage0Data # TODO: replace with DivPipeCoreInterstageData
 
 
 class FPDivStage1Mod(Elaboratable):
@@ -21,9 +21,11 @@ class FPDivStage1Mod(Elaboratable):
         self.o = self.ospec()
 
     def ispec(self):
+        # TODO: DivPipeCoreInterstageData, here
         return FPDivStage0Data(self.width, self.pspec) # Q/Rem (etc) in...
 
     def ospec(self):
+        # TODO: DivPipeCoreInterstageData, here
         return FPDivStage0Data(self.width, self.pspec) # ... Q/Rem (etc) out
 
     def process(self, i):
index 9c77667a604dba1817c62a7ecf922c77bd20889c..43153fc93b842181b504ab7113fff4e2caf865c8 100644 (file)
@@ -8,7 +8,7 @@ from nmigen.cli import main, verilog
 
 from ieee754.fpcommon.fpbase import FPState
 from ieee754.fpcommon.postcalc import FPAddStage1Data
-from .div0 import FPDivStage0Data
+from .div0 import FPDivStage0Data # XXX TODO: replace
 
 
 class FPDivStage2Mod(FPState, Elaboratable):
@@ -22,9 +22,12 @@ class FPDivStage2Mod(FPState, Elaboratable):
         self.o = self.ospec()
 
     def ispec(self):
+        # TODO: DivPipeCoreInterstageData
         return FPDivStage0Data(self.width, self.pspec) # Q/Rem in...
 
     def ospec(self):
+        # XXX REQUIRED.  MUST NOT BE CHANGED.  this is the format
+        # required for ongoing processing (normalisation, correction etc.)
         return FPAddStage1Data(self.width, self.pspec) # out to post-process
 
     def process(self, i):
index 2dac2a620a9cbb09961ff2f4c45d093bbe2d8454..d62db0de038a69ebe34aeb8573740c4baa7bbe2d 100644 (file)
@@ -33,13 +33,29 @@ class FPDivStages(FPState, SimpleHandshake):
         self.m1o = self.ospec()
 
     def ispec(self):
-        if self.begin:
+        if self.begin: # TODO - this is for FPDivStage0Mod
+            # REQUIRED.  do NOT change.
             return FPSCData(self.width, self.pspec, False) # from denorm
+
+        if self.end: # TODO - this is for FPDivStage2Mod
+            # XXX TODO: replace with "intermediary" (DivPipeCoreInterstageData?)
+            return FPDivStage0Data(self.width, self.pspec) # DIV ispec (loop)
+
+        # TODO - this is for FPDivStage1Mod
+        # XXX TODO: replace with "intermediary" (DivPipeCoreInterstageData)
         return FPDivStage0Data(self.width, self.pspec) # DIV ispec (loop)
 
     def ospec(self):
-        if self.end: # TODO
+        if self.begin: # TODO - this is for FPDivStage0Mod
+            # XXX TODO: replace with "intermediary" (DivPipeCoreInterstageData)
+            return FPDivStage0Data(self.width, self.pspec) # DIV ospec (loop)
+
+        if self.end: # TODO - this is for FPDivStage2Mod
+            # REQUIRED.  do NOT change.
             return FPAddStage1Data(self.width, self.pspec) # to post-norm
+
+        # TODO - this is for FPDivStage1Mod
+        # XXX TODO: replace with "intermediary" (DivPipeCoreInterstageData)
         return FPDivStage0Data(self.width, self.pspec) # DIV ospec (loop)
 
     def setup(self, m, i):