From: Sebastien Bourdeauducq Date: Thu, 13 Jun 2013 07:41:17 +0000 (+0200) Subject: framebuffer: work around dysfunctional Xst retiming X-Git-Tag: 24jan2021_ls180~2901 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=df23431d7782172b6bfcdac3074928c9d59086f3;p=litex.git framebuffer: work around dysfunctional Xst retiming --- diff --git a/milkymist/framebuffer/__init__.py b/milkymist/framebuffer/__init__.py index dff5817a..7911b32a 100644 --- a/milkymist/framebuffer/__init__.py +++ b/milkymist/framebuffer/__init__.py @@ -53,7 +53,8 @@ class Framebuffer(Module): class Blender(PipelinedActor, AutoCSR): def __init__(self, nimages, latency): - self.sink = Sink([("i"+str(i), pixel_layout) for i in range(nimages)]) + sink_layout = [("i"+str(i), pixel_layout) for i in range(nimages)] + self.sink = Sink(sink_layout) self.source = Source(pixel_layout) factors = [] for i in range(nimages): @@ -65,7 +66,10 @@ class Blender(PipelinedActor, AutoCSR): ### - imgs = [getattr(self.sink.payload, "i"+str(i)) for i in range(nimages)] + sink_registered = Record(sink_layout) + self.sync += If(self.pipe_ce, sink_registered.eq(self.sink.payload)) + + imgs = [getattr(sink_registered, "i"+str(i)) for i in range(nimages)] outval = Record(pixel_layout) for e in pixel_layout: name = e[0] @@ -85,7 +89,7 @@ class Blender(PipelinedActor, AutoCSR): ] pipe_stmts = [] - for i in range(latency): + for i in range(latency-1): new_outval = Record(pixel_layout) pipe_stmts.append(new_outval.eq(outval)) outval = new_outval