The final circuit is shown in Fig. 5; observe the many feedback paths. The lack of modularity in the topology is unsurprising, because there was no bias in the genetic encoding scheme in favour of this.
Figure 5: The final evolved circuit. The array of cells is shown, along with all connections that eventually connect an output to an input. Connections driven by a cell's function output are represented by arrows originating from the cell boundary. Connections into a cell which are selected as inputs to its function unit have a small square drawn on them. The actual setting of each function unit is not indicated in this diagram.
Parts of the circuit that could not possibly affect the output can be pruned away. This was done by tracing all possible paths through the circuit (by way of wires and function units) that eventually connect to the output. In doing so, it was assumed that all of a function unit's inputs could affect the function unit output, even when the actual function performed meant that this should not theoretically be the case. This assumption was made because it is not known exactly how function units connected in continuous-time feedback loops actually do behave. In Fig. 6, cells and wires are only drawn if there is a connected path by which they could possibly affect the output, which leaves only about half of them.
Figure 6: The pruned circuit diagram: cells and wires are only drawn if there is a connected path through which they could possibly affect the output.
To ascertain fully which parts were actually contributing to the behaviour, a search was conducted to find the largest set of cells that could have their function unit outputs simultaneously clamped to constant values (0 or 1) without affecting the behaviour. To clamp a cell, the configuration was altered so that the function output of that cell was sourced by the flip-flop inside its function unit (a feature of the chip which has not been mentioned until now, and which was not used during evolution): the contents of these flip-flops can be written by the PC and can be protected against any further changes. A program was written to randomly select a cell, clamp it to a random value, perform a fitness evaluation, and to return the cell to its un-clamped configuration if performance was degraded, otherwise to leave the clamp in place. This procedure was iterated, gradually building up a maximal set of cells that can be clamped without altering fitness.
In the above automatic search procedure, the fitness evaluations were more rigorous (longer) than those carried out during evolution, so that very small deteriorations in fitness would be detected (remember there is always some noise during the evaluations). However, there was still a problem: clamping some of the cells in the extreme top-left corner produced such a tiny decrement in fitness that the evaluations did not detect it, but yet by the time all of these cells of small influence had been clamped, the effect on fitness was quite noticeable. In these cases manual intervention was used (informed by several runs of the automatic method), with evaluations happening by watching the oscilloscope screen for several minutes to check for any infrequent spikes that might have been caused by the newly introduced clamp.
Figure 7: The functional part of the circuit. Cells not drawn here can be clamped to constant values without affecting the circuit's behaviour -- see main text.
Fig. 7 shows the functional part of the circuit that remains when the largest possible set of cells has been clamped without affecting the behaviour. The cells shaded gray cannot be clamped without degrading performance, even though there is no connected path by which they could influence the output -- they were not present on the pruned diagram of Fig. 6. They must be influencing the rest of the circuit by some means other than the normal cell-to-cell wires: this probably takes the form of a very localised interaction with immediately neighbouring components. Possible mechanisms include interaction through the power-supply wiring, or electromagnetic coupling. Clamping one of the gray cells in the top-left corner has only a small impact on behaviour, introducing either unwanted pulses into the output, or a small time delay before the output changes state when the input frequency is changed. However, clamping the function unit of the bottom-right gray cell, which also has two active connections routed through it, degrades operation severely even though that function output is not selected as an input to any of the NEWS neighbours: it doesn't go anywhere.
This circuit is discriminating between inputs of period 1ms and 0.1ms using only 32 cells, each with a propagation delay of less than 5ns, and with no off-chip components whatsoever: a surprising feat. Evolution has been free to explore the full repertoire of behaviours available from the silicon resources provided, even being able to exploit the subtle interactions between adjacent components that are not directly connected. The input/output behaviour of the circuit is a digital one, because that is what maximising the fitness function required, but the complex analogue waveforms seen at the output during the intermediate stages of evolution betray the rich continuous-time continuous-value dynamics that are likely to be internally present.
In  it was shown that in GAs like the one used here, there can be a tendency for circuits to evolve to be relatively unaffected by genetic mutations, on average. (This effect was first noticed in a different context [2, 8], and only occurs significantly in engineering GAs under particular -- but common -- conditions.) Depending on the genetic encoding scheme, this can have a variety of consequences for the phenotype, including graceful degradation in the presence of certain hardware faults. For our circuit evolved here, however, increasing the proportion of the possible mutations that do not reduce fitness may result in decreasing the number of cells implicated in generating the behaviour. So it may be no accident that the functional core of cells seen in Fig. 7 is small.
So far, we have only considered the response of the circuit to the two frequencies it was evolved to discriminate. How does it behave when other frequencies of square wave are applied to the input? Fig. 8 shows the average output voltage (measured using the analogue integrator over a period of 5 seconds) for input frequencies from 31.25kHz to 0.625kHz. When the case temperature of the FPGA is C (as it was, C, during evolution), then for input frequencies 4.5kHz the output stays at a steady +5V, and for frequencies 1.6kHz at a steady 0V. Thus, the test frequencies (marked F1 and F2 in the figure) are correctly discriminated with a considerable margin for error. As the frequency is reduced from 4.5kHz, the output begins to rapidly pulse low for a small fraction of the time; as the frequency is reduced further the output spends more time at 0V and less time at +5V, until finally resting at a steady 0V as the frequency reaches 1.6kHz. These properties might be considered `generalisation.'
Figure 8: The frequency response of the final circuit, measured at three different temperatures. F1 and F2 are the two frequencies that the circuit was evolved to discriminate; in fact, for ease of implementation, they happen to be of period 0.096ms (10.416kHz) and 0.960ms (1.042kHz) respectively, rather than exactly 10kHz and 1kHz as mentioned in the main text.
Fig. 8 also shows the circuit's behaviour when hot or cold. The high temperature was achieved by placing a 60W light-bulb near the chip, the low temperature by opening all of the laboratory windows on a cool breezy evening. Varying the temperature moves the frequency response curve to the left or right, so once the margin for error is exhausted the circuit no longer behaves perfectly to discriminate between F1 and F2. In the examples given here, at C the output is not steady at +5V for F1, but is pulsing to 0V for a small fraction of the time. Conversely, at C the output is not a steady 0V for F2, but is pulsing to +5V for a small fraction of the time. This is not surprising: the only time reference that the system has is the natural dynamical behaviour of the components, and properties such as resistance, capacitance and propagation delays are temperature dependent. The circuit operates perfectly over the C range of temperatures that the population was exposed to during evolution, and no more could reasonably be expected of it. We'll return to the issue of evolving temperature stability in the discussion that follows.