X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fadd%2Fnmigen_add_experiment.py;h=5d5a9933250434778592112bfa7bed17c5ed96f1;hb=071c800afa93ea2d7413f021e7d699b2a66cfe61;hp=e3e904bc05c61156775973b33c677fed9ae14313;hpb=c6732d76626830e205207e71b1f292d6bee754be;p=ieee754fpu.git diff --git a/src/add/nmigen_add_experiment.py b/src/add/nmigen_add_experiment.py index e3e904bc..5d5a9933 100644 --- a/src/add/nmigen_add_experiment.py +++ b/src/add/nmigen_add_experiment.py @@ -711,9 +711,7 @@ class FPAddAlignSingleAdd(FPState, FPID): self.o = self.mod.ospec() self.a0mod = FPAddStage0Mod(width) - self.a0_out_z = FPNumBase(width, False) - self.out_tot = Signal(self.a0_out_z.m_width + 4, reset_less=True) - self.a0_out_z = FPNumBase(width, False) + self.a0o = self.a0mod.ospec() self.a1mod = FPAddStage1Mod(width) self.a1o = self.a1mod.ospec() @@ -725,10 +723,9 @@ class FPAddAlignSingleAdd(FPState, FPID): m.d.comb += self.o.eq(self.mod.o) self.a0mod.setup(m, self.o.a, self.o.b) - m.d.comb += self.a0_out_z.eq(self.a0mod.o.z) - m.d.comb += self.out_tot.eq(self.a0mod.o.tot) + m.d.comb += self.a0o.eq(self.a0mod.o) - self.a1mod.setup(m, self.out_tot, self.a0_out_z) + self.a1mod.setup(m, self.a0o.tot, self.a0o.z) if self.in_mid is not None: m.d.comb += self.in_mid.eq(in_mid) @@ -931,8 +928,14 @@ class FPNormaliseModSingle: def __init__(self, width): self.width = width - self.in_z = FPNumBase(width, False) - self.out_z = FPNumBase(width, False) + self.in_z = self.ispec() + self.out_z = self.ospec() + + def ispec(self): + return FPNumBase(self.width, False) + + def ospec(self): + return FPNumBase(self.width, False) def setup(self, m, in_z, out_z, modname): """ links module to inputs and outputs @@ -966,7 +969,7 @@ class FPNormaliseModSingle: # initialise out from in (overridden below) m.d.comb += self.out_z.eq(in_z) m.d.comb += self.out_of.eq(in_of) - # normalisation increase/decrease conditions + # normalisation decrease condition decrease = Signal(reset_less=True) m.d.comb += decrease.eq(in_z.m_msbzero) # decrease exponent