1. A method of mapping heterogeneous objects onto an array of heterogeneous programmable logic resources, the method comprising: clustering to identify datapath modules from a netlist; aggregating the datapath modules into higher level modules; and clustering random logic into structures.