While I do agree that hardware engineering generally employs more verification and validation, look at the errata sheets for modern processors. They have a lot of bugs as well--most of which are patched in microcode (software) or handled by operating system kernels (also software).
Because most of it is software anyway. Unless the CPU is something ridiculously simple, like an 8-bit microcontroler, a lot of the instructions are executed by microcode stored in ROM on the CPU. What those patches do is load a replacement software in RAM at boot time.