store tests in temp signals
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 1 Mar 2019 11:20:18 +0000 (11:20 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 1 Mar 2019 11:20:18 +0000 (11:20 +0000)
src/add/nmigen_add_experiment.py

index 7bc8dd8d464b65347e38c6944877045e7963f1c7..d69bdabbf3e9fc17df2ab81f237b5ff191d8dc8a 100644 (file)
@@ -416,13 +416,17 @@ class FPAddStage0Mod:
 
         m.d.comb += self.out_z.e.eq(self.in_a.e)
         # same-sign (both negative or both positive) add mantissas
-        with m.If(self.in_a.s == self.in_b.s):
+        seq = Signal(reset_less=True)
+        mge = Signal(reset_less=True)
+        m.d.comb += seq.eq(self.in_a.s == self.in_b.s)
+        m.d.comb += mge.eq(self.in_a.m >= self.in_b.m)
+        with m.If(seq):
             m.d.comb += [
                 self.out_tot.eq(Cat(self.in_a.m, 0) + Cat(self.in_b.m, 0)),
                 self.out_z.s.eq(self.in_a.s)
             ]
         # a mantissa greater than b, use a
-        with m.Elif(self.in_a.m >= self.in_b.m):
+        with m.Elif(mge):
             m.d.comb += [
                 self.out_tot.eq(Cat(self.in_a.m, 0) - Cat(self.in_b.m, 0)),
                 self.out_z.s.eq(self.in_a.s)