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
Where can i find GeneticFPGA toolkit
Started by ●August 4, 2005
Reply by ●August 4, 20052005-08-04
<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
Reply by ●August 4, 20052005-08-04
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
Reply by ●August 4, 20052005-08-04
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
Reply by ●August 4, 20052005-08-04
Ankit, I am the wrong person to ask, for I, personally, find the whole subject bogus. But that's my problem... Peter Alfke
Reply by ●August 4, 20052005-08-04
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
Reply by ●August 4, 20052005-08-04
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).
Reply by ●August 6, 20052005-08-06
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
Reply by ●August 6, 20052005-08-06
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
Reply by ●August 6, 20052005-08-06
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





