Hardware Description with Recursion Equations

Using a stream to represent the full history of the sequence of values on a wire in a circuit makes it possible to treat components and their ports as rst-class objects in a hardware description program. Therefore the program can directly operate on the systems of recursion equations that deene the inputs and outputs of components. This provides the foundation for a simple, yet powerful, hardware description methodology that can be implemented in many existing programming languages simply by deening a library of basic functions. A hardware designer doesn't need to write equations for all the components in a circuit; it is often better to write higher order functions that generate the lexically nested systems of recursion equations that correspond to the levels of abstraction of the circuit. Furthermore, a programming language implementation can directly interpret the hardware description, using a set of function deenitions for the primitive components in the hardware. The designer can extract alternative meanings from a single hardware description | such as a simulation function and a component/wiring list | simply by providing alternative sets of primitive function deenitions. Generation of geometric layouts requires additional information, which can be speciied by the designer or generated automatically. The methodology will work in any programming language that supports rst class functions, recursive functions and data, and streams or closures, and it has been implemented in Daisy and used in several hardware designs.

[1]  C. L. Hamblin,et al.  Computer Languages , 1985, Aust. Comput. J..

[2]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.

[3]  Peter P. Schoderbek,et al.  APPLICATION AND IMPLEMENTATION , 1973 .

[4]  Robin Milner The standard ML core language , 1984 .

[5]  Mary Sheeran,et al.  Designing Regular Array Architectures using Higher Order Functions , 1985, FPCA.

[6]  J. Vuillemin,et al.  Recursive implementation of optimal time VLSi integer multipliers , 1984 .

[7]  John T. O'Donnell A systolic associative lisp computer architecture with incremental parallel storage management , 1981 .

[8]  J. W. Backus,et al.  Can programming be liberated from the von Neumann style , 1977 .

[9]  R. J. Fryer VLSI: Silicon compilation and the art of automatic microchip design: Ronald F. Ayres, Prentice-Hall International (1983) 481 pp., £44·95 , 1984 .

[10]  Peter Henderson Functional geometry , 1982, LFP '82.

[11]  Steven D. Johnson Synthesis of digital designs from recursion equations , 1983 .

[12]  Milos D. Ercegovac,et al.  vFP: An Environment for the Multi-level Specification, Analysis, and Synthesis of Hardware Algorithms , 1985, FPCA.

[13]  Steven D. Johnson,et al.  Circuits and Systems: Implementing Communication with Streams , 1982, IMACS World Congress.

[14]  Michael J. C. Gordon,et al.  Why higher-order logic is a good formalism for specifying and verifying hardware , 1985 .

[15]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[16]  奥乃博 1984 ACM Symposium on LISP and Functional Programming報告 , 1984 .

[17]  Steven D. Johnson Applicative programming and digital design , 1984, POPL '84.

[18]  Peter Henderson,et al.  Functional programming - application and implementation , 1980, Prentice Hall International Series in Computer Science.

[19]  E. A. Ashcroft,et al.  LUCID: The data flow programming language , 1985 .

[20]  Daniel P. Friedman,et al.  Functional Combination , 1978, Comput. Lang..

[21]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[22]  Ben C. Moszkowski,et al.  Executing temporal logic programs , 1986, Seminar on Concurrency.

[23]  Lynn Conway,et al.  Introduction to VLSI systems , 1978 .

[24]  Guy L. Steele,et al.  Proceedings of the 1984 ACM Symposium on LISP and functional programming , 1982 .