From 39ffa532b0cebb0bd6bd98393b53e23eb6257cb2 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Tue, 1 May 2018 00:44:13 +0200 Subject: [PATCH] xilinx/programmer: fix programmer --- litex/build/xilinx/programmer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/litex/build/xilinx/programmer.py b/litex/build/xilinx/programmer.py index d1ae01bca..38c95364d 100644 --- a/litex/build/xilinx/programmer.py +++ b/litex/build/xilinx/programmer.py @@ -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"))