Generating netlists from executable circuit
specifications in a pure functional language
Abstract
It is easy to write a circuit specification in a pure functional
language so that execution of the specification simulates the circuit.
It's harder to make an executable specification generate the circuit's
netlist without using impure language features. The difficulty is
that a circuit specification evaluates to a graph isomorphic to the
circuit, so the specification of a circuit with feedback will evaluate
to a circular (or infinite) graph. That prevents a naive graph
traversal algorithm written in a pure functional language from
terminating. This paper solves the problem by requiring the circuit
specification to name components explicitly. With suitable higher
order functions, the naming can be achieved without placing an undue
burden on the circuit designer. This approach clarifies the
distinction between transformations that preserve both the behaviour
and structure of a circuit and transformations that preserve the
behaviour while possibly changing the structure. It also demonstrates
one way to manipulate circular graphs in a pure functional language.
The full paper
Related links
BiBTeX citation
@InProceedings{1992-OD-Netlist-FPG,
author = {John O'Donnell},
title = {Generating netlists from executable circuit specifications
in a pure functional language},
booktitle = {Functional Programming, Glasgow 1992},
pages = {178--194},
year = 1992,
series = {Workshops in Computing},
publisher = {Springer-Verlag}
}
Page maintained by John
O'Donnell, jtod@dcs.gla.ac.uk