1. A computer implemented method comprising: automatically decomposing a hardware system into a set of one or more units; creating a testbench for each of the set of units; and verifying each of the set of units before verifying the hardware system.