vendor.xilinx_*: Set IOB attribute on cels instead of nets.
This commit is contained in:
parent
7c322e562a
commit
f207f3f620
9
nmigen/vendor/xilinx_7series.py
vendored
9
nmigen/vendor/xilinx_7series.py
vendored
|
@ -175,19 +175,14 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
|
|||
def get_dff(clk, d, q):
|
||||
# SDR I/O is performed by packing a flip-flop into the pad IOB.
|
||||
for bit in range(len(q)):
|
||||
_q = Signal()
|
||||
_q.attrs["IOB"] = "TRUE"
|
||||
# Vivado 2019.1 seems to make this flip-flop ineligible for IOB packing unless
|
||||
# we prevent it from being optimized.
|
||||
_q.attrs["DONT_TOUCH"] = "TRUE"
|
||||
m.submodules += Instance("FDCE",
|
||||
a_IOB="TRUE",
|
||||
i_C=clk,
|
||||
i_CE=Const(1),
|
||||
i_CLR=Const(0),
|
||||
i_D=d[bit],
|
||||
o_Q=_q
|
||||
o_Q=q[bit]
|
||||
)
|
||||
m.d.comb += q[bit].eq(_q)
|
||||
|
||||
def get_iddr(clk, d, q1, q2):
|
||||
for bit in range(len(q1)):
|
||||
|
|
6
nmigen/vendor/xilinx_spartan_3_6.py
vendored
6
nmigen/vendor/xilinx_spartan_3_6.py
vendored
|
@ -212,16 +212,14 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
|
|||
def get_dff(clk, d, q):
|
||||
# SDR I/O is performed by packing a flip-flop into the pad IOB.
|
||||
for bit in range(len(q)):
|
||||
_q = Signal()
|
||||
_q.attrs["IOB"] = "TRUE"
|
||||
m.submodules += Instance("FDCE",
|
||||
a_IOB="TRUE",
|
||||
i_C=clk,
|
||||
i_CE=Const(1),
|
||||
i_CLR=Const(0),
|
||||
i_D=d[bit],
|
||||
o_Q=_q,
|
||||
o_Q=q[bit]
|
||||
)
|
||||
m.d.comb += q[bit].eq(_q)
|
||||
|
||||
def get_iddr(clk, d, q0, q1):
|
||||
for bit in range(len(q0)):
|
||||
|
|
9
nmigen/vendor/xilinx_ultrascale.py
vendored
9
nmigen/vendor/xilinx_ultrascale.py
vendored
|
@ -175,19 +175,14 @@ class XilinxUltraScalePlatform(TemplatedPlatform):
|
|||
def get_dff(clk, d, q):
|
||||
# SDR I/O is performed by packing a flip-flop into the pad IOB.
|
||||
for bit in range(len(q)):
|
||||
_q = Signal()
|
||||
_q.attrs["IOB"] = "TRUE"
|
||||
# Vivado 2019.1 seems to make this flip-flop ineligible for IOB packing unless
|
||||
# we prevent it from being optimized.
|
||||
_q.attrs["DONT_TOUCH"] = "TRUE"
|
||||
m.submodules += Instance("FDCE",
|
||||
a_IOB="TRUE",
|
||||
i_C=clk,
|
||||
i_CE=Const(1),
|
||||
i_CLR=Const(0),
|
||||
i_D=d[bit],
|
||||
o_Q=_q
|
||||
o_Q=q[bit]
|
||||
)
|
||||
m.d.comb += q[bit].eq(_q)
|
||||
|
||||
def get_iddr(clk, d, q1, q2):
|
||||
for bit in range(len(q1)):
|
||||
|
|
Loading…
Reference in a new issue