X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fadd%2Fnmigen_add_experiment.py;h=71db07a44a3dccf722c2535992555963ca156f28;hb=19b4593a2fdd2b74c0d68828ca3666469518b9b0;hp=45687a08f198036bf8f0daf18e4f0fc58405d610;hpb=a004dbdfcd19e812e2ee28904071682e9c30a4dc;p=ieee754fpu.git diff --git a/src/add/nmigen_add_experiment.py b/src/add/nmigen_add_experiment.py index 45687a08..71db07a4 100644 --- a/src/add/nmigen_add_experiment.py +++ b/src/add/nmigen_add_experiment.py @@ -937,7 +937,7 @@ class FPNormaliseModSingle: def ospec(self): return FPNumBase(self.width, False) - def setup(self, m, in_z, out_z, modname): + def setup(self, m, in_z, out_z): """ links module to inputs and outputs """ m.submodules.normalise = self @@ -1258,20 +1258,20 @@ class FPNormToPack(FPState, FPID): # Rounding (chained to normalisation) rmod = FPRoundMod(self.width) - r_out_z = FPNumBase(self.width) + r_out_z = rmod.ospec() rmod.setup(m, n_out_z, n_out_roundz) m.d.comb += n_out_roundz.eq(nmod.o.of.roundz) m.d.comb += r_out_z.eq(rmod.out_z) # Corrections (chained to rounding) cmod = FPCorrectionsMod(self.width) - c_out_z = FPNumBase(self.width) + c_out_z = cmod.ospec() cmod.setup(m, r_out_z) m.d.comb += c_out_z.eq(cmod.out_z) # Pack (chained to corrections) self.pmod = FPPackMod(self.width) - self.out_z = FPNumBase(self.width) + self.out_z = self.pmod.ospec() self.pmod.setup(m, c_out_z) # Multiplex ID @@ -1388,8 +1388,15 @@ class FPCorrections(FPState, FPID): class FPPackMod: def __init__(self, width): - self.in_z = FPNumOut(width, False) - self.out_z = FPNumOut(width, False) + self.width = width + self.in_z = self.ispec() + self.out_z = self.ospec() + + def ispec(self): + return FPNumOut(self.width, False) + + def ospec(self): + return FPNumOut(self.width, False) def setup(self, m, in_z): """ links module to inputs and outputs @@ -1413,7 +1420,7 @@ class FPPack(FPState, FPID): FPState.__init__(self, "pack") FPID.__init__(self, id_wid) self.mod = FPPackMod(width) - self.out_z = FPNumOut(width, False) + self.out_z = self.mod.ospec() def setup(self, m, in_z, in_mid): """ links module to inputs and outputs