xilinx/programmer: fix programmer
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 30 Apr 2018 22:44:13 +0000 (00:44 +0200)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 30 Apr 2018 22:44:13 +0000 (00:44 +0200)
litex/build/xilinx/programmer.py

index d1ae01bcad8bab80f9a6d66dc71c65a7502e890c..38c95364d8776ccd42c2d41bade6bc3d23e16ce7 100644 (file)
@@ -112,7 +112,18 @@ def _run_vivado(path, ver, cmds):
     if sys.platform == "win32" or sys.platform == "cygwin":
         vivado_cmd = "vivado -mode tcl"
     else:
-        settings = common.settings(path, "", ver, first="name")
+        # For backwards compatibility with ISE paths, also
+        # look for a version in a subdirectory named "Vivado"
+        # under the current directory.
+        paths_to_try = [path, os.path.join(path, "Vivado")]
+        for p in paths_to_try:
+            try:
+                settings = common.settings(p, ver)
+            except OSError:
+                continue
+            break
+        else:
+            raise OSError("Unable to locate Vivado directory or settings.")
         vivado_cmd = "bash -c \"source " + settings + "&& vivado -mode tcl\""
     with subprocess.Popen(vivado_cmd, stdin=subprocess.PIPE, shell=True) as process:
         process.stdin.write(cmds.encode("ASCII"))