Commit c3708b3a authored by Florent Kermarrec's avatar Florent Kermarrec
Browse files

genlib/cdc/gearbox: add more margin on pointers (for cases where clocks are not perfectly aligned)

parent 8badc8c8
...@@ -224,11 +224,12 @@ class Gearbox(Module): ...@@ -224,11 +224,12 @@ class Gearbox(Module):
] ]
self.clock_domains += cd_write, cd_read self.clock_domains += cd_write, cd_read
storage = Signal(lcm(iwidth, owidth)) # TODO: optimize storage/resets for lowest ressource usage / lowest latency
storage = Signal(2*lcm(iwidth, owidth))
wrchunks = len(storage)//iwidth wrchunks = len(storage)//iwidth
rdchunks = len(storage)//owidth rdchunks = len(storage)//owidth
wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks-1) wrpointer = Signal(max=wrchunks, reset=0 if iwidth > owidth else wrchunks//2)
rdpointer = Signal(max=rdchunks, reset=rdchunks-1 if iwidth > owidth else 0) rdpointer = Signal(max=rdchunks, reset=rdchunks//2 if iwidth > owidth else 0)
self.sync.write += \ self.sync.write += \
If(wrpointer == wrchunks-1, If(wrpointer == wrchunks-1,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment