solve sync/comb issue with using state-machine or pipeline in FPNormToPack
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 28 Mar 2019 15:51:47 +0000 (15:51 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 28 Mar 2019 15:51:47 +0000 (15:51 +0000)
src/add/nmigen_add_experiment.py

index 16163e071a290071b6aeba2e998447640ebe2e6f..7646cc4ea7feda225a3803d41b5998b5aa82e0b1 100644 (file)
@@ -1249,14 +1249,13 @@ class FPNormToPack(FPState, UnbufferedPipeline):
         chain.setup(m, i)
         self.out_z = pmod.ospec()
 
-        # XXX TODO: sync for state-based
-        m.d.comb += self.out_z.mid.eq(pmod.o.mid)
-        m.d.comb += self.out_z.z.eq(pmod.o.z) # outputs packed result
+        self.o = pmod.o
 
     def process(self, i):
-        return self.out_z
+        return self.o
 
     def action(self, m):
+        m.d.sync += self.out_z.eq(self.process(None))
         m.next = "pack_put_z"