1. A method of determining the configuration of a programmable device, the method comprising: classifying the user design into at least one category associated with a first design goal; selecting an optimization phase associated with the category, wherein the optimization phase is adapted to optimize user designs classified in the category; and determining a set of parameters for the selected optimization phase according to the category to specify the behavior of the selected optimization phase.