Hardware Description with Recursion Equations

John O'Donnell

Abstract

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 first-class objects in a hardware description program. Therefore the program can directly operate on the systems of recursion equations that define 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 defining 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 definitions 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 definitions. Generation of geometric layouts requires additional information, which can be specified by the designer or generated automatically. The methodology will work in any programming language that supports first class functions, recursive functions and data, and streams or closures, and it has been implemented in Daisy and used in several hardware designs.

The full paper

Related links

BibTeX citation

@InProceedings{1987-OD-HDRE-CHDL,
  author =       {John O'Donnell},
  title =        {Hardware description with recursion equations},
  booktitle =    {Proceedings of the IFIP 8th International Symposium on
                  Computer Hardware Description Languages
                  and their Applications},
  pages =        {363--382},
  year =         1987,
  address =      {Amsterdam},
  month =        {April},
  publisher =    {North-Holland}
}


Page maintained by John O'Donnell, jtod@dcs.gla.ac.uk