|
ABSTRACT
Partial evaluation has been known for some time to be very effective when applied to software; in this paper we demonstrate that it can also be usefully applied to hardware. We present a bit-level algorithm that supports the offline partial evaluation of synchronous digital circuits. Full PE of combinational logic is noted to be equivalent to Boolean minimisation. A loop unrolling technique, supporting both partial and full unrolling, is described. Experimental results are given, showing that partial evaluation of a simple micro-processor against a ROM image is equivalent to compiling the ROM program directly into low level hardware.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Excalibur Device Overview Data Sheet, V2.0. Altera, 2002. DS-EXCARM-2.0.
|
| |
2
|
Quartus II Development Software Handbook, V4.0. Altera, 2004.
|
| |
3
|
|
 |
4
|
Per Bjesse , Koen Claessen , Mary Sheeran , Satnam Singh, Lava: hardware design in Haskell, Proceedings of the third ACM SIGPLAN international conference on Functional programming, p.174-184, September 26-29, 1998, Baltimore, Maryland, United States
|
| |
5
|
Celoxica. Handel-C language reference manual. Available from http://www.celoxica.com/.
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
 |
9
|
|
| |
10
|
Futamura, Y. Partial evaluation of computation process -- an approach to a compiler-compiler. In Systems, Computers, Control (1971), vol. 2 issue 5, pp. 45--50.
|
| |
11
|
|
| |
12
|
|
| |
13
|
Lombardi, L. Incremental computation. In Advances in Computers, vol. 8, F. Alt and M. Rubinoff, Eds. New York: Academic Press, 1967, pp. 247--333.
|
| |
14
|
Lombardi, L., and Raphael, B. Lisp as the language for an incremental computer. In The Programming Language Lisp: Its Operation and Applications (1964), E. Berkeley and D. Bobrow, Eds., Cambridge, MA: MIT Press, pp. 204--219.
|
| |
15
|
|
| |
16
|
|
| |
17
|
Mealy, G. H. A method for synthesizing sequential circuits. In Bell System Technical Journal (1955), vol. 34, pp. 1045--1079.
|
| |
18
|
Mycroft, A., and Jones, N. D. A relational framework for abstract interpretation. In Lecture Notes in Computer Science: Proc. Copenhagen workshop on programs as data objects (1984), vol. 215, Springer-Verlag.
|
| |
19
|
|
| |
20
|
Page, I., and Luk, W. Compiling Occam into FPGAs. In FPGAs, W. Moore and W. Luk, Eds. Abingdon EE&CS Books, 1991, pp. 271--283.
|
| |
21
|
|
| |
22
|
Thompson, S. Hardware web site. http://harpe.findatlantis.com/.
|
| |
23
|
Thompson, S. Hardware compilation as an alternative computation architecture. Master's thesis, University of Teesside, 1991.
|
| |
24
|
Thompson, S., and Mycroft, A. Abstract interpretation of combinational asynchronous circuits. In 11th International Static Analysis Symposium (SAS'04) (2004), R. Giacobazzi, Ed., vol. 3148 of Lecture Notes in Computer Science, Springer-Verlag, pp. 181--196.
|
| |
25
|
Thompson, S., and Mycroft, A. Sliding window logic simulation. In 15th UK Asynchronous Forum (2004), Cambridge. Available from http://findatlantis.com/.
|
| |
26
|
Thompson, S., Mycroft, A., Brat, G., and Venet, A. Automatic in-flight repair of FPGA cosmic ray damage. In Proc. 1st Disruption in Space Symposium (July 2005).
|
| |
27
|
Veldhuizen, T. Using C++ template metaprograms. C++ Report 7, 4 (May 1995), 36--43. Reprinted in C++ Gems, ed. Stanley Lippman.
|
| |
28
|
Veldhuizen, T. L. C++ templates as partial evaluation. In Proceedings of PEPM'99. The ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, ed. O. Danvy, San Antonio (Jan. 1999), University of Aarhus, Dept. of Computer Science, pp. 13--18.
|
|