Hardware Design Verification: Simulation and Formal Method-Based Approaches