Skip to content

Commit a0c8b18

Browse files
wanda-phiwhitequark
authored andcommitted
vendor._intel: use dff instead of $dff.
Fixes #1046.
1 parent 3867623 commit a0c8b18

File tree

1 file changed

+26
-21
lines changed

1 file changed

+26
-21
lines changed

amaranth/vendor/_intel.py

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -312,13 +312,15 @@ def get_ineg(i):
312312
return get_ineg(pin.i)
313313
elif pin.xdr == 1:
314314
i_sdr = Signal(pin.width, name="{}_i_sdr")
315-
m.submodules += Instance("$dff",
316-
p_CLK_POLARITY=1,
317-
p_WIDTH=pin.width,
318-
i_CLK=pin.i_clk,
319-
i_D=i_sdr,
320-
o_Q=get_ineg(pin.i),
321-
)
315+
i_neg = get_ineg(pin.i)
316+
for bit in range(pin.width):
317+
m.submodules += Instance("dff",
318+
i_clk=pin.i_clk,
319+
i_d=i_sdr[bit],
320+
o_q=i_neg[bit],
321+
o_clrn=Const(1),
322+
o_prn=Const(1),
323+
)
322324
return i_sdr
323325
elif pin.xdr == 2:
324326
i_ddr = Signal(pin.width, name=f"{pin.name}_i_ddr")
@@ -346,13 +348,15 @@ def get_oneg(o):
346348
return get_oneg(pin.o)
347349
elif pin.xdr == 1:
348350
o_sdr = Signal(pin.width, name=f"{pin.name}_o_sdr")
349-
m.submodules += Instance("$dff",
350-
p_CLK_POLARITY=1,
351-
p_WIDTH=pin.width,
352-
i_CLK=pin.o_clk,
353-
i_D=get_oneg(pin.o),
354-
o_Q=o_sdr,
355-
)
351+
for bit in range(pin.width):
352+
o_neg = get_oneg(pin.o)
353+
m.submodules += Instance("dff",
354+
i_clk=pin.o_clk,
355+
i_d=o_neg[bit],
356+
o_q=o_sdr[bit],
357+
o_clrn=Const(1),
358+
o_prn=Const(1),
359+
)
356360
return o_sdr
357361
elif pin.xdr == 2:
358362
o_ddr = Signal(pin.width, name=f"{pin.name}_o_ddr")
@@ -374,13 +378,14 @@ def _get_oereg(m, pin):
374378
elif pin.xdr in (1, 2):
375379
oe_reg = Signal(pin.width, name=f"{pin.name}_oe_reg")
376380
oe_reg.attrs["useioff"] = "1"
377-
m.submodules += Instance("$dff",
378-
p_CLK_POLARITY=1,
379-
p_WIDTH=pin.width,
380-
i_CLK=pin.o_clk,
381-
i_D=pin.oe,
382-
o_Q=oe_reg,
383-
)
381+
for bit in range(pin.width):
382+
m.submodules += Instance("dff",
383+
i_clk=pin.o_clk,
384+
i_d=pin.oe,
385+
o_q=oe_reg[bit],
386+
o_clrn=Const(1),
387+
o_prn=Const(1),
388+
)
384389
return oe_reg
385390
assert False
386391

0 commit comments

Comments
 (0)