move putz to separate class
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 21 Feb 2019 10:13:14 +0000 (10:13 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 21 Feb 2019 10:13:14 +0000 (10:13 +0000)
src/add/nmigen_add_experiment.py

index 1ff99af1ea937062adaccde77eff549401edd0a5..48eeba2a3e98915cc06847f5c528c6a517641c2d 100644 (file)
@@ -251,6 +251,12 @@ class FPPack(FPState):
         self.pack(m, self.z, "put_z")
 
 
+class FPPutZ(FPState):
+
+    def action(self, m):
+        self.put_z(m, self.z, self.out_z, "get_a")
+
+
 class FPADD(FPBase):
 
     def __init__(self, width, single_cycle=False):
@@ -335,6 +341,10 @@ class FPADD(FPBase):
         pa.set_inputs({"z": z})  # XXX Z as output
         pa.set_outputs({"z": z})  # XXX Z as output
 
+        pz = FPPutZ("put_z")
+        pz.set_inputs({"z": z})
+        pz.set_outputs({"out_z": self.out_z})
+
         with m.FSM() as fsm:
 
             # ******
@@ -419,7 +429,7 @@ class FPADD(FPBase):
             # put_z stage
 
             with m.State("put_z"):
-                self.put_z(m, z, self.out_z, "get_a")
+                pz.action(m)
 
         return m