Showing with 11 additions and 0 deletions.
  1. +10 −0 nmigen/build/plat.py
  2. +1 −0 nmigen/vendor/xilinx_spartan_3_6.py
@@ -221,11 +221,13 @@ class TemplatedPlatform(Platform):
toolchain = abstractproperty()
file_templates = abstractproperty()
command_templates = abstractproperty()
unix_interpreter = "sh"

build_script_templates = {
"build_{{name}}.sh": """
# {{autogenerated}}
set -e{{verbose("x")}}
{{emit_unix_interpreter()}}
[ -n "$NMIGEN_{{platform.toolchain}}_env" ] && . "$NMIGEN_{{platform.toolchain}}_env"
{{emit_commands("sh")}}
""",
@@ -242,6 +244,13 @@ def toolchain_prepare(self, fragment, name, **kwargs):
# and to incorporate the nMigen version into generated code.
autogenerated = "Automatically generated by nMigen {}. Do not edit.".format(__version__)

def emit_unix_interpreter():
if self.unix_interpreter == "sh":
return "# runs on any POSIX sh"
if self.unix_interpreter == "bash":
return """if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi"""
assert False

def emit_design(backend):
return {"rtlil": rtlil, "verilog": verilog}[backend].convert(fragment, name=name,
ports=list(self.iter_ports()), missing_domain=lambda name: None)
@@ -308,6 +317,7 @@ def render(source, origin):
return compiled.render({
"name": name,
"platform": self,
"emit_unix_interpreter": emit_unix_interpreter,
"emit_design": emit_design,
"emit_commands": emit_commands,
"get_tool": get_tool,
@@ -121,6 +121,7 @@ def family(self):
{{get_override("add_constraints")|default("# (add_constraints placeholder)")}}
"""
}
unix_interpreter = "bash"
command_templates = [
r"""
{{get_tool("xst")}}