next up previous
Next: The Experiment Up: Previous: Introduction

The Evolvable Hardware

The Xilinx XC6216 [15] Field Programmable Gate Array (FPGA) [11] is a reconfigurable VLSI chip particularly suitable for evolutionary work. It will soon be commercially available -- the work reported here was carried out on a tex2html_wrap_inline432 -test version. A simplified representation of the device is shown in Fig. 1.

   figure17
Figure 1: A simplified view of the XC6216 FPGA. Only those features used in the experiment are shown. Top: A tex2html_wrap_inline422 corner of the tex2html_wrap_inline424 array of cells; Below: the internals of an individual cell, showing the function unit at its centre. The symbol tex2html_wrap428 represents a multiplexer -- which of its four inputs is connected to the output (via an inversion) is controlled by the configuration memory. Similar multiplexers are used to implement the user-configurable function F.

It has an array of tex2html_wrap_inline424 reconfigurable cells, each of which is connected to its four neighbours: North, East, West and South (NEWS) as shown. There is also a hierarchical arrangement of wires spanning 4, 16 and 64 cells, but these were not used in this experiment. Each cell contains a function unit that can be configured to perform any boolean function of two inputs, or multiplexer functions of three inputs. Each of a function unit's three inputs (not all of which are necessarily used) can be configured to be sourced by any of the four NEWS neighbours. The output of a cell in each of the NEWS directions can be configured to be driven either by the output F of its function unit, or by the signal arriving at one of the other NEWS faces. This allows a cell to connect some of its NEWS neighbours directly together at the same time as performing a function; a cell can `route across itself' in some directions while giving the output of function F in others. The cells are configured independently (they do not all perform the same function), so even using only the nearest-neighbour links a very large range of possible circuits can be implemented.

Around the periphery of the array of cells are Input/Output Blocks (IOBs) and pads that interface the signals at the edge of the array to the pins of the chip. This is done in a more complex and flexible way than shown in the figure; all that is important here is that the chip was configured with a single input and a single output as shown. The choice of input and output positions was made before the experiment started, and then kept fixed. The unused IOBs simply appeared as inputs of a constant value. Only a tex2html_wrap_inline422 corner of the chip was used, and the unused cells were also configured just to produce a constant value. There are numerous other features of the device that were not used, and have not been mentioned.

At any time, the configuration of the chip is determined by the bits held in an on-chip memory, which can be written from software running on a host computer. No configuration of the cells can cause the device to be damaged -- it is impossible to connect two outputs together, for instance, because all internal connections are uni-directional. So an evolutionary algorithm can be allowed to manipulate the configuration of the real chip without the need for legality constraints or checking. Here, we directly encode the configuration bits for the tex2html_wrap_inline422 corner -- determining how the four outputs of each cell are derived and what function is performed by each function unit -- onto a linear bit-string genotype of length 1800 bits. This was done in a raster fashion, reading cell-by-cell from left to right along each row, and taking the rows from bottom to top.


next up previous
Next: The Experiment Up: Previous: Introduction

Adrian Thompson
Tue Dec 10 12:57:54 GMT 1996