This document discusses code coverage and functional coverage. It defines code coverage as measuring how much of the source code is tested by verification. It describes different types of code coverage like statement coverage, block coverage, conditional coverage, branch coverage, path coverage, toggle coverage and FSM coverage. It then discusses functional coverage, which measures how much of the specification is covered, rather than just the code. It notes some advantages of functional coverage over code coverage.