cancel
Showing results for 
Search instead for 
Did you mean: 

Remotely Sharing and Accessing Xilinx Devices

Moderator
Moderator
7 0 535

On certain occasions, for example while working remotely, it might be necessary to access a device that is not locally available.

This brief tutorial demonstrates how to share and access a board which is in a remote lab location, or in the possession of a co-worker.

This tutorial is split into two parts:

Part 1: Tasks that must be executed by the person in possession of the board.

Part 2: Tasks that must be executed by the person wishing to access the shared board.

 

Step 1: Sharing the Board

Connect the board to your computer via USB cable, just as you’d do for local use.

In this example, a ZCU102 board is being shared.

image2020-3-31_17-18-43.png

Open a Vivado instance and in the Tcl console on the main page, run the following command:

exec hw_server -d

image2020-3-31_17-20-41.png

If you do not add the exec, the warning in the image below will be shown. This warning can be safely ignored.

If the process was successful, the hw_server URL will be displayed. In this example, the URL is anunesgu31

image2020-3-31_17-21-9.png

Share this URL with the person who needs to access the board.

Note: for internal URLs, the person you are sharing with will need to be on the same network, usually through a VPN connection.

Please also share the hw_server version that is being used. The person accessing this instance must use the same version of Vivado or an older version. Failing to do so might cause the connection to be refused.

At this point, the Vivado window can be closed and the hw_server process will continue to run in the background.

These are all of the tasks that must be executed by the user sharing the board.

Note: Please review the last part of this tutorial “Killing the hw_server Process” to make sure that you can properly end the hw_server application when you do not wish to share the device any longer.

Not killing the hw_server process can cause issues with opening other Hardware Manager instances and connecting to other devices.

 

Step 2: Accessing the Board

Open the Hardware Manager and initiate a Target Connection.

Select “Remote Server” and input the hostname provided by the sharer.

image2020-3-31_17-22-44.png

After you click next, the Hardware Manager will look for available devices in the host provided.

This can take several seconds, depending on the internet connection speed of the sharer and accessor.

The Hardware Manager will display the devices found. Make sure it is showing the desired device and finish the connection.

image2020-3-31_17-23-2.png

Confirm that the connection has been successful, and that the device is now available to be used as normal.

image2020-3-31_17-23-16.png

Please note that because any command and data transfer will happen over the internet, any task such as programming the board, viewing ILA data, etc., might take longer than it would in a local environment.

How to kill the hw_server process

As mentioned earlier, once the remote user is no longer accessing the shared board, it is necessary to properly end the hw_server application.

Not killing the hw_server process can cause issues with opening other Hardware Manager instances and connecting to other devices.

Below is an example of the error that can be seen when starting a new, local hw_server while the previous shared instance is still running.

image2020-3-31_17-24-51.png

In Windows:

Open the Command Prompt (CMD) and run the following command:

netstat -aon | find “3121”

This command will find all the processes listening on port 3121.

Find the Process ID (PID) for the hw_server application. In this example, the PID is 33232.

Use this PID it in the following command:

taskkill /F /PID 33232

image2020-3-31_17-25-41.png

In Linux:

Open a Terminal application and run the following command:

ps aux | grep hw_server

This command will find all the processes that contain the name hw_server in their description.

An alternative is the command below:

pidof hw_server

In this example, the PID is 86328

Use this PID it in the following command:

kill -9 86328

image2020-3-31_17-26-24.png