build: always use platform.add_source and avoid manipulate platform.sources directly

This commit is contained in:
Florent Kermarrec 2019-10-17 12:13:06 +02:00
parent 43f5d1ef13
commit 675b455259
4 changed files with 11 additions and 10 deletions

View File

@ -147,8 +147,8 @@ class LatticeDiamondToolchain:
named_sc, named_pc = platform.resolve_signals(v_output.ns) named_sc, named_pc = platform.resolve_signals(v_output.ns)
v_file = build_name + ".v" v_file = build_name + ".v"
v_output.write(v_file) v_output.write(v_file)
sources = platform.sources | {(v_file, "verilog", "work")} platform.add_source(v_file)
_build_files(platform.device, sources, platform.verilog_include_paths, build_name) _build_files(platform.device, platform.sources, platform.verilog_include_paths, build_name)
tools.write_to_file(build_name + ".lpf", _build_lpf(named_sc, named_pc)) tools.write_to_file(build_name + ".lpf", _build_lpf(named_sc, named_pc))

View File

@ -137,13 +137,14 @@ class LatticeIceStormToolchain:
named_sc, named_pc = platform.resolve_signals(v_output.ns) named_sc, named_pc = platform.resolve_signals(v_output.ns)
v_file = build_name + ".v" v_file = build_name + ".v"
v_output.write(v_file) v_output.write(v_file)
platform.add_source(v_file)
if use_nextpnr: if use_nextpnr:
chosen_yosys_template = self.nextpnr_yosys_template chosen_yosys_template = self.nextpnr_yosys_template
else: else:
chosen_yosys_template = self.yosys_template chosen_yosys_template = self.yosys_template
ys_contents = "\n".join(_.format(build_name=build_name, ys_contents = "\n".join(_.format(build_name=build_name,
read_files=self.gen_read_files(platform, v_file), read_files=self.gen_read_files(platform),
synth_opts=synth_opts) synth_opts=synth_opts)
for _ in chosen_yosys_template) for _ in chosen_yosys_template)
@ -218,13 +219,12 @@ class LatticeIceStormToolchain:
def get_size_string(self, series_size_str): def get_size_string(self, series_size_str):
return series_size_str[2:] return series_size_str[2:]
def gen_read_files(self, platform, main): def gen_read_files(self, platform):
sources = platform.sources | {(main, "verilog", "work")}
incflags = "" incflags = ""
read_files = list() read_files = list()
for path in platform.verilog_include_paths: for path in platform.verilog_include_paths:
incflags += " -I" + path incflags += " -I" + path
for filename, language, library in sources: for filename, language, library in platform.sources:
read_files.append("read_{}{} {}".format(language, read_files.append("read_{}{} {}".format(language,
incflags, incflags,
filename)) filename))

View File

@ -202,12 +202,12 @@ class XilinxISEToolchain:
named_sc, named_pc = platform.resolve_signals(vns) named_sc, named_pc = platform.resolve_signals(vns)
v_file = build_name + ".v" v_file = build_name + ".v"
v_output.write(v_file) v_output.write(v_file)
sources = platform.sources | {(v_file, "verilog", "work")} platform.add_source(v_file)
if mode in ("xst", "cpld"): if mode in ("xst", "cpld"):
_build_xst_files(platform.device, sources, platform.verilog_include_paths, build_name, self.xst_opt) _build_xst_files(platform.device, platform.sources, platform.verilog_include_paths, build_name, self.xst_opt)
isemode = mode isemode = mode
else: else:
_run_yosys(platform.device, sources, platform.verilog_include_paths, build_name) _run_yosys(platform.device, platform.sources, platform.verilog_include_paths, build_name)
isemode = "edif" isemode = "edif"
ngdbuild_opt += "-p " + platform.device ngdbuild_opt += "-p " + platform.device

View File

@ -253,7 +253,8 @@ class XilinxVivadoToolchain:
named_sc, named_pc = platform.resolve_signals(v_output.ns) named_sc, named_pc = platform.resolve_signals(v_output.ns)
v_file = build_name + ".v" v_file = build_name + ".v"
v_output.write(v_file) v_output.write(v_file)
sources = platform.sources | {(v_file, "verilog", "work")} platform.add_source(v_file)
sources = platform.sources
edifs = platform.edifs edifs = platform.edifs
ips = platform.ips ips = platform.ips
self._build_batch(platform, sources, edifs, ips, build_name, synth_mode, enable_xpm) self._build_batch(platform, sources, edifs, ips, build_name, synth_mode, enable_xpm)