Formal Methods For Hardware Verification by Marco Bernardo