get roundz working again, needed for mul stage
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 14 Mar 2019 04:17:28 +0000 (04:17 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 14 Mar 2019 04:17:28 +0000 (04:17 +0000)
src/add/fmul.py
src/add/fpbase.py

index 20ada3ef18ca79da09fbbe15879e7b11849889a7..8e3ea7d5ff4a1c86eb4ed156a13b839c91d42cbe 100644 (file)
@@ -127,7 +127,8 @@ class FPMUL(FPBase):
             # rounding stage
 
             with m.State("round"):
-                self.roundz(m, z, of, "corrections")
+                self.roundz(m, z, z, of.roundz)
+                m.next = "corrections"
 
             # ******
             # correction stage
index aaf263e89dd95e5c3c1ff182fb21352a58825995..bd20364992273638287b6aa9ad16e09eb79d4951 100644 (file)
@@ -561,11 +561,11 @@ class FPBase:
     def roundz(self, m, z, out_z, roundz):
         """ performs rounding on the output.  TODO: different kinds of rounding
         """
-        m.d.comb += out_z.copy(z) # copies input to output first
+        #m.d.comb += out_z.copy(z) # copies input to output first
         with m.If(roundz):
-            m.d.comb += out_z.m.eq(z.m + 1) # mantissa rounds up
+            m.d.sync += out_z.m.eq(z.m + 1) # mantissa rounds up
             with m.If(z.m == z.m1s): # all 1s
-                m.d.comb += out_z.e.eq(z.e + 1) # exponent rounds up
+                m.d.sync += out_z.e.eq(z.e + 1) # exponent rounds up
 
     def corrections(self, m, z, next_state):
         """ denormalisation and sign-bug corrections