move FPModBase and FPModBaseChain to nmutil
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 14:25:54 +0000 (15:25 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 14:25:54 +0000 (15:25 +0100)
26 files changed:
src/ieee754/fclass/fclass.py
src/ieee754/fcvt/downsize.py
src/ieee754/fcvt/int2float.py
src/ieee754/fcvt/upsize.py
src/ieee754/fpadd/add0.py
src/ieee754/fpadd/add1.py
src/ieee754/fpadd/addstages.py
src/ieee754/fpadd/align.py
src/ieee754/fpadd/specialcases.py
src/ieee754/fpcommon/corrections.py
src/ieee754/fpcommon/denorm.py
src/ieee754/fpcommon/modbase.py [deleted file]
src/ieee754/fpcommon/normtopack.py
src/ieee754/fpcommon/pack.py
src/ieee754/fpcommon/postnormalise.py
src/ieee754/fpcommon/roundz.py
src/ieee754/fpdiv/div0.py
src/ieee754/fpdiv/div2.py
src/ieee754/fpdiv/divstages.py
src/ieee754/fpdiv/specialcases.py
src/ieee754/fpmul/align.py
src/ieee754/fpmul/mul0.py
src/ieee754/fpmul/mul1.py
src/ieee754/fpmul/mulstages.py
src/ieee754/fpmul/specialcases.py
src/nmutil/pipemodbase.py [new file with mode: 0644]

index 3bad5c24cfb2067a578904bdcd5ed17c42472510..e3b7ff4c17d02272a430962edac4108d6c4bf091 100644 (file)
@@ -3,7 +3,7 @@
 
 from nmigen import Module, Signal, Cat
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.pack import FPPackData
 from ieee754.fpcommon.fpbase import FPNumDecode, FPNumBaseRecord
index 4a23adee121b3b31c70ca6a8b9a788c81b9083f6..3561f1970652bed324bdb77463ab8869d4c61691 100644 (file)
@@ -4,7 +4,7 @@
 from nmigen import Module, Signal, Const
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpcommon.msbhigh import FPMSBHigh
index 889c301c5788a403a73542c1f6448497f754255f..4f559101d02b7fc6a52874f53e91a65fdf9a922d 100644 (file)
@@ -4,7 +4,7 @@
 from nmigen import Module, Signal, Cat
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpcommon.msbhigh import FPMSBHigh
index e08aaf32c4a4472844ea85ef394f1eb111eae18b..483ddbbc462a883a8ecf21285565a2d8ad1db3af 100644 (file)
@@ -8,7 +8,7 @@ import functools
 from nmigen import Module, Signal, Cat
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpcommon.fpbase import FPNumDecode, FPNumBaseRecord
index 9e69820f4ea697bc73c9c0c3c3e7e69628f5cd98..0a77855b9a1c4be9d616a6c9432f80ec942b5840 100644 (file)
@@ -7,7 +7,7 @@ Copyright (C) 2019 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
 from nmigen import Module, Signal, Cat
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 
 from ieee754.fpcommon.fpbase import FPNumBase, FPNumBaseRecord
 from ieee754.fpcommon.denorm import FPSCData
index 8b2096e8f6cffa984da7a79d8d4538aaeaa1aadb..9004be8f57b3d6058ca13094dda3c0d61e31cff5 100644 (file)
@@ -8,7 +8,7 @@ from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpadd.add0 import FPAddStage0Data
 
index 170b37c66355033f01904b96a1a8ae36881b12fa..b62d6d20497dcab371a937a5a3b0cc12b937f9d4 100644 (file)
@@ -4,7 +4,7 @@ Copyright (C) 2019 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
 
 """
 
-from ieee754.fpcommon.modbase import FPModBaseChain
+from nmutil.pipemodbase import FPModBaseChain
 
 from ieee754.fpadd.align import FPAddAlignSingleMod
 from ieee754.fpadd.add0 import FPAddStage0Mod
index bd1b4c062843835bf1e213ba466a0ff36d68be10..0cfc38d0a7e81cd71ff2033bf3d4d1bab1b45944 100644 (file)
@@ -5,7 +5,7 @@
 from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
 from ieee754.fpcommon.fpbase import MultiShiftRMerge
 from ieee754.fpcommon.denorm import FPSCData
index 9846eabc40cdcec38a30d892b199168f5fad899e..c11832dcb8d3ab550e7683049c247236d234efab 100644 (file)
@@ -6,7 +6,7 @@ from nmigen import Module, Signal, Cat, Const
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase, FPModBaseChain
+from nmutil.pipemodbase import FPModBase, FPModBaseChain
 from ieee754.fpcommon.fpbase import FPNumDecode
 
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
index df7d97f540c981c4edf05a0534de841899fe0434..2ac65d790fe994401c82cf3142bcf94399fa4abc 100644 (file)
@@ -5,7 +5,7 @@
 from nmigen import Module
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBase
 from ieee754.fpcommon.roundz import FPRoundData
 
index 43e343ae5bca0789f297c7856d43a8055f489243..8210c0193f943d8e33066b5d384b1f897fc3cdc6 100644 (file)
@@ -6,7 +6,7 @@ from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
 from ieee754.fpcommon.fpbase import FPNumBase
 from ieee754.fpcommon.getop import FPPipeContext
diff --git a/src/ieee754/fpcommon/modbase.py b/src/ieee754/fpcommon/modbase.py
deleted file mode 100644 (file)
index 1ebe3a1..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-from nmigen import Elaboratable
-from ieee754.pipeline import DynamicPipe
-from nmutil.singlepipe import StageChain
-
-
-class FPModBase(Elaboratable):
-    """FPModBase: common code between nearly every pipeline module
-    """
-    def __init__(self, pspec, modname):
-        self.modname = modname # use this to give a name to this module
-        self.pspec = pspec
-        self.i = self.ispec()
-        self.o = self.ospec()
-
-    def process(self, i):
-        return self.o
-
-    def setup(self, m, i):
-        """ links module to inputs and outputs
-        """
-        setattr(m.submodules, self.modname, self)
-        m.d.comb += self.i.eq(i)
-
-
-class FPModBaseChain(DynamicPipe):
-    """FPModBaseChain: common code between stage-chained pipes
-
-    Links a set of combinatorial modules (get_chain) together
-    and uses pspec.pipekls to dynamically select the pipeline type
-    Also conforms to the Pipeline Stage API
-    """
-    def __init__(self, pspec):
-        self.pspec = pspec
-        self.chain = self.get_chain()
-        super().__init__(pspec)
-
-    def ispec(self):
-        """ returns the input spec of the first module in the chain
-        """
-        return self.chain[0].ispec()
-
-    def ospec(self):
-        """ returns the output spec of the last module in the chain
-        """
-        return self.chain[-1].ospec()
-
-    def process(self, i):
-        return self.o # ... returned here (see setup comment below)
-
-    def setup(self, m, i):
-        """ links module to inputs and outputs
-        """
-        StageChain(self.chain).setup(m, i) # input linked here, through chain
-        self.o = self.chain[-1].o # output is the last thing in the chain...
index 9aea1803df2cf53177da68b2107f79cdce11e7c1..33459a360f5854b2fcf130041d1ef0dd21a4bf08 100644 (file)
@@ -4,7 +4,7 @@ Copyright (C) 2019 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
 
 """
 
-from ieee754.fpcommon.modbase import FPModBaseChain
+from nmutil.pipemodbase import FPModBaseChain
 from ieee754.fpcommon.postnormalise import FPNorm1ModSingle
 from ieee754.fpcommon.roundz import FPRoundMod
 from ieee754.fpcommon.corrections import FPCorrectionsMod
index 610bc706b5c2dee62d19064aa8d41dd824cdb4f8..4553f53182edb8df91b01aa84e9e32062e759dc5 100644 (file)
@@ -5,7 +5,7 @@
 from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBaseRecord, FPNumBase
 from ieee754.fpcommon.roundz import FPRoundData
 from ieee754.fpcommon.getop import FPPipeContext
index 653fdac29a0802b26ffdbc4d9e5573a6bc0d27c1..9f1720a2b6c21de96bd14b3b69951acf54939247 100644 (file)
@@ -6,7 +6,7 @@ from nmigen import Module, Signal, Cat, Mux
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import (Overflow, OverflowMod,
                                      FPNumBase, FPNumBaseRecord)
 from ieee754.fpcommon.fpbase import FPState
index a4077cfdd843f26df13761f203364b17c2db7b70..78a00d37366252bb8e4fdb0af544267f4891ce0d 100644 (file)
@@ -5,7 +5,7 @@
 from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBase, FPNumBaseRecord
 from ieee754.fpcommon.getop import FPPipeContext
 from ieee754.fpcommon.postnormalise import FPNorm1Data
index af0097c3e7081af433ce6a894b0693d176120d93..9d92ea392540d5d5d1488859d71fd534098e54d6 100644 (file)
@@ -13,7 +13,7 @@ Relevant bugreports:
 from nmigen import Module, Signal, Cat, Elaboratable, Const, Mux
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
 from ieee754.fpcommon.denorm import FPSCData
 from ieee754.fpcommon.getop import FPPipeContext
index c8f26aa803eafbb93301768ee3d9dbcbd5955772..c1ffdee6583c00b6023263cd3725152816349665 100644 (file)
@@ -12,7 +12,7 @@ Relevant bugreports:
 from nmigen import Module, Signal, Cat
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.div_rem_sqrt_rsqrt.div_pipe import DivPipeOutputData
 
index c26a74a005c985779471b772ad3631065910acfa..a147b068d5c2099145e00d54c1beb3056d0ab50b 100644 (file)
@@ -4,7 +4,7 @@ Relevant bugreport: http://bugs.libre-riscv.org/show_bug.cgi?id=99
 
 """
 
-from ieee754.fpcommon.modbase import FPModBaseChain
+from nmutil.pipemodbase import FPModBaseChain
 from ieee754.div_rem_sqrt_rsqrt.div_pipe import (DivPipeInterstageData,
                                                  DivPipeSetupStage,
                                                  DivPipeCalculateStage,
index 1cedae4cbc7fe3c1e9cebdb4a3e42c7186ae9445..5b63702062cfb6428c5aa0dee9b8b1b3bf50ea45 100644 (file)
@@ -13,7 +13,7 @@ from nmigen import Module, Signal
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase, FPModBaseChain
+from nmutil.pipemodbase import FPModBase, FPModBaseChain
 from ieee754.fpcommon.fpbase import FPNumDecode, FPNumBaseRecord
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.denorm import (FPSCData, FPAddDeNormMod)
index 9284926bb31bbe41abfa1167636fa6ec7fe11970..507e21a45ec0100af8e28e5dcc1276e5505c3245 100644 (file)
@@ -4,7 +4,7 @@ from nmigen import Module, Signal, Cat, Mux
 from nmigen.cli import main, verilog
 from math import log
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBase
 from ieee754.fpcommon.getop import FPPipeContext
 from ieee754.fpcommon.msbhigh import FPMSBHigh
index 0ed25035a48e923d824f4be64d4f7e72b670667e..398a953dd673c4471f33cadb6602bd071c8f8c7c 100644 (file)
@@ -7,7 +7,7 @@ Copyright (C) 2019 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
 from nmigen import Module, Signal, Cat, Elaboratable
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
 from ieee754.fpcommon.denorm import FPSCData
 from ieee754.fpcommon.getop import FPPipeContext
index 98374fa55d3a2cd03a626e4b6be38745b28d46b9..9f896315d2e97e324e0e6e93bd71d4f2515d70e7 100644 (file)
@@ -7,7 +7,7 @@ Copyright (C) 2019 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
 from nmigen import Module, Signal, Elaboratable
 from nmigen.cli import main, verilog
 
-from ieee754.fpcommon.modbase import FPModBase
+from nmutil.pipemodbase import FPModBase
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpmul.mul0 import FPMulStage0Data
 
index fb809cbc1eebfda538bfbd1157a716d0e75a7b3d..78844cf8d62811428fcab8e3e91e9f93d3440653 100644 (file)
@@ -5,7 +5,7 @@ from nmigen.cli import main, verilog
 
 from nmutil.singlepipe import StageChain
 
-from ieee754.fpcommon.modbase import FPModBaseChain
+from nmutil.pipemodbase import FPModBaseChain
 from ieee754.fpcommon.denorm import FPSCData
 from ieee754.fpcommon.postcalc import FPAddStage1Data
 from ieee754.fpmul.mul0 import FPMulStage0Mod
index 52b01fbb9122035ee7b46bc113a1fcfc7207aa83..971744303a19c59f2759badf6e3cc548ba1f56b7 100644 (file)
@@ -6,7 +6,7 @@ from math import log
 
 from ieee754.fpcommon.fpbase import FPNumDecode, FPNumBaseRecord
 
-from ieee754.fpcommon.modbase import FPModBase, FPModBaseChain
+from nmutil.pipemodbase import FPModBase, FPModBaseChain
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.denorm import (FPSCData, FPAddDeNormMod)
 from ieee754.fpmul.align import FPAlignModSingle
diff --git a/src/nmutil/pipemodbase.py b/src/nmutil/pipemodbase.py
new file mode 100644 (file)
index 0000000..1ebe3a1
--- /dev/null
@@ -0,0 +1,54 @@
+from nmigen import Elaboratable
+from ieee754.pipeline import DynamicPipe
+from nmutil.singlepipe import StageChain
+
+
+class FPModBase(Elaboratable):
+    """FPModBase: common code between nearly every pipeline module
+    """
+    def __init__(self, pspec, modname):
+        self.modname = modname # use this to give a name to this module
+        self.pspec = pspec
+        self.i = self.ispec()
+        self.o = self.ospec()
+
+    def process(self, i):
+        return self.o
+
+    def setup(self, m, i):
+        """ links module to inputs and outputs
+        """
+        setattr(m.submodules, self.modname, self)
+        m.d.comb += self.i.eq(i)
+
+
+class FPModBaseChain(DynamicPipe):
+    """FPModBaseChain: common code between stage-chained pipes
+
+    Links a set of combinatorial modules (get_chain) together
+    and uses pspec.pipekls to dynamically select the pipeline type
+    Also conforms to the Pipeline Stage API
+    """
+    def __init__(self, pspec):
+        self.pspec = pspec
+        self.chain = self.get_chain()
+        super().__init__(pspec)
+
+    def ispec(self):
+        """ returns the input spec of the first module in the chain
+        """
+        return self.chain[0].ispec()
+
+    def ospec(self):
+        """ returns the output spec of the last module in the chain
+        """
+        return self.chain[-1].ospec()
+
+    def process(self, i):
+        return self.o # ... returned here (see setup comment below)
+
+    def setup(self, m, i):
+        """ links module to inputs and outputs
+        """
+        StageChain(self.chain).setup(m, i) # input linked here, through chain
+        self.o = self.chain[-1].o # output is the last thing in the chain...