<XML><RECORDS><RECORD><REFERENCE_TYPE>3</REFERENCE_TYPE><REFNUM>7065</REFNUM><AUTHORS><AUTHOR>O'Donnell,J.T.</AUTHOR></AUTHORS><YEAR>1992</YEAR><TITLE>Generating netlists from executable circuit specifications in a pure functional language</TITLE><PLACE_PUBLISHED>Functional Programming, Glasgow 1992, Springer Workshops in Computing </PLACE_PUBLISHED><PUBLISHER>Springer Verlag</PUBLISHER><PAGES>178-194</PAGES><ISBN>ISBN 3-540-19820-2</ISBN><LABEL>O'Donnell:1992:7065</LABEL><KEYWORDS><KEYWORD>netlist</KEYWORD></KEYWORDS<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.</ABSTRACT></RECORD></RECORDS></XML>