Saturday December 29, 2001
Self-evolving hardware? Here's a story about a scientist who "lets" his Xilinx FPGA chips reprogram themselves.

Xilinx chips are field programmable gate arrays (FPGA), which means that they are a strange blend of hardware and software used to make hardware. Think of it as a box full of hundreds of thousands of lego like circuit building components. Using a specialized software program a Xilinx programmer designs a circuit they want the chip to "become." The program takes what the engineer wants done and creates a software "package" which goes inside the Xilinx chip to make it behave in just that manner. Furthermore since this is software configured you can always change your mind and upload a new setup later on. My old modem has an FPGA and over the years I've added new features simply by downloading a new set of software for the FPGA from the manufacturer.

Let's imagine if your house were a huge FPGA and the "gates" in this case are water pipes and faucets. Of course you can draw out how you'd like the cold and hot water distributed throughout the house and where the faucets are. But since you have all of this control you might also decide to disable all of the other water spigots, or at least the toilet, whenever the shower is running. You might add a bit where a master faucet is shutdown when the temperature falls too far. With conventional plumbing you'd need to figure this all out before the drywall goes up and the house is done since it's quite expensive and disruptive to make changes down the road. But since you have an FPGA house you can download a whole new plumbing setup whenever you feel like it. Or, as Thompson's work would indicate, your FPGA house will take your initial design and then notice certain patterns of use and optimize for them. For example, instead of lots of separate pipes and shutoff valves for each faucet it may choose to run all of the water to the shower first, and then branch off to other faucets since it knows that they don't get water when the shower is on, thus saving on pipes, valves, and complexity. An actual FPGA is much more complicated than that, maybe upping the plumbing metaphor to controlling a whole town along with the electricity and phone?