1. A method of determining a configuration implementing a function using logic blocks of a programmable device, the method comprising: processing at least one sample function and at least one hardware configuration to determine at least one implementation of the at least one sample function with the at least one hardware configuration; analyzing a representation of each implementation of the at least one sample function with the at least one hardware configuration to identify a set of at least one relationship capable of reuse; storing the set of at least one relationship; receiving a user function to be potentially implemented with the at least one hardware configuration; creating a representation of at least one potential implementation of the user function with the at least one hardware configuration; retrieving at least a portion of the stored set of at least one relationship; augmenting the representation of at least one potential implementation of the user function with the retrieved portion of the stored set of at least one relationship; and analyzing the augmented representation of at least one potential implementation of the user function for consistency with the user function.