Many HDL designers want to implement assertions and coverage in their designs to catch more bugs faster and deliver a completed design much earlier, but sometimes hesitate thinking the task is too difficult. This document tries to explain the basic ideas behind design properties, assertions and coverage, introduces languages used for assertions and coverage, and provides informative examples of their usage.