Sometimes it can be convenient to program an FPGA remotely - perhaps you are accessing a Linux server using VNC, but your FPGA board is attached to your Windows PC in front of you? Perhaps you are sharing one board between a number of designers?
Both Altera and Xilinx have a system which allows you to remotely program an FPGA. Let's look at setting these systems up.
The Altera Remote JTAG Server is part of the Quartus tools. However if you only want the programming tools and nothing else, you can download a cut down piece of software which only contains the programming tools. This is available here, or just search for "Quartus II Programmer".
Install the software (it can be installed alongside Quartus II itself if you like, though there's no point - if you have Quartus II installed, then you have the Programmer already!).
You then need to set the Remote JTAG Server up to accept incoming connections.
One more step: you must open a port in your firewall (you do have your firewall enabled, don't you??). The required port is TCP 1309. On the Windows operating system, this can be done by creating an Exception from the firewall settings in the Control Panel.
The JTAG server can be used by adding it to the Quartus II software in a similar manner:
If you get a message "no hardware" this is simply telling you that hardware is not connected to the Remote JTAG Server. If you get a message "unable to connect" then you need to check your firewall settings to make sure the port TCP 1309 is allowed.
Xilinx ISE includes a program called the Cable Server, which allows remote programming. Xilinx also provide a set of programming tools, a kind of cut-down version of ISE, which you can install to access the Cable Server.
Getting the Cable Server to run is very easy. In a full installation of Xilinx ISE 10.1, simply run the program
C:\Xilinx\10.1\ISE\bin\nt\cableserver.exe
When it runs, you may be prompted to unblock the program on Windows operating System, so that certain firewall ports are opened. You will have to allow these ports to be opened, or the Cable Server won't work.
To use the Cable Server remotely, you need to specify a remote server in Impact, the downloading tool.
Assuming the firewall is set up correctly, and the hardware is connected correctly to the Cable Server computer, you will be able to program the board/device attached to the remote computer.
It is possible to access both the Remote JTAG Server and the Cable Server from a Tcl script - but that is a topic for another day.