1. A method to automatically generate a custom integrated circuit (IC) design, comprising: a. receiving at a computer a specification of the custom IC including computer readable code to be executed by the custom IC; b. generating an abstraction of the IC as a system, processor architecture and micro-architecture (SAMA) representation; c. providing the SAMA representation to a data model having at least an architecture optimization view, a physical design view, and a software tool view; d. optimizing the processor architecture by iteratively updating the SAMA representation and the data model to automatically generate a processor architecture uniquely customized to the computer readable code which satisfies one or more constraints; e. automatically and iteratively generate a customized computer architecture for the computer readable code that best fits the constraints with an application specific instruction set; and f. synthesizing the generated architecture into a computer readable description of the custom integrated circuit for semiconductor fabrication.