Functional coverage is a user defined metric that measures the extent to which the design specification, as enumerated by features in the test plan, is exercised. It can be used to measure whether interesting scenarios, corner cases, specification invariants, or other applicable design conditions are captured as features of the test plan that are observed, validated, and tested.
The AMD Vivado™ simulator supports functional coverage. If your design contains any functional coverage statement, the tool will generate a database (coverage database). To view coverage database, Vivado simulator provides a utility named as xcrg (Xilinx Coverage Report Generator). Refer to the Vivado Design Suite User Guide: Logic Simulation (UG900) for more information on functional coverage and xcrg.
In the present example design, you will add a functional coverage code to view the utility of xcrg.