1. A method of designing configurable processors comprising the steps of: selecting, through a graphical user interface, processor functionality for a first processor; and automatically building, based upon the selected processor functionality, a first processor design, the first processor design including (1) a description of a hardware implementation of the first processor, and (2) software development tools specific to the hardware implementation.