build.plat: TemplatedPlatform.iter_extra_files→Platform.iter_files.
This function was added in commit 20553b14
in the wrong place, with
the wrong name, and without tests. Fix all that.
This commit is contained in:
parent
ea94c9cc45
commit
d6da4c257b
|
@ -63,6 +63,11 @@ class Platform(ResourceManager, metaclass=ABCMeta):
|
||||||
else:
|
else:
|
||||||
self.extra_files[filename] = content
|
self.extra_files[filename] = content
|
||||||
|
|
||||||
|
def iter_files(self, *suffixes):
|
||||||
|
for filename in self.extra_files:
|
||||||
|
if filename.endswith(suffixes):
|
||||||
|
yield filename
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _toolchain_env_var(self):
|
def _toolchain_env_var(self):
|
||||||
return f"NMIGEN_ENV_{self.toolchain}"
|
return f"NMIGEN_ENV_{self.toolchain}"
|
||||||
|
@ -437,6 +442,3 @@ class TemplatedPlatform(Platform):
|
||||||
for filename, content in self.extra_files.items():
|
for filename, content in self.extra_files.items():
|
||||||
plan.add_file(filename, content)
|
plan.add_file(filename, content)
|
||||||
return plan
|
return plan
|
||||||
|
|
||||||
def iter_extra_files(self, *endswith):
|
|
||||||
return (f for f in self.extra_files if f.endswith(endswith))
|
|
||||||
|
|
|
@ -82,13 +82,13 @@ class IntelPlatform(TemplatedPlatform):
|
||||||
set_global_assignment -name NUM_PARALLEL_PROCESSORS {{get_override("nproc")}}
|
set_global_assignment -name NUM_PARALLEL_PROCESSORS {{get_override("nproc")}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for file in platform.iter_extra_files(".v") -%}
|
{% for file in platform.iter_files(".v") -%}
|
||||||
set_global_assignment -name VERILOG_FILE {{file|tcl_quote}}
|
set_global_assignment -name VERILOG_FILE {{file|tcl_quote}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".sv") -%}
|
{% for file in platform.iter_files(".sv") -%}
|
||||||
set_global_assignment -name SYSTEMVERILOG_FILE {{file|tcl_quote}}
|
set_global_assignment -name SYSTEMVERILOG_FILE {{file|tcl_quote}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".vhd", ".vhdl") -%}
|
||||||
set_global_assignment -name VHDL_FILE {{file|tcl_quote}}
|
set_global_assignment -name VHDL_FILE {{file|tcl_quote}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
set_global_assignment -name VERILOG_FILE {{name}}.v
|
set_global_assignment -name VERILOG_FILE {{name}}.v
|
||||||
|
|
|
@ -112,13 +112,13 @@ class LatticeECP5Platform(TemplatedPlatform):
|
||||||
""",
|
""",
|
||||||
"{{name}}.ys": r"""
|
"{{name}}.ys": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
{% for file in platform.iter_extra_files(".v") -%}
|
{% for file in platform.iter_files(".v") -%}
|
||||||
read_verilog {{get_override("read_verilog_opts")|options}} {{file}}
|
read_verilog {{get_override("read_verilog_opts")|options}} {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".sv") -%}
|
{% for file in platform.iter_files(".sv") -%}
|
||||||
read_verilog -sv {{get_override("read_verilog_opts")|options}} {{file}}
|
read_verilog -sv {{get_override("read_verilog_opts")|options}} {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".il") -%}
|
{% for file in platform.iter_files(".il") -%}
|
||||||
read_ilang {{file}}
|
read_ilang {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
read_ilang {{name}}.il
|
read_ilang {{name}}.il
|
||||||
|
@ -210,7 +210,7 @@ class LatticeECP5Platform(TemplatedPlatform):
|
||||||
-dev {{platform.device}}-{{platform.speed}}{{platform.package}}{{platform.grade}} \
|
-dev {{platform.device}}-{{platform.speed}}{{platform.package}}{{platform.grade}} \
|
||||||
-lpf {{name}}.lpf \
|
-lpf {{name}}.lpf \
|
||||||
-synthesis synplify
|
-synthesis synplify
|
||||||
{% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
||||||
prj_src add {{file|tcl_escape}}
|
prj_src add {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
prj_src add {{name}}.v
|
prj_src add {{name}}.v
|
||||||
|
|
|
@ -114,13 +114,13 @@ class LatticeICE40Platform(TemplatedPlatform):
|
||||||
""",
|
""",
|
||||||
"{{name}}.ys": r"""
|
"{{name}}.ys": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
{% for file in platform.iter_extra_files(".v") -%}
|
{% for file in platform.iter_files(".v") -%}
|
||||||
read_verilog {{get_override("read_verilog_opts")|options}} {{file}}
|
read_verilog {{get_override("read_verilog_opts")|options}} {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".sv") -%}
|
{% for file in platform.iter_files(".sv") -%}
|
||||||
read_verilog -sv {{get_override("read_verilog_opts")|options}} {{file}}
|
read_verilog -sv {{get_override("read_verilog_opts")|options}} {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".il") -%}
|
{% for file in platform.iter_files(".il") -%}
|
||||||
read_ilang {{file}}
|
read_ilang {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
read_ilang {{name}}.il
|
read_ilang {{name}}.il
|
||||||
|
@ -212,7 +212,7 @@ class LatticeICE40Platform(TemplatedPlatform):
|
||||||
-d {{platform.device}}
|
-d {{platform.device}}
|
||||||
-t {{platform.package}}
|
-t {{platform.package}}
|
||||||
{{get_override("lse_opts")|options|default("# (lse_opts placeholder)")}}
|
{{get_override("lse_opts")|options|default("# (lse_opts placeholder)")}}
|
||||||
{% for file in platform.iter_extra_files(".v") -%}
|
{% for file in platform.iter_files(".v") -%}
|
||||||
-ver {{file}}
|
-ver {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
-ver {{name}}.v
|
-ver {{name}}.v
|
||||||
|
@ -223,7 +223,7 @@ class LatticeICE40Platform(TemplatedPlatform):
|
||||||
""",
|
""",
|
||||||
"{{name}}_syn.prj": r"""
|
"{{name}}_syn.prj": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
{% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
||||||
add_file -verilog {{file|tcl_escape}}
|
add_file -verilog {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
add_file -verilog {{name}}.v
|
add_file -verilog {{name}}.v
|
||||||
|
|
|
@ -74,7 +74,7 @@ class LatticeMachXO2Or3LPlatform(TemplatedPlatform):
|
||||||
-dev {{platform.device}}-{{platform.speed}}{{platform.package}}{{platform.grade}} \
|
-dev {{platform.device}}-{{platform.speed}}{{platform.package}}{{platform.grade}} \
|
||||||
-lpf {{name}}.lpf \
|
-lpf {{name}}.lpf \
|
||||||
-synthesis synplify
|
-synthesis synplify
|
||||||
{% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
||||||
prj_src add {{file|tcl_escape}}
|
prj_src add {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
prj_src add {{name}}.v
|
prj_src add {{name}}.v
|
||||||
|
|
|
@ -82,7 +82,7 @@ class QuicklogicPlatform(TemplatedPlatform):
|
||||||
r"""
|
r"""
|
||||||
{{invoke_tool("symbiflow_synth")}}
|
{{invoke_tool("symbiflow_synth")}}
|
||||||
-t {{name}}
|
-t {{name}}
|
||||||
-v {% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%} {{file}} {% endfor %} {{name}}.v
|
-v {% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%} {{file}} {% endfor %} {{name}}.v
|
||||||
-d {{platform.device}}
|
-d {{platform.device}}
|
||||||
-p {{name}}.pcf
|
-p {{name}}.pcf
|
||||||
-P {{platform.package}}
|
-P {{platform.package}}
|
||||||
|
|
|
@ -99,12 +99,12 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
|
||||||
"{{name}}.tcl": r"""
|
"{{name}}.tcl": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
create_project -force -name {{name}} -part {{platform._part}}
|
create_project -force -name {{name}} -part {{platform._part}}
|
||||||
{% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
||||||
add_files {{file|tcl_escape}}
|
add_files {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
add_files {{name}}.v
|
add_files {{name}}.v
|
||||||
read_xdc {{name}}.xdc
|
read_xdc {{name}}.xdc
|
||||||
{% for file in platform.iter_extra_files(".xdc") -%}
|
{% for file in platform.iter_files(".xdc") -%}
|
||||||
read_xdc {{file|tcl_escape}}
|
read_xdc {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{{get_override("script_after_read")|default("# (script_after_read placeholder)")}}
|
{{get_override("script_after_read")|default("# (script_after_read placeholder)")}}
|
||||||
|
@ -229,7 +229,7 @@ class Xilinx7SeriesPlatform(TemplatedPlatform):
|
||||||
r"""
|
r"""
|
||||||
{{invoke_tool("synth")}}
|
{{invoke_tool("synth")}}
|
||||||
-t {{name}}
|
-t {{name}}
|
||||||
-v {% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%} {{file}} {% endfor %} {{name}}.v
|
-v {% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%} {{file}} {% endfor %} {{name}}.v
|
||||||
-p {{platform._symbiflow_part_map.get(platform._part, platform._part)}}
|
-p {{platform._symbiflow_part_map.get(platform._part, platform._part)}}
|
||||||
-x {{name}}.xdc
|
-x {{name}}.xdc
|
||||||
""",
|
""",
|
||||||
|
|
|
@ -102,10 +102,10 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
|
||||||
""",
|
""",
|
||||||
"{{name}}.prj": r"""
|
"{{name}}.prj": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
{% for file in platform.iter_extra_files(".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".vhd", ".vhdl") -%}
|
||||||
vhdl work {{file}}
|
vhdl work {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for file in platform.iter_extra_files(".v") -%}
|
{% for file in platform.iter_files(".v") -%}
|
||||||
verilog work {{file}}
|
verilog work {{file}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
verilog work {{name}}.v
|
verilog work {{name}}.v
|
||||||
|
|
|
@ -73,12 +73,12 @@ class XilinxUltraScalePlatform(TemplatedPlatform):
|
||||||
"{{name}}.tcl": r"""
|
"{{name}}.tcl": r"""
|
||||||
# {{autogenerated}}
|
# {{autogenerated}}
|
||||||
create_project -force -name {{name}} -part {{platform.device}}-{{platform.package}}-{{platform.speed}}
|
create_project -force -name {{name}} -part {{platform.device}}-{{platform.package}}-{{platform.speed}}
|
||||||
{% for file in platform.iter_extra_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
{% for file in platform.iter_files(".v", ".sv", ".vhd", ".vhdl") -%}
|
||||||
add_files {{file|tcl_escape}}
|
add_files {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
add_files {{name}}.v
|
add_files {{name}}.v
|
||||||
read_xdc {{name}}.xdc
|
read_xdc {{name}}.xdc
|
||||||
{% for file in platform.iter_extra_files(".xdc") -%}
|
{% for file in platform.iter_files(".xdc") -%}
|
||||||
read_xdc {{file|tcl_escape}}
|
read_xdc {{file|tcl_escape}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{{get_override("script_after_read")|default("# (script_after_read placeholder)")}}
|
{{get_override("script_after_read")|default("# (script_after_read placeholder)")}}
|
||||||
|
|
|
@ -51,3 +51,14 @@ class PlatformTestCase(FHDLTestCase):
|
||||||
with self.assertRaisesRegex(ValueError,
|
with self.assertRaisesRegex(ValueError,
|
||||||
r"^File 'foo' already exists$"):
|
r"^File 'foo' already exists$"):
|
||||||
self.platform.add_file("foo", "bar")
|
self.platform.add_file("foo", "bar")
|
||||||
|
|
||||||
|
def test_iter_files(self):
|
||||||
|
self.platform.add_file("foo.v", "")
|
||||||
|
self.platform.add_file("bar.v", "")
|
||||||
|
self.platform.add_file("baz.vhd", "")
|
||||||
|
self.assertEqual(list(self.platform.iter_files(".v")),
|
||||||
|
["foo.v", "bar.v"])
|
||||||
|
self.assertEqual(list(self.platform.iter_files(".vhd")),
|
||||||
|
["baz.vhd"])
|
||||||
|
self.assertEqual(list(self.platform.iter_files(".v", ".vhd")),
|
||||||
|
["foo.v", "bar.v", "baz.vhd"])
|
||||||
|
|
Loading…
Reference in a new issue