What do the terms code coverage and functional coverage refer to when it comes to digital design verification
Code coverage means that you have verified all of the lines of code in the design.  For example, if there is an if statement, you have checked both branches.

Functional coverage is where you have verified all of the scenarios that the design is to be used.  These scenarios are generally from a user or a system point of view.

Just to give another point of view, these are similar to white-box testing vs. black-box testing.

White-box testing (also called clear-box testing) is where you know about the internals of the design, and are testing everything from this point of view.  One form of this is code coverage testing.

Black-box is where the tester/test doesn't know the internals and is trying to determine if the design is meeting design specifications from a user point of view.  This is functional testing.