The ability to distribute and thus accelerate the build of AMD Vivado projects is a useful but poorly documented activity, and the goal of this tutorial is to document a successful (if non-optimal), setup.
Here is a synopsis of my settings.
Ubuntu 22.04.5 LTS Host
IP address 10.0.0.4
Vivado v2025.1 installed
Ubuntu 22.04.5 LTS Client
IP Address 10.0.0.2
Vivado v2025.1 installed and .bashrc edited to ensure that any shell opens with Vivado ready to run. License file argument optional...
- export XILINXD_LICENSE_FILE="/home/dje/Downloads";
- source /tools/Xilinx/2025.1/Vitis/settings64.sh;
Please read the excellent material on Digital Ocean to help you create and exchange SSH keys between you Host and Client machines.
To have the Host machine discover the Client in Vivado I have to run the following sequence on the Host.
Open new Bash shell
$ ssh-add
enter passphrase
$ vivado
If I don't exchange keys in the Bash shell before starting Vivado, then I have to submit the passphrase in Vivado.
Open a Vivado project on your Host and go to Settings > Remote Hosts > Manual Configuration. Create a new Remote-Host as shown below and hit the Test button to verify the connection. If this fails you need to work on your SSH connection between the two machines.
With a basic connection setup between the two machines we now need an NFS share that each machine can access.
Again, Digital Ocean to the rescue. https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-22-04
Host: NFSsetup and export configuration
Host:$ sudo apt update
Host:$ sudo apt install nfs-kernel-server
Host: $ sudo mkdir dje-nfs-share
Host: $ sudo chown nobody:nogroup /dje-nfs-share
# Add a line to /etc/exports substituting my Client IP address for yours.
Host: $ sudo gedit /etc/exports
/home/dje/dje-nfs-share 10.0.0.2(rw, sync, no_subtree_check)
Host: $ sudo exportfs -a
Host: $ sudo systemctl restart nfs-kernel-server
UFW firewall configuration : Substituting my Client IP address for yours.
Host: $ sudo ufw allow from 10.0.0.2 to any port nfs
Client : setup mount point and configure to mount at boot.Client: $ sudo apt install nfs-common
Client: $ sudo mkdir dje-nfs-share
Client: $ sudo gedit /etc/fstab
10.0.0.4:/home/dje/dje-nfs-share /home/dje/dje-nfs-share nfs auto, nofail, noatime, nolock, intr, tcp, actimeo=1800 0 0
NB. To get this solution to work required the Host shared-folder and the Mount point on the Client machine have the same name, in my case dje-nfs-share. Without this commonality, Vivado on the Client could not find any files to exercise when given a job to run by the Host.
Running remote JobsCopying my Vivado project into the dje-nfs-share folder on the Host and opening the project on the Host from this location in Vivado, I can run Host spawned jobs on the remote client.
This is not a perfect tutorial, but if it helps you distribute your Vivado project workload then it has succeeded. I look forward to constructive feedback as to how this tutorial can be made more robust.
Regards,
DJE666







Comments