efinix: ifacewriter: gpio: share common code

share common code for INPUT, INOUT and OUTPUT.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
This commit is contained in:
Fin Maaß 2024-10-23 11:08:58 +02:00
parent bc3e90c93a
commit d6eec8e76d
No known key found for this signature in database
1 changed files with 4 additions and 34 deletions

View File

@ -169,38 +169,9 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
for i, pad in enumerate(block["location"]): for i, pad in enumerate(block["location"]):
cmd += f'design.assign_pkg_pin("{name}[{i}]","{pad}")\n' cmd += f'design.assign_pkg_pin("{name}[{i}]","{pad}")\n'
if "out_reg" in block:
cmd += f'design.set_property("{name}","OUT_REG","{block["out_reg"]}")\n'
cmd += f'design.set_property("{name}","OUT_CLK_PIN","{block["out_clk_pin"]}")\n'
if "out_delay" in block:
cmd += f'design.set_property("{name}","OUTDELAY","{block["out_delay"]}")\n'
if "out_clk_inv" in block:
cmd += f'design.set_property("{name}","IS_OUTCLK_INVERTED","{block["out_clk_inv"]}")\n'
if "in_reg" in block:
cmd += f'design.set_property("{name}","IN_REG","{block["in_reg"]}")\n'
cmd += f'design.set_property("{name}","IN_CLK_PIN","{block["in_clk_pin"]}")\n'
if "in_delay" in block:
cmd += f'design.set_property("{name}","INDELAY","{block["in_delay"]}")\n'
if "in_clk_inv" in block:
cmd += f'design.set_property("{name}","IS_INCLK_INVERTED","{block["in_clk_inv"]}")\n'
if "oe_reg" in block: if "oe_reg" in block:
cmd += f'design.set_property("{name}","OE_REG","{block["oe_reg"]}")\n' cmd += f'design.set_property("{name}","OE_REG","{block["oe_reg"]}")\n'
if "drive_strength" in block:
cmd += 'design.set_property("{}","DRIVE_STRENGTH","{}")\n'.format(name, block["drive_strength"])
if "slewrate" in block:
cmd += 'design.set_property("{}","SLEWRATE","{}")\n'.format(name, block["slewrate"])
if prop:
for p, val in prop:
cmd += 'design.set_property("{}","{}","{}")\n'.format(name, p, val)
cmd += "\n"
return cmd
if mode == "INPUT": if mode == "INPUT":
if len(block["location"]) == 1: if len(block["location"]) == 1:
cmd += f'design.create_input_gpio("{name}")\n' cmd += f'design.create_input_gpio("{name}")\n'
@ -209,6 +180,8 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
cmd += f'design.create_input_gpio("{name}",{block["size"]-1},0)\n' cmd += f'design.create_input_gpio("{name}",{block["size"]-1},0)\n'
for i, pad in enumerate(block["location"]): for i, pad in enumerate(block["location"]):
cmd += f'design.assign_pkg_pin("{name}[{i}]","{pad}")\n' cmd += f'design.assign_pkg_pin("{name}[{i}]","{pad}")\n'
if mode == "INPUT" or mode == "INOUT":
if "in_reg" in block: if "in_reg" in block:
in_clk_pin = block["in_clk_pin"] in_clk_pin = block["in_clk_pin"]
if isinstance(in_clk_pin, ClockSignal): if isinstance(in_clk_pin, ClockSignal):
@ -225,11 +198,6 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
cmd += f'design.set_property("{name}","INDELAY","{block["in_delay"]}")\n' cmd += f'design.set_property("{name}","INDELAY","{block["in_delay"]}")\n'
if "in_clk_inv" in block: if "in_clk_inv" in block:
cmd += f'design.set_property("{name}","IS_INCLK_INVERTED","{block["in_clk_inv"]}")\n' cmd += f'design.set_property("{name}","IS_INCLK_INVERTED","{block["in_clk_inv"]}")\n'
if prop:
for p, val in prop:
cmd += 'design.set_property("{}","{}","{}")\n'.format(name, p, val)
cmd += "\n"
return cmd
if mode == "OUTPUT": if mode == "OUTPUT":
if len(block["location"]) == 1: if len(block["location"]) == 1:
@ -240,6 +208,7 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
for i, pad in enumerate(block["location"]): for i, pad in enumerate(block["location"]):
cmd += 'design.assign_pkg_pin("{}[{}]","{}")\n'.format(name, i, pad) cmd += 'design.assign_pkg_pin("{}[{}]","{}")\n'.format(name, i, pad)
if mode == "OUTPUT" or mode == "INOUT":
if "out_reg" in block: if "out_reg" in block:
cmd += 'design.set_property("{}","OUT_REG","{}")\n'.format(name, block["out_reg"]) cmd += 'design.set_property("{}","OUT_REG","{}")\n'.format(name, block["out_reg"])
cmd += 'design.set_property("{}","OUT_CLK_PIN","{}")\n'.format(name, block["out_clk_pin"]) cmd += 'design.set_property("{}","OUT_CLK_PIN","{}")\n'.format(name, block["out_clk_pin"])
@ -254,6 +223,7 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
if "slewrate" in block: if "slewrate" in block:
cmd += 'design.set_property("{}","SLEWRATE","{}")\n'.format(name, block["slewrate"]) cmd += 'design.set_property("{}","SLEWRATE","{}")\n'.format(name, block["slewrate"])
if mode == "INOUT" or mode == "INPUT" or mode == "OUTPUT":
if prop: if prop:
for p, val in prop: for p, val in prop:
cmd += 'design.set_property("{}","{}","{}")\n'.format(name, p, val) cmd += 'design.set_property("{}","{}","{}")\n'.format(name, p, val)