Automatic Test Pattern Generation Using Formal Verification and Fault Injection Methods