Patent attributes
A hardware accelerator factors functions during the compilation of a user design. The hardware accelerator includes cofactor units, each adapted to determine a cofactor of a function in response to a specified factorization and a set of input values. The factorization specifies the constant function inputs and varying function inputs. Each cofactor unit determines the cofactor of the function in response to a different constant value. The hardware accelerator operates all of the cofactor units simultaneously to determine some or all of the cofactors of a function for a factorization in parallel. Signature generators determine attributes of the cofactors. A signature analyzer uses these attributes to identify identical cofactors, constant cofactors, and inverse cofactors. The signature analyzer returns potentially optimal factorizations to compilation software applications for possible incorporation into user designs. The hardware accelerator may be implemented using a programmable device, such as the FPGA or other programmable device.