A Field-Programmable Gate Array (FPGA) is a Very-Large Scale Integration (VLSI) silicon chip. It consists of an undedicated array of components interspersed with wires of various lengths. Within the components are electronic switches which control their behaviour, and electronic switches also control how the inputs and outputs of the components connect to the wires. A particular setting of the switches defines which out of the vast range of possible electronic circuits is physically instantiated on the chip at any one time. Recent advances in FPGA technology make it possible to place the settings of the switches (and hence the physical circuit) directly under the control of an evolutionary algorithm -- previously there were technical difficulties due to limitations of the chips [2]. With the newly introduced XC6216 device from Xilinx [3], the switch settings can be partially or completely reconfigured in a negligible amount of time, there is no limit on the number of reconfigurations, and the chip's architecture is such that it can never be internally damaged by any configuration. In this experiment, only a subset of the chip's capabilities was enabled: each component performed a single function of three inputs, and only nearest-neighbour connections were used.
The settings of the switches are determined by the contents of bits of RAM spread throughout the chip. This RAM can be written to as easily as conventional computer memory. Thus, any appropriate flavour of evolutionary algorithm can easily be implemented on a standard desktop computer and allowed to manipulate the physical circuit instantiated in silicon on the FPGA. Fitness evaluations can be the measurement of the performance of an evolved configuration as a real physical electronic circuit, behaving in real-time according to the laws of semiconductor physics. This means that evolution can be free to explore all possible configurations, and hence all possible behaviours in the repertoire of the FPGA. There is no need to constrain evolution to work only within the relatively small subset of circuits we know how to design, analyse or feasibly simulate. Instead, evolution can be allowed to explore beyond the scope of conventional design methodologies, exploiting richer architectures and dynamical behaviours, and using complex aspects of semiconductor physics.
In this spirit, the configuration bits of a
corner of the XC6216 FPGA were directly encoded as a linear
bit-string genotype of 1800 bits, and allowed to evolve without constraint
using a fairly conventional genetic algorithm.
The individuals were evaluated one-at-a-time as configurations of a real FPGA
chip. The task was a simple first-step towards signal-processing and
pattern-recognition applications. A single input was driven with a sequence of
audio tones of 1kHz and 10kHz frequency, presented in a random order. The
target behaviour was for the single output immediately to go to a steady 5V
level as soon as one frequency was present, and to go to 0V for the other one.
Such a circuit might be used to demodulate binary data sent over a telephone
line. The task might sound trivially easy until it is remembered that there
are no external timing components: evolution must craft a continuous-time
arbitrarily recurrent network of 100 components (each of which has an
input
output time delay of only a few nanoseconds) to distinguish
between input periods that are on a timescale five orders of magnitude slower.
If achieved, this would be a significant feat, because this corner of the chip
is only
in area, and requires no external components.
Fig. 1 shows the progress of evolution. In the initial random population of 50 individuals (generation 0), all the circuits happened to be as bad as possible, for example maintaining a constant output voltage irrespective of the input. After 1400 generations, a promising partial solution is shown: the rich continuous-time analogue dynamics of the circuit are evident. The FPGA's components -- intended to be used to perform operations of Boolean logic -- are really just high-gain configurations of transistors, and in the absence of the constraints of a digital design methodology, this is just how evolution treats them. Finally, the best circuit of generation 3500 gives the desired behaviour, showing the `digital-looking' output demanded by the fitness function, though it is certain that complex dynamics are still used internally.
Figure 1: The voltage waveforms of the two different tones presented to the
input (top
row), and of the corresponding output produced by the best of the
population after 0, 1400 and 3500 generations (the
three rows below). These
are photographs of the oscilloscope screen, with the probes directly attached
to the input pin and the output pin of the FPGA. See text for interpretation.
The final circuit is shown in Fig. 2. Note the highly recurrent structure. It behaves in continuous-time as an unfolding of the laws of semiconductor physics: the chip is a dynamical system, not a computational one. The components shaded gray are part of the circuit's function even though they appear to be disconnected from it: they must be interacting by some subtle property of semiconductor physics such as electromagnetic coupling or interaction through the power-supply wiring. As a result of this rich unconstrained architecture, dynamics, and use of physical resources, the circuit is incredibly efficient: using just 32 cells it is one or two orders of magnitude smaller than one would expect from conventional methods. See [4] for full details of the experiment and the theory behind it. To many people, the experiment seems somewhat akin to the evolution of physical nervous systems in nature.
Figure 2: The functional part of the final evolved circuit. The large boxes
represent the components, the inputs of which are marked with small squares.
The circuit operates perfectly over the
C range of temperatures
that the population experienced during
evolution. However, the more the temperature deviates from this range, the
more the circuit malfunctions. Conventional digital design, in forbidding the
use of continuous-time analogue dynamics, can produce circuits with much
greater ranges of operating temperature -- at the expense of less efficient
utilisation of the physical resources. How can evolution be allowed to
naturally exploit the physical medium, and thus reap the benefits seen above,
but yet produce circuits able to operate in a wide range of temperatures?
Natural evolution must have faced the same problem: can we draw some
inspiration from it? That is the purpose of this paper.
To begin, the next section considers the roots of temperature's
influence on biological and silicon systems.