enzian-build
is the machine used to build FPGA bitstreams, software, etc. for Enzian, accessible in the internal network. Tools like Xilinx Vivado and Vitas are already installed on it.
Each user has a network-attached home directory on the machine. It's recommended to work on local storage for speed and reliability: /scratch or
/scratch2
.
In this document, $
refers to commands run on enzian-build
, and @
refers to commands run on your computer.
SSH
@ ssh <your nethz>@enzian-build.ethz.ch
Type your ETH account password to authenticate (password is not shown when typing).
Kerberos Authentication
If you don't want to type your password every time, use Kerberos for authentication.
Kerberos works by users acquiring tickets from the authentication domain and use them to access various services. Tickets expire after some time.
According to the ISG document, to acquire ticket: @ kinit <nethz>@D.ETHZ.CH
On macOS, you can use the Keychain to memorize your password: @ kinit --keychain <nethz>@D.ETHZ.CH
, or use this app for auto renewal.
To check existing tickets: @ klist
Tips
One way to copy your source files over is: @ rsync -rlp --delete <src>/ <your nethz>@enzian-build.ethz.ch:/scratch/<your nethz>/<dst>
If you want to keep generated files, omit --delete
.
When building stuff, use a tmux or screen session (to avoid deconnection problems). Here is a good tmux cheat sheet: https://tmuxcheatsheet.com/
Using GUI applications like Vivado
Approach 1: VNC Remote Desktop
VNC Remote Desktop creates a virtual desktop on the remote machine.
- Connect via ssh:
@ ssh <your nethz>@enzian-build.ethz.ch
Approach 1.1 Connect directly
TODO: what is the security implication without using the SSH tunnel?
- Start a new VNC server:
$ vncserver -geometry 1920x1080
- Change the resolution to match your screen. Common options are 1920x1080 and 1920x1200.
- From the output message, you can see the screen ID. For example, "
New 'X' desktop is enzian-build:16"
indicates the display ID is 16.
- Connect your local VNC client to
enzian-build.ethz.ch:59xy
, wherexy
is the display ID.- VNC clients like TigerVNC works.
- on macOS, the built-in Screen Sharing client works:
@ open vnc://enzian-build.ethz.ch:59xy
Approach 1.2 Through SSH tunnel
- Start a new VNC server:
$ vncserver -geometry 1920x1080 -localhost
(change the resolution to match your screen), note the port. - Setup a SSH tunnel:
@ ssh -L 5900:localhost:59xy -C -N -l <your nethz> enzian-build.ethz.ch
(in59xy
,xy
is the port on which the VNC server is running). - Connect your local VNC client to
localhost:5900
. TigerVNC Viewer works. - To kill an VNC session runs
$ vncserver -kill :xy
, where xy is the display ID. - To enable shared clipboard, on enzian-build, run:
$ DISPLAY=:xy /usr/bin/autocutsel -s CLIPBOARD -fork
(note the colon before xy)
Approach 2: X Forwarding
X forwarding is a technique that essentially sends all draw commands from the remote machine to the client machine and draw windows on the client side.
It allows more native integration with your own machine, but highly depends on how good your X server on the local machine is.
NOTE: X forwarding is bandwidth-intensive. It can take 10+MB/s bandwidth. Wired connection is recommended if you are using this approach.
- Make sure you have a X server installed.
- On macOS, XQuartz is an option.
@ ssh -fX<your nethz>@enzian-build.ethz.ch bash -c $'export \_JAVA\_OPTIONS="-Duser.home=/storage/user/<your nethz>" && /opt/Xilinx/Vivado/2022.1/bin/vivado'
Where to look next
If you haven't read it yet, go read the quick start guide here: https://gitlab.inf.ethz.ch/PROJECT-Enzian/enzian-userguide