Boolean Matching for Complex PLBs in LUT based FPGAs with Application to Architecture Evaluation