vendor.xilinx_{7series,ultrascale}: use BUFGCTRL rather than BUFGCE.
Fixes #438 (again).
This commit is contained in:
parent
07dc163105
commit
c9662c5ff8
10
nmigen/vendor/xilinx_7series.py
vendored
10
nmigen/vendor/xilinx_7series.py
vendored
|
@ -168,10 +168,12 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
|
||||||
ready = Signal()
|
ready = Signal()
|
||||||
m.submodules += Instance("STARTUPE2", o_EOS=ready)
|
m.submodules += Instance("STARTUPE2", o_EOS=ready)
|
||||||
m.domains += ClockDomain("sync", reset_less=self.default_rst is None)
|
m.domains += ClockDomain("sync", reset_less=self.default_rst is None)
|
||||||
m.submodules += Instance("BUFGCE",
|
# Actually use BUFGCTRL configured as BUFGCE, since using BUFGCE causes sim/synth
|
||||||
p_SIM_DEVICE="7SERIES",
|
# mismatches with Vivado 2019.2, and the suggested workaround (SIM_DEVICE parameter)
|
||||||
i_CE=ready,
|
# breaks Vivado 2017.4.
|
||||||
i_I=clk_i,
|
m.submodules += Instance("BUFGCTRL",
|
||||||
|
i_I0=clk_i, i_S0=C(1, 1), i_CE0=ready, i_IGNORE0=C(0, 1),
|
||||||
|
i_I1=C(1, 1), i_S1=C(0, 1), i_CE1=C(0, 1), i_IGNORE1=C(1, 1),
|
||||||
o_O=ClockSignal("sync")
|
o_O=ClockSignal("sync")
|
||||||
)
|
)
|
||||||
if self.default_rst is not None:
|
if self.default_rst is not None:
|
||||||
|
|
10
nmigen/vendor/xilinx_ultrascale.py
vendored
10
nmigen/vendor/xilinx_ultrascale.py
vendored
|
@ -168,10 +168,12 @@ class XilinxUltraScalePlatform(TemplatedPlatform):
|
||||||
ready = Signal()
|
ready = Signal()
|
||||||
m.submodules += Instance("STARTUPE3", o_EOS=ready)
|
m.submodules += Instance("STARTUPE3", o_EOS=ready)
|
||||||
m.domains += ClockDomain("sync", reset_less=self.default_rst is None)
|
m.domains += ClockDomain("sync", reset_less=self.default_rst is None)
|
||||||
m.submodules += Instance("BUFGCE",
|
# Actually use BUFGCTRL configured as BUFGCE, since using BUFGCE causes sim/synth
|
||||||
p_SIM_DEVICE="ULTRASCALE",
|
# mismatches with Vivado 2019.2, and the suggested workaround (SIM_DEVICE parameter)
|
||||||
i_CE=ready,
|
# breaks Vivado 2017.4.
|
||||||
i_I=clk_i,
|
m.submodules += Instance("BUFGCTRL",
|
||||||
|
i_I0=clk_i, i_S0=C(1, 1), i_CE0=ready, i_IGNORE0=C(0, 1),
|
||||||
|
i_I1=C(1, 1), i_S1=C(0, 1), i_CE1=C(0, 1), i_IGNORE1=C(1, 1),
|
||||||
o_O=ClockSignal("sync")
|
o_O=ClockSignal("sync")
|
||||||
)
|
)
|
||||||
if self.default_rst is not None:
|
if self.default_rst is not None:
|
||||||
|
|
Loading…
Reference in a new issue