Synthesis and Verification of Digital Circuits using Functional Simulation and Boolean Satisfiability