1. A method for designing a circuit comprising: generating a block diagram corresponding to the circuit according to an external specification associated with the circuit, each block in the block diagram having a block specification associated therewith; generating a design file for each block in the block diagram using the associated block specification and one of a plurality of design file templates; implementing each block in the block diagram by editing its corresponding design file; simulating operation of each block in the block diagram; compiling a compiled design for the circuit; and after compiling the compiled design, incorporating first changes into the compiled design in response to second changes in at least one design file through the use of software links maintained between the compiled design and the at least one design file; wherein generating the block diagram and the design file for each block, implementing and simulating each block, compiling the compiled design, and incorporating the first changes into the compiled design are all done under software control.