Efficient machine-code test-program induction

Technology advances allow integrating an entire system on a single chip, including memories and peripherals. The testing of these devices is becoming a major issue for chip manufacturing industries. This paper presents a methodology, similar to genetic programming, for inducing test programs. However, it includes the ability to explicitly specify registers and resorts to directed acyclic graphs instead of trees. Moreover, it exploits a database containing the assembly-level semantics associated with each graph node. This approach is extremely efficient and versatile: candidate solutions are translated into source-code programs allowing millions of evaluations per second. The proposed approach is extremely versatile: the macro library allows the target processor and the environment to be changed easily. The approach was verified on three processors with different instruction sets, different formalisms and different conventions. A complete set of experiments on a test function is also reported for the SPARC processor.

[1]  Christos A. Papachristou,et al.  Instruction randomization self test for processor cores , 1999, Proceedings 17th IEEE VLSI Test Symposium (Cat. No.PR00146).

[2]  Riccardo Poli,et al.  Evolution of Graph-Like Programs with Parallel Distributed Genetic Programming , 1997, ICGA.

[3]  Christos A. Papachristou,et al.  Microprocessor based testing for core-based system on chip , 1999, DAC '99.

[4]  Richard M. Friedberg,et al.  A Learning Machine: Part I , 1958, IBM J. Res. Dev..

[5]  J. Koza,et al.  Fourteen Instances where Genetic Programming has Produced Results that are Competitive with Results Produced by Humans , 1998 .

[6]  A. Fukunaga,et al.  A Genome Complier for High-Performance Genetic Programming , 1998 .

[7]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[8]  Corporate SPARC architecture manual - version 8 , 1992 .

[9]  Giovanni Squillero,et al.  Effective techniques for high-level ATPG , 2001, Proceedings 10th Asian Test Symposium.

[10]  Sujit Dey,et al.  DEFUSE: a deterministic functional self-test methodology for processors , 2000, Proceedings 18th IEEE VLSI Test Symposium.

[11]  Jian Shen,et al.  Functional verification of the equator MAP1000 microprocessor , 1999, DAC '99.

[12]  Giovanni Squillero,et al.  On the test of microprocessor IP cores , 2001, Proceedings Design, Automation and Test in Europe. Conference and Exhibition 2001.

[13]  John Paul Shen,et al.  Superscalar processor validation at the microarchitecture level , 1999, Proceedings Twelfth International Conference on VLSI Design. (Cat. No.PR00013).

[14]  Richard M. Stallman,et al.  Using and Porting GNU CC , 1998 .

[15]  Peter Nordin,et al.  A compiling genetic programming system that directly manipulates the machine-code , 1994 .

[16]  Arthur L. Samuel,et al.  Some Studies in Machine Learning Using the Game of Checkers , 1967, IBM J. Res. Dev..

[17]  Jack Belzer,et al.  Encyclopedia of Computer Science and Technology , 2002 .

[18]  Simon Handley,et al.  On the use of a directed acyclic graph to represent a population of computer programs , 1994, Proceedings of the First IEEE Conference on Evolutionary Computation. IEEE World Congress on Computational Intelligence.