# 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: ```bash chmod 600 ~/.ssh/config ``` ## Step 2 — Make an SSH key and copy it to the server ```bash 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 ```bash brew install --cask xquartz ``` No Homebrew? Download it from 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 ```bash 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: ```bash ./embs.sh ``` ## Step 5 — Check it actually works Once you are logged in to the server, type: ```bash 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: ```bash 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: ```bash 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 ```bash vivado & ``` Vitis is launched from inside Vivado: **Tools → Launch Vitis IDE**. ### What the flags do `embs.sh` is just a wrapper around: ```bash 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 - Working Remotely — - VLAB Quickstart — - Using the VLAB —