A programmable circuit receives configuration data from an external
source, stores the firmware in a memory, and then downloads the firmware
from the memory. Such a programmable circuit allows a system, such as a
computing machine, to modify the programmable circuit's configuration,
thus eliminating the need for manually reprogramming the configuration
memory. For example, if the programmable circuit is an FPGA that is part
of a pipeline accelerator, a processor coupled to the accelerator can
modify the configuration of the FPGA. More specifically, the processor
retrieves from a configuration registry firmware that represents the
modified configuration, and sends the firmware to the FPGA, which then
stores the firmware in a memory such as an electrically erasable and
programmable read-only memory (EEPROM). Next, the FPGA downloads the
firmware from the memory into its configuration registers, and thus
reconfigures itself to have the modified configuration.