1. A method for compiling a user design for an integrated circuit, the method comprising: specifying a design space comprising a first set of input parameters whose values determine characteristics of the user design; reducing size of the design space by applying, using a computer system, at least one optimization technique to eliminate at least one input parameter from the design space to create a second set of input parameters that is a subset of the first set of input parameters; dividing the second set of input parameters into a plurality of subsets of input parameters; evaluating, using the computer system, the plurality of subsets of parameters, wherein evaluating the plurality of subsets of parameters comprises iteratively performing the following steps, using the computer system, for each of the plurality of subsets of parameters: selecting a subset of parameters from the plurality of subsets of parameters, compiling the user design with selected subset of input parameters, and determining whether the compiled user design exceeds a set of best performance results; and if the compiled user design exceeds as set of best performance results, using the computer system to update the set of best performance results to represent performance results for the compiled user design and to store the selected subset of input parameters as best set of performance parameters.