It was thus said that the Great Tony Duell once stated:
>
> In the ned the program sort-of works, nobody really knows why, and the
> result probably still has all sorts of bugs in it.
>
> I've seen the same with hardware, particularly FPGAs (IMHO nobody should
> be allowed near an FPGA until he cna design properly with TTL!). I've met
> 'desginers' who say things like
>
> 'Let's stick a D-type on that signal and see if it helps at all'
>
> 'I'll swap that NAD gate for an OR gate, it might do some good'
>
> 'Maybe inverting that clock will remove the glitch'.
It will only get worse. There's a scientist applying genetic algorithms
[1] to hardware [2]. The scientist, Adrian Thompson, used an FPGA and
"bred" configurations (on a 10x10 area of the chip) to discrimiate between
a 1kHz and a 10kHz signal:
So how did evolution do it--and without a clock? When he looked at
the final circuit, Thompson found the input signal routed through a
complex assortment of feedback loops. He believes that these
probably create modified and time-delayed versions of the signal
that interfere with the original signal in a way that enables the
circuit to discriminate between the two tones. "But really, I don't
have the faintest idea how it works," he says.
One thing is certain: the FPGA is working in an analogue manner. Up
until the final version, the circuits were producing analogue
waveforms, not the neat digital outputs of 0 volts and 5 volts.
Thompson says the feedback loops in the final circuit are unlikely
to sustain the 0 and 1 logic levels of a digital circuit. "Evolution
has been free to explore the full repertoire of behaviours available
from the silicon resources," says Thompson.
That repertoire turns out to be more intriguing than Thompson could
have imagined. Although the configuration program specified tasks
for all 100 cells, it transpired that only 32 were essential to the
circuit's operation. Thompson could bypass the other cells without
affecting it. A further five cells appeared to serve no logical
purpose at all--there was no route of connections by which they
could influence the output. And yet if he disconnected them, the
circuit stopped working.
It appears that evolution made use of some physical property of
these cells--possibly a capacitive effect or electromagnetic
inductance--to influence a signal passing nearby. Somehow, it
seized on this subtle effect and incorporated it into the solution.
-spc (Welcome to the future of non-deterministic hardware/software
design 8-P
[1] Hard to explain, but basically, you take a bunch of possible
"solutions" to a problem (generally, randomly generated), check them
for fitness (how well they solved the problem), take the high
scoring ones, and mix-n-match between them, evolving an optimum (for
some value of "optimum") solution.
[2]
http://www.netscrap.com/netscrap_detail.cfm?scrap_id=73
Received on Tue Feb 15 2005 - 21:11:25 GMT