Files
EMBS/README.md

5.5 KiB

Running Vivado & Vitis on your own Mac (EMBS)

Vivado and Vitis have no macOS version at all, so you cannot install them on a Mac. Instead we run them on the University's Linux server (csteach0.york.ac.uk) and have their windows drawn on the Mac by XQuartz. That is the whole trick.

Time: about 15 minutes. Space used on your Mac: ~200 MB (XQuartz only — the 60 GB of Xilinx tools lives on the server, not on you).


Before you start

You need:

  • Your University IT account and your ITS username (looks like abc500).
  • Access to the off-campus SSH gateway (ssh.york.ac.uk). If you can't get in even with the right password, ask IT Services or the module staff.
  • XQuartz — free, installed in step 3.
  • Later, only for the FPGA boards: a VLAB keyfile from Ian. You do not need this to run Vivado — only to program a real board.

You do not need to download Vivado, and you do not need a licence file.


Step 1 — Tell SSH how to reach the server

The server is behind the University firewall, so you must hop through the IT Services gateway. Open (or create) ~/.ssh/config and add the following, replacing abc500 with your own ITS username:

Host ssh.york.ac.uk
    User abc500

Host csteach0.york.ac.uk
    User abc500
    ProxyCommand ssh -A -T -o Compression=no ssh.york.ac.uk -W %h:%p

Then lock down the permissions:

chmod 600 ~/.ssh/config

Step 2 — Make an SSH key and copy it to the server

ssh-keygen -t ed25519          # just press Enter for every prompt
ssh-copy-id csteach0.york.ac.uk

ssh-copy-id asks for your password several times — once for the gateway, then for the server. That is expected.

Step 3 — Install XQuartz

brew install --cask xquartz

No Homebrew? Download it from https://www.xquartz.org/ instead.

Then log out and back in. If echo $DISPLAY is still empty afterwards, don't worry about it — the script in step 4 sets it for you.

Step 4 — Get the connection script

git clone https://git.movitzaaron.com/movitz/EMBS.git
cd EMBS
./embs.sh --check

You want to see X server reachable: :0. Then connect for real:

./embs.sh

Step 5 — Check it actually works

Once you are logged in to the server, type:

xeyes

A pair of eyes should appear on your Mac. If it does, the hard part is over.

Step 6 — One-off setup on the server

Still on the server. Add the tools to your PATH and point at the department's licence server, so you don't need a licence of your own:

echo 'export LM_LICENSE_FILE=2100@cslm0.its.york.ac.uk' >> ~/.bashrc
echo 'export PATH=/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vivado/bin:$PATH' >> ~/.bashrc

Disconnect (exit) and reconnect (./embs.sh), then check the version:

vivado -version

It must say 2025.1. If it says 2020.x, the PATH hasn't taken effect — reconnect and try again.

Step 7 — Run Vivado

vivado &

Vitis is launched from inside Vivado: Tools → Launch Vitis IDE.

What the flags do

embs.sh is just a wrapper around:

ssh -Y -C -o ServerAliveInterval=60 csteach0.york.ac.uk
Flag Meaning
-Y Forward X11, so the GUI windows are drawn on your Mac.
-C Compress the connection — X11 sends a lot of small messages.
-o ServerAliveInterval=60 Keepalive every 60s, so a long synthesis run isn't dropped.

It also exports DISPLAY=:0 and starts XQuartz if needed, which is why it is safer than typing the ssh command by hand.


Troubleshooting

It asks for my password every single time. Normal. The gateway uses two-factor authentication, so it always asks for a password (and maybe a Duo approval) after using your key. Nothing is broken, and it can't be automated.

xeyes runs but no window appears, or it says "Can't open display". DISPLAY isn't set. embs.sh handles this for you; if you're connecting by hand, run export DISPLAY=:0 first, or start XQuartz (open -a XQuartz) and reconnect.

"REMOTE HOST IDENTIFICATION HAS CHANGED" / host key changed. Usually just means the relay server was rebuilt. Delete the offending line from ~/.ssh/known_hosts and reconnect.

My own Host embs alias hangs, then times out. It's missing its ProxyCommand. ssh only merges options from Host blocks whose pattern matches, so a new alias does not inherit the ProxyCommand from the csteach0 block. Copy it into the new block, or just use ./embs.sh.

Vivado feels slow. Expected — the GUI is being sent over the network. Start long synthesis runs and come back to them. A hardware lab PC is far nicer when you can get one.

Good to know

  • Never put spaces in Vivado project names or paths — it genuinely breaks the tools.
  • Watch your disk quota on the server (quota -s). Synthesis uses a lot; ~/.cache is usually safe to clear out.
  • Your home directory on the server is your University filestore, so your projects persist between sessions.
  • On Windows the same server route works from WSL (follow the Linux instructions), but the X11 part differs — you'd use an X server such as VcXsrv or Xming instead of XQuartz.

Where the original instructions live