ABSTRACT
In this paper, we present a VLSI design language μFP, which is a variant of Backus' FP [Backus 78, 81]. μFP differs from conventional VLSI design languages in that it can describe both the semantics (or behaviour) of a circuit and its layout (or floorplan) [Sheeran 83].
We chose to base our design language on FP for several reasons. Functional programs are easier to write and to reason about than imperative ones. We hope to bring some of these benefits to IC design. FP, in particular, is designed to allow the programmer to reason about his or her programs by manipulating the programs themselves. Likewise, in μFP, programs (or circuit descriptions) are just expressions “made” from a small number of primitive functions and combining forms (functionals that map functions into functions). These functions and combining forms (CFs) were chosen because they have nice algebraic properties. Thus, circuit descriptions are concise and can be easily manipulated using the algebraic laws of the language. Also, each CF has a simple geometric interpretation, so that every μFP expression has an associated floorplan. This interpretation exists because μFP expressions represent functions rather than objects, allowing us to associate a function with each section of the floorplan. Most VLSI design languages are designed either for layout description or for behavioural specification. μFP, with its dual interpretation, allows the designer to consider the effect on the final layout of a particular design decision or to manipulate the layout while keeping the semantics constant. In the following sections, we show how μFP is constructed from FP by the addition of a single combining form μ, which encapsulates a very simple notion of “state”.
- 1.J. Backus: "Can Programming Be Liberated from the von Neumann Style?" Communications of the A.C.M., Vol. 21, No. 8, pp 613-641, Aug. 1978. Google ScholarDigital Library
- 2.J. Backus: "The Algebra of Functional Programs: Function Level Reasoning, Linear Equations, and Extended Definitions" Proc. Symposium on Functional Languages and Computer Architecture, Gothenberg, June 1981.Google ScholarCross Ref
- 3.S. Finn: "LVIS - A VLSI Transformation System" M. Sc. Dissertation, Programming Research Group, University of Oxford, Sept. 1983.Google Scholar
- 4.P. Henderson: "Functional Geometry" Proc. A.C.M. Symposium on LISP and Functional Programming, 1982. Google ScholarDigital Library
- 5.P. Henderson, G. A. Jones, S. B. Jones: "The LispKit Manual, Volume 1" Tech. Monograph PRG-32(1), Programming Research Group, University of Oxford, June 1983.Google Scholar
- 6.C. Mead, L. Conway: "Introduction to VLSI Systems" Addison-Wesley, 1980. Google ScholarDigital Library
- 7.M. Sheeran: "Functional Geometry and Integrated Circuit Layout" M. Sc. Dissertation, Programming Research Group, University of Oxford, Sept. 1981.Google Scholar
- 8.M. Sheeran: " &mgr;FP, an Algebraic VLSI Design Language" D.Phil. Thesis, Programming Research Group, University of Oxford, 1983.Google Scholar
- 9.J. Williams: "Notes on the FP Style of Functional Programming" in "Functional Programming and its Applications", Cambridge University Press, 1981.Google Scholar
Index Terms
- muFP, a language for VLSI design
Recommendations
Layout-sensitive language extensibility with SugarHaskell
Haskell '12: Proceedings of the 2012 Haskell SymposiumProgrammers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Language Design for Program Manipulation
The design of procedural and object-oriented programming languages is considered with respect to how easily programs written in those languages can be formally manipulated. Current procedural languages such as Pascal, Modula-2 and Ada; generally support ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Comments