Patent ID: 7386828

Claim:
A method of determining a configuration implementing a function using logic blocks of a programmable device, the method comprising: (a) receiving a function including a set of function input variables and a hardware configuration for potentially implementing the function, wherein the hardware configuration includes at least one logic block, wherein each logic block includes at least one logic block input; (b) creating a partitioning of the set of function input variables, wherein the partitioning includes an assignment to each logic block of the hardware configuration of at least a subset of the function input variables, such that the union of all of the assigned subsets is equal to the set of function input variables; (c) creating an approximation of an implementation of the function with the hardware configuration and the partitioning of the set of function input variables; (d) analyzing the approximation of the implementation for consistency with the function; and (e) in response to a determination that the approximation of the implementation is consistent with the function: creating a refinement of the implementation of the function with the hardware configuration, wherein the refinement is consistent with the partitioning of the set of function input variables; analyzing the refinement of the implementation for consistency with the function; and in response to a determination that the refinement of the implementation is consistent with the function, providing implementation data.