1. A method of designing a circuit comprising the steps of: graphically representing both control flow and data flow of the circuit using control primitives and data oriented primitives, said control primitives being indicative of circuit state transitions and said data oriented primitives being indicative of selected datapath elements as affected by said circuit state transitions, such that functional and structural elements of the circuit representation are intermixed; recursively analyzing said graphical representation to produce a textual representation of said circuit, said textual representation being suitable for synthesizing a logic design of the circuit.