X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fadd%2Fnmigen_add_experiment.py;h=71db07a44a3dccf722c2535992555963ca156f28;hb=19b4593a2fdd2b74c0d68828ca3666469518b9b0;hp=7b3f6c09e08603c56a1b154c4b4be1148407e294;hpb=2d33a15d294be2f36a02d8b0729b30fc1c79904d;p=ieee754fpu.git diff --git a/src/add/nmigen_add_experiment.py b/src/add/nmigen_add_experiment.py index 7b3f6c09..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 @@ -1338,8 +1338,15 @@ class FPRound(FPState, FPID): class FPCorrectionsMod: 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 @@ -1363,7 +1370,7 @@ class FPCorrections(FPState, FPID): FPState.__init__(self, "corrections") FPID.__init__(self, id_wid) self.mod = FPCorrectionsMod(width) - self.out_z = FPNumBase(width) + self.out_z = self.mod.ospec() def setup(self, m, in_z, in_mid): """ links module to inputs and outputs @@ -1381,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 @@ -1406,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