vendor.xilinx_{7series,spartan3_6}: specialize MultiReg.
Vivado/ISE would otherwise infer an SRL16 from a MultiReg in some cases.
This commit is contained in:
parent
f2550021c3
commit
af7224de5d
8
nmigen/vendor/xilinx_7series.py
vendored
8
nmigen/vendor/xilinx_7series.py
vendored
|
@ -360,3 +360,11 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
|
|||
io_IO=p_port[bit], io_IOB=n_port[bit]
|
||||
)
|
||||
return m
|
||||
|
||||
def get_multi_reg(self, multireg):
|
||||
m = Module()
|
||||
for i, o in zip((multireg.i, *multireg._regs), multireg._regs):
|
||||
o.attrs["ASYNC_REG"] = "TRUE"
|
||||
m.d[multireg._o_domain] += o.eq(i)
|
||||
m.d.comb += multireg.o.eq(multireg._regs[-1])
|
||||
return m
|
||||
|
|
8
nmigen/vendor/xilinx_spartan_3_6.py
vendored
8
nmigen/vendor/xilinx_spartan_3_6.py
vendored
|
@ -411,6 +411,14 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
|
|||
)
|
||||
return m
|
||||
|
||||
def get_multi_reg(self, multireg):
|
||||
m = Module()
|
||||
for i, o in zip((multireg.i, *multireg._regs), multireg._regs):
|
||||
o.attrs["ASYNC_REG"] = "TRUE"
|
||||
m.d[multireg._o_domain] += o.eq(i)
|
||||
m.d.comb += multireg.o.eq(multireg._regs[-1])
|
||||
return m
|
||||
|
||||
|
||||
XilinxSpartan3APlatform = XilinxSpartan3Or6Platform
|
||||
XilinxSpartan6Platform = XilinxSpartan3Or6Platform
|
||||
|
|
Loading…
Reference in a new issue