add and use is_overflowed function
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 14 Feb 2019 14:26:11 +0000 (14:26 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 14 Feb 2019 14:26:11 +0000 (14:26 +0000)
src/add/nmigen_add_experiment.py

index 09f2725a545d2518dbf9cbf9bfab0840a2b024fd..24e87428e559177cdb1727d8fa7a5ed44d013daf 100644 (file)
@@ -77,6 +77,9 @@ class FPNum:
     def is_zero(self):
         return (self.e == -127) & (self.m == 0)
 
+    def is_overflowed(self):
+        return (self.e < 127)
+
 
 class FPADD:
     def __init__(self, width):
@@ -321,14 +324,8 @@ class FPADD:
                 ]
                 with m.If((z.e == -126) & (z.m[23] == 0)):
                     m.d.sync += z.v[23:31].eq(0)
-                with m.If((z.e == -126) & (z.m[0:23] == 0)):
-                    m.d.sync += z.v[23:31].eq(0)
-                with m.If(z.e > 127):
-                    m.d.sync += [
-                        z.v[0:22].eq(0),
-                        z.v[23:31].eq(255),
-                        z.v[31].eq(z.s),
-                    ]
+                with m.If(z.is_overflowed()):
+                    m.d.sync += z.inf(0)
 
             # ******
             # put_z stage