vendor.xilinx_7series: override reset synchronizer.

This commit is contained in:
whitequark 2019-09-23 20:15:29 +00:00
parent 22da78ca28
commit 6d8590a391

View file

@ -371,3 +371,18 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
m.d[ff_sync._o_domain] += o.eq(i)
m.d.comb += ff_sync.o.eq(flops[-1])
return m
def get_reset_sync(self, reset_sync):
m = Module()
m.domains += ClockDomain("reset_sync", async_reset=True, local=True)
flops = [Signal(1, name="stage{}".format(index), reset=1,
attrs={"ASYNC_REG": "TRUE"})
for index in range(reset_sync._stages)]
for i, o in zip((0, *flops), flops):
m.d.reset_sync += o.eq(i)
m.d.comb += [
ClockSignal("reset_sync").eq(ClockSignal(reset_sync._domain)),
ResetSignal("reset_sync").eq(reset_sync.arst),
ResetSignal(reset_sync._domain).eq(flops[-1])
]
return m