1 # IEEE Floating Point Multiplier
3 from nmigen
import Module
4 from nmigen
.cli
import main
, verilog
6 from nmutil
.singlepipe
import StageChain
8 from ieee754
.pipeline
import DynamicPipe
9 from ieee754
.fpcommon
.denorm
import FPSCData
10 from ieee754
.fpcommon
.postcalc
import FPAddStage1Data
11 from ieee754
.fpmul
.mul0
import FPMulStage0Mod
12 from ieee754
.fpmul
.mul1
import FPMulStage1Mod
15 class FPMulStages(DynamicPipe
):
17 def __init__(self
, pspec
):
19 super().__init
__(pspec
)
20 self
.m1o
= self
.ospec()
23 return FPSCData(self
.pspec
, False)
26 return FPAddStage1Data(self
.pspec
)
28 def setup(self
, m
, i
):
29 """ links module to inputs and outputs
32 # chain MulStage0 and MulStage1
33 m0mod
= FPMulStage0Mod(self
.pspec
)
34 m1mod
= FPMulStage1Mod(self
.pspec
)
36 chain
= StageChain([m0mod
, m1mod
])