Using Formal Methods to Verify Complex Designs