diff --git a/src/finn/util/vivado.py b/src/finn/util/vivado.py index 0f82c52cb2c1fc5ee4ed5a1927f46e222e0ab9b5..6b6df3940cfeeed292345382471719c49f725de6 100644 --- a/src/finn/util/vivado.py +++ b/src/finn/util/vivado.py @@ -28,6 +28,7 @@ import os import subprocess +import stat from finn.util.basic import get_remote_vivado @@ -91,6 +92,7 @@ def out_of_context_synth( vivado_proj_folder = "%s/results_%s" % (verilog_dir, top_name) res_counts_path = vivado_proj_folder + "/res.txt" if remote_server is not None: + print("Using remote Vivado OOC synth, remote server %s" % remote_server) run_synth = """ #!/bin/bash which vivado; @@ -105,14 +107,17 @@ cat %s ) with open(vivado_proj_folder + "/run.sh", "w") as f: f.write(run_synth) + st = os.stat(vivado_proj_folder + "/run.sh") + os.chmod(vivado_proj_folder + "/run.sh", st.st_mode | stat.S_IEXEC) # note that this assumes the same temp folder can be created on the # remote server - remote_server_uri = remote_server + ":" + verilog_dir - copy_files = "rsync -avz %s %s" % (verilog_dir + "/", remote_server_uri + "/") + # note we set target path as / due to use of -R (relative) + remote_server_uri = remote_server + ":/" + copy_files = "rsync -avzR %s %s" % (verilog_dir + "/", remote_server_uri) copy_files = copy_files.split() proc = subprocess.Popen(copy_files, cwd=verilog_dir, env=os.environ) proc.communicate() - vivado_cmd = "bash %s/run.sh" % vivado_proj_folder + vivado_cmd = "bash -ic %s/run.sh" % vivado_proj_folder run_vivado = ["ssh", "-t", remote_server, vivado_cmd] proc = subprocess.Popen(run_vivado, cwd=verilog_dir, env=os.environ) proc.communicate()