FPGARelated.com
Forums

Where can i find GeneticFPGA toolkit

Started by Unknown August 4, 2005
Hello Everyone
I am a final year student at Manukau Institute of Technology.I am doing
 my honours research project on Evolvable Harwdware. Xilinx has
developed GeneticFPGA toolkit. On one of the FPGA newsgroups I read
that it is free for download once you send a request email to the
address JBits@xilinx.com. I couldn't find it on the Xilinx website.Also
I did send an email on this jbits address a few times but did not get
any reply.
I would be really grateful if you could send me the link to download
GeneticFPGA toolkit.
Thank you
Ankit Parikh

<apsolar@rediffmail.com> schrieb im Newsbeitrag
news:1123124714.708645.319430@g49g2000cwa.googlegroups.com...
> Hello Everyone > I am a final year student at Manukau Institute of Technology.I am doing > my honours research project on Evolvable Harwdware. Xilinx has > developed GeneticFPGA toolkit. On one of the FPGA newsgroups I read > that it is free for download once you send a request email to the > address JBits@xilinx.com. I couldn't find it on the Xilinx website.Also > I did send an email on this jbits address a few times but did not get > any reply. > I would be really grateful if you could send me the link to download > GeneticFPGA toolkit. > Thank you > Ankit Parikh >
NOWHERE. if you search with Google you only find references to year 1999 ! so its possible as dead as JBits and no chanc to get hold on it. Antti
Ankit,
click on
http://en.wikipedia.org/wiki/Evolvable_hardware
and google Adrian Thompson.
The Xilinx devices he used, the 6200 family, is dead. No hardware, no
software.
The family dies for lack of commercial interest.
My feeling is that some smart academics have explored this field
already, and I have seen no progress over the past 5 years.
I would pick another subject...
Peter Alfke

Hi Peter
I am half way through this topic.So I have to finish it up.
Have you read Adrian Thompson's PHD thesis.I guess it would contain
some valuable information.Do you know where I could get it.Or do you
have any other suggestions for me.
Thanks
Ankit




Peter Alfke wrote:
> Ankit, > click on > http://en.wikipedia.org/wiki/Evolvable_hardware > and google Adrian Thompson. > The Xilinx devices he used, the 6200 family, is dead. No hardware, no > software. > The family dies for lack of commercial interest. > My feeling is that some smart academics have explored this field > already, and I have seen no progress over the past 5 years. > I would pick another subject... > Peter Alfke
Ankit,
I am the wrong person to ask, for I, personally, find the whole subject
bogus.
But that's my problem...
Peter Alfke

Evolutionary Algorithms do have their place.

During my Masters program a friend and I wrote a piece of software that
would take a logic circuit and generate a set of test vectors that
would give you the best fault coverage.

The program did this using a "Genetic Algorithm" approach.
First a random set of test vectors were created. Then the set of
vectors were repopulated based on a fitness function. (Basically if the
test vector had a high % of fault coverage it was more likely to be
selected back in the set of vectors) After that there is a
mutation/cross over phase which adds more variants to the population.
These 3 steps are repeated until a certain % of fault coverage is
completed by a set of the vectors.

The upside to this approach is it can be a lot faster than an
exhaustive approach, especially if the circuit is large. The downside
is every time you run the program you get a different answer.  The
whole value of this and other evolutionary methods are how good is the
fitness function.

I'm not sure how you would use evolutionary methods in an FPGA.
Unless you wanted a hardware version of what my program does... create
a set of test vectors to test your ASIC every time it boots up. But I
probably need to read Adrian's paper aswell.

It is an interesting topic even if it might only academic merit at the
present.

Here are the references for the paper I wrote on this program.

1) Rudnick, E. , "Application of Simple Genetic Algorithms to
Sequential Circuit Test
    Generation", Center for Reliable and High-Performance Computing,
University of
    Illinois, Urbana, Il 61801
2) Rudnick, E., "Sequential Circuit Test Generation in a Genetic
Algorithm Framework",
    Center for Reliable and High-Performance Computing, University of

    Illinois, Urbana, Il 61801
3) Corno, F., "A Parallel Genetic Algorithm for Automatic Generation
of Test Sequences
    for Digital Circuits", Dip. Automatica e Informatica -
Politecnico di Torino, Torino
    Italy
4) Prinetto, P., "An Automatic Test Pattern Generator for Large
Sequential Circuits
    based on Genetic Algorithms", Dip. Automatica e Informatica -
Politecnico di Torino, 
    Torino Italy

Eric Holland

I should have been more specific:
I can imagine creative and useful ways to write software, and test
vectors, i.e. zeros and ones in an evolutionary way.
I just have a hard time with evolutionary hardware, where Adrian
created a frequency discriminator that worked, but defied any method of
circuit analysis (and repeatability, and stability over temperature).
Peter Alfke (just my personal opnion).

Hello Everyone
Thanks Eric for the suggestions.Since you have been working in the area
of evolutionary algorithms, can you suggest where I could find some
examples of code that use evolutionary algorithms for electronic or
logic circuit.This would give me an idea to start with my own code.I
haven't actually seen an evolutionary algorithm being implemented in a
code.So I have absolutely no idea how it looks like.Its like learning
programming for the first time.You need to look at some programs to get
started with your own code.
Ankit




Eric wrote:
> Evolutionary Algorithms do have their place. > > During my Masters program a friend and I wrote a piece of software that > would take a logic circuit and generate a set of test vectors that > would give you the best fault coverage. > > The program did this using a "Genetic Algorithm" approach. > First a random set of test vectors were created. Then the set of > vectors were repopulated based on a fitness function. (Basically if the > test vector had a high % of fault coverage it was more likely to be > selected back in the set of vectors) After that there is a > mutation/cross over phase which adds more variants to the population. > These 3 steps are repeated until a certain % of fault coverage is > completed by a set of the vectors. > > The upside to this approach is it can be a lot faster than an > exhaustive approach, especially if the circuit is large. The downside > is every time you run the program you get a different answer. The > whole value of this and other evolutionary methods are how good is the > fitness function. > > I'm not sure how you would use evolutionary methods in an FPGA. > Unless you wanted a hardware version of what my program does... create > a set of test vectors to test your ASIC every time it boots up. But I > probably need to read Adrian's paper aswell. > > It is an interesting topic even if it might only academic merit at the > present. > > Here are the references for the paper I wrote on this program. > > 1) Rudnick, E. , "Application of Simple Genetic Algorithms to > Sequential Circuit Test > Generation", Center for Reliable and High-Performance Computing, > University of > Illinois, Urbana, Il 61801 > 2) Rudnick, E., "Sequential Circuit Test Generation in a Genetic > Algorithm Framework", > Center for Reliable and High-Performance Computing, University of > > Illinois, Urbana, Il 61801 > 3) Corno, F., "A Parallel Genetic Algorithm for Automatic Generation > of Test Sequences > for Digital Circuits", Dip. Automatica e Informatica - > Politecnico di Torino, Torino > Italy > 4) Prinetto, P., "An Automatic Test Pattern Generator for Large > Sequential Circuits > based on Genetic Algorithms", Dip. Automatica e Informatica - > Politecnico di Torino, > Torino Italy > > Eric Holland
Genetic Algorithm pseudo code:

Problem: Solve 2x+1 = 7 (we know the answer is 3, but work with me)

Step #1 Generate a Random population of numbers:

Population = 1, 6, 8, 4

Step #2 Chose a fitness function. Ours will be Error = ABS(1-(2x +
1)/7)

	Error(1) = ABS(1-(2x1+1/7)) = 0.57
	Error(6) = ABS(1-(2x6+1/7)) = 0.86
Error(8) = ABS(1-(2x8+1/7)) = 1.43
	Error(4) = ABS(1-(2x4+1/7)) = 0.29

	The number with the smallest Error is closest to the answer. (Still
with me?)

Step #3 Repopulate your population based on your fitness function
results. This is the tough part to grasp.  We need to normalize all of
the errors so we can get a repopulation percentage. This will help us
get the new population of numbers.

	Take the total of the error 0.57 + 0.86 + 1.43 + 0.29 = 3.15

3.15/0.57 = 5.53
			3.15/0.86 = 3.66
			3.15/1.43 = 2.20
			3.15/0.29 = 10.86

	Take the total of the normalized error = 5.53 + 3.66 + 2.20 + 10.86
=22.25

	Repopulation percentage for 1 = 5.53/22.25 = 25%
	Repopulation percentage for 6 = 3.66/22.25 = 16%
	Repopulation percentage for 8 = 2.20/22.25 = 10%
	Repopulation percentage for 4 = 10.86/22.25 = 49 %

So now you repopulation your population, this means if you were
generating a random number from 0-100,
if the number was 0-24 the answer would be 1.
if the number was 25-41(25+16) the answer would be 6
if the number was 42-52(42+10) the answer would be 8
if the number was 53-100 the answer would be 4

So you can see the smaller the Error the greater chance the new
population will include that number

	New Repopulation = 4, 4, 4, 1
So if you kept on repeating step 2 eventually you would have a
population of all 4's, but 4 is not the answer. So how do we get the
answer in our population if we don't have 3 in the initial
population?

The answer is step #4.

Step #4 mutation / crossover. In this example we'll just do mutation.
Just generate a random number and replace it in the population.

	New population after mutation 4, 4, 4, 9

Step #5 repeat steps 2 - 4 until total Error is acceptable. In this
case until you get an Error of 0.


Kind of make sense???


Eric

Genetic Algorithm pseudo code:

Problem: Solve 2x+1 = 7 (we know the answer is 3, but work with me)

Step #1 Generate a Random population of numbers:

Population = 1, 6, 8, 4

Step #2 Chose a fitness function. Ours will be Error = ABS(1-(2x +
1)/7)

	Error(1) = ABS(1-(2x1+1/7)) = 0.57
	Error(6) = ABS(1-(2x6+1/7)) = 0.86
        Error(8) = ABS(1-(2x8+1/7)) = 1.43
	Error(4) = ABS(1-(2x4+1/7)) = 0.29

The number with the smallest Error is closest to the answer. (Still
with me?)

Step #3 Repopulate your population based on your fitness function
results. This is the tough part to grasp.  We need to normalize all of
the errors so we can get a repopulation percentage. This will help us
get the new population of numbers.

Take the total of the error 0.57 + 0.86 + 1.43 + 0.29 = 3.15

                        3.15/0.57 = 5.53
			3.15/0.86 = 3.66
			3.15/1.43 = 2.20
			3.15/0.29 = 10.86

Take the total of the normalized error = 5.53 + 3.66 + 2.20 + 10.86
=22.25

	Repopulation percentage for 1 = 5.53/22.25 = 25%
	Repopulation percentage for 6 = 3.66/22.25 = 16%
	Repopulation percentage for 8 = 2.20/22.25 = 10%
	Repopulation percentage for 4 = 10.86/22.25 = 49 %

So now you repopulation your population, this means if you were
generating a random number from 0-100,
if the number was 0-24 the answer would be 1.
if the number was 25-41(25+16) the answer would be 6
if the number was 42-52(42+10) the answer would be 8
if the number was 53-100 the answer would be 4

So you can see the smaller the Error the greater chance the new
population will include that number

	New Repopulation = 4, 4, 4, 1
So if you kept on repeating step 2 eventually you would have a
population of all 4's, but 4 is not the answer. So how do we get the
answer in our population if we don't have 3 in the initial
population?

The answer is step #4.

Step #4 mutation / crossover. In this example we'll just do mutation.
Just generate a random number and replace it in the population.

	New population after mutation 4, 4, 4, 9

Step #5 repeat steps 2 - 4 until total Error is acceptable. In this
case until you get an Error of 0.


Kind of make sense???

I can give you sample code but it won't make sense unless you
understand the concept of evolutionary codes.

Eric