tcl.append("prj_run Map -impl implementation")
tcl.append("prj_run PAR -impl implementation")
tcl.append("prj_run Export -impl implementation -task Bitgen")
- tcl.append("prj_run Export -impl implementation -task Jedecgen")
tools.write_to_file(build_name + ".tcl", "\n".join(tcl))
-def _run_diamond(build_name, source, ver=None):
+def _run_diamond(build_name, toolchain_path, ver=None):
if sys.platform == "win32" or sys.platform == "cygwin":
build_script_contents = "REM Autogenerated by LiteX\n"
- build_script_contents = "pnmainc " + build_name + ".tcl\n"
+ build_script_contents += "pnmainc " + build_name + ".tcl\n"
build_script_file = "build_" + build_name + ".bat"
tools.write_to_file(build_script_file, build_script_contents)
r = subprocess.call([build_script_file])
shutil.copy(os.path.join("implementation", build_name + "_implementation.bit"), build_name + ".bit")
shutil.copy(os.path.join("implementation", build_name + "_implementation.jed"), build_name + ".jed")
+ elif sys.platform == "linux":
+ bindir = os.path.join(toolchain_path, 'bin/lin64')
+ envfile = os.path.join(bindir, 'diamond_env')
+ build_script_contents = "# Autogenerated by LiteX\n"
+ build_script_contents += "set -e\n"
+ build_script_contents += "bindir='{}/'\n".format(bindir)
+ build_script_contents += "source {}\n".format(envfile)
+ build_script_contents += "diamondc {}.tcl | tee build.log\n".format(build_name)
+ build_script_file = "build_{}.sh".format(build_name)
+
+ tools.write_to_file(build_script_file, build_script_contents)
+ r = subprocess.call(['/bin/sh', build_script_file])
+ shutil.copy(os.path.join("implementation", build_name + "_implementation.bit"), build_name + ".bit")
else:
raise NotImplementedError
def __init__(self, xcf_template):
self.xcf_template = xcf_template
- def load_bitstream(self, bitstream_file):
+ def load_bitstream(self, bitstream_file, toolchain_path=''):
xcf_file = bitstream_file.replace(".bit", ".xcf")
xcf_content = self.xcf_template.format(bitstream_file=bitstream_file)
tools.write_to_file(xcf_file, xcf_content)
- subprocess.call(["pgrcmd", "-infile", xcf_file])
+ if toolchain_path:
+ pgrcmd = os.path.join(toolchain_path, 'bin/lin64/pgrcmd')
+ else:
+ pgrcmr = 'pgrcmr'
+ subprocess.call([pgrcmd, "-infile", xcf_file])