Methods and apparatus are provided for more efficiently implementing error
checking code circuitry on a programmable chip. In one example, Cyclic
Redundancy Check (CRC) exclusive OR (XOR) circuitry is decomposed to
allow efficient implementation on lookup tables (LUTs) of various sizes
on a device. XOR cancellation factoring is used to break up wide CRC XORs
into blocks that fit in various LUTs while maintaining focus on
minimizing logic depth and logic area. Simulated annealing is used to
further reduce logic area cost.