# Copyright (C) Jonathan P Dawson 2013
# 2013-12-12
-from nmigen import Module, Signal, Cat, Mux, Array, Const
-from nmigen.lib.coding import PriorityEncoder
-from nmigen.cli import main, verilog
-from math import log
-
-from fpbase import FPNumIn, FPNumOut, FPOp, Overflow, FPBase, FPNumBase
-from fpbase import MultiShiftRMerge, Trigger
-from singlepipe import (ControlBase, StageChain, UnbufferedPipeline,
- PassThroughStage)
-from multipipe import CombMuxOutPipe
-from multipipe import PriorityCombMuxInPipe
+#from nmigen.cli import main, verilog
+
+from singlepipe import StageChain, SimpleHandshake
from fpbase import FPState, FPID
from fpcommon.postcalc import FPAddStage1Data
from fpcommon.pack import FPPackData, FPPackMod
-class FPNormToPack(FPState, UnbufferedPipeline):
+class FPNormToPack(FPState, SimpleHandshake):
def __init__(self, width, id_wid):
FPState.__init__(self, "normalise_1")
self.id_wid = id_wid
self.width = width
- UnbufferedPipeline.__init__(self, self) # pipeline is its own stage
+ SimpleHandshake.__init__(self, self) # pipeline is its own stage
def ispec(self):
return FPAddStage1Data(self.width, self.id_wid) # Norm1ModSingle ispec
rmod = FPRoundMod(self.width, self.id_wid)
cmod = FPCorrectionsMod(self.width, self.id_wid)
pmod = FPPackMod(self.width, self.id_wid)
- chain = StageChain([nmod, rmod, cmod, pmod])
+ stages = [nmod, rmod, cmod, pmod]
+ chain = StageChain(stages)
chain.setup(m, i)
self.out_z = pmod.ospec()