1. A method to design a circuit, comprising: converting each node representing a circuit function in a portion of a data flow graph representation of the circuit into a corresponding circuit function block; optimizing the portion of the data flow graph representation of the circuit at a circuit operation level to produce a data flow graph; and optimizing, by a data processing system, the data flow graph at a data flow level to produce an optimized data flow graph.