Merge pull request #26 from q3k/diamond-linux-support
Add Diamond toolchain support for Linux.
This commit is contained in:
commit
f25e46c428
|
@ -56,19 +56,31 @@ def _build_files(device, sources, vincpaths, build_name):
|
||||||
tcl.append("prj_run Map -impl implementation")
|
tcl.append("prj_run Map -impl implementation")
|
||||||
tcl.append("prj_run PAR -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 Bitgen")
|
||||||
tcl.append("prj_run Export -impl implementation -task Jedecgen")
|
|
||||||
tools.write_to_file(build_name + ".tcl", "\n".join(tcl))
|
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":
|
if sys.platform == "win32" or sys.platform == "cygwin":
|
||||||
build_script_contents = "REM Autogenerated by LiteX\n"
|
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"
|
build_script_file = "build_" + build_name + ".bat"
|
||||||
tools.write_to_file(build_script_file, build_script_contents)
|
tools.write_to_file(build_script_file, build_script_contents)
|
||||||
r = subprocess.call([build_script_file])
|
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.bit"), build_name + ".bit")
|
||||||
shutil.copy(os.path.join("implementation", build_name + "_implementation.jed"), build_name + ".jed")
|
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:
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,12 @@ class LatticeProgrammer(GenericProgrammer):
|
||||||
def __init__(self, xcf_template):
|
def __init__(self, xcf_template):
|
||||||
self.xcf_template = 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_file = bitstream_file.replace(".bit", ".xcf")
|
||||||
xcf_content = self.xcf_template.format(bitstream_file=bitstream_file)
|
xcf_content = self.xcf_template.format(bitstream_file=bitstream_file)
|
||||||
tools.write_to_file(xcf_file, xcf_content)
|
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])
|
||||||
|
|
Loading…
Reference in New Issue