use DynamicPipe instead of SimpleHandshake
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 00:27:30 +0000 (01:27 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 00:27:30 +0000 (01:27 +0100)
src/ieee754/fpadd/specialcases.py

index e6e04fe97ae492b65f54e8617d113638356a54d7..3221e9cc73cf0c3fc4ebd19eac019f8fb104d1e0 100644 (file)
@@ -7,7 +7,8 @@ from nmigen.cli import main, verilog
 from math import log
 
 from ieee754.fpcommon.fpbase import FPNumDecode
-from nmutil.singlepipe import SimpleHandshake, StageChain
+from nmutil.singlepipe import StageChain
+from ieee754.pipeline import DynamicPipe
 
 from ieee754.fpcommon.fpbase import FPState, FPID, FPNumBaseRecord
 from ieee754.fpcommon.getop import FPADDBaseData
@@ -172,16 +173,15 @@ class FPAddSpecialCases(FPState):
             m.next = "denormalise"
 
 
-class FPAddSpecialCasesDeNorm(FPState, SimpleHandshake):
+class FPAddSpecialCasesDeNorm(DynamicPipe):
     """ special cases: NaNs, infs, zeros, denormalised
         NOTE: some of these are unique to add.  see "Special Operations"
         https://steve.hollasch.net/cgindex/coding/ieeefloat.html
     """
 
     def __init__(self, pspec):
-        FPState.__init__(self, "special_cases")
         self.pspec = pspec
-        SimpleHandshake.__init__(self, self) # pipe is its own stage
+        super().__init__(pspec)
         self.out = self.ospec()
 
     def ispec(self):
@@ -207,12 +207,3 @@ class FPAddSpecialCasesDeNorm(FPState, SimpleHandshake):
     def process(self, i):
         return self.o
 
-    def action(self, m):
-        # for break-out (early-out)
-        #with m.If(self.out_do_z):
-        #    m.next = "put_z"
-        #with m.Else():
-            m.d.sync += self.out.eq(self.process(None))
-            m.next = "align"
-
-