Functional coverage perceives the design from a user's or a system point of view. It checks whether all typical scenarios, error cases, corner cases, and protocols are covered in the verification system. Functional coverage also measures if all important combinations of input stimulus have been exercised at different states of the DUT.
A coverage group is a struct member defined by the cover keyword. A coverage group contains a description of data items for which data are collected over time. A coverage group has an associated event that tells when to sample data. The event must be declared in the same struct as the coverage group.
Coverage groups can also be extended like any other struct members using the is also keyword.
There may be three types of items in a coverage group: basic coverage items, transition items, and cross items.
A basic coverage item can be one of the following three elements: a field in the local e struct, a field in another e struct in the hierarchy, or an HDL signal or register. A basic coverage item can be specified with options that control how coverage data are collected and reported for the item.
Transition coverage items record the change in the item's value between two consecutive samplings of the item. Transition items are very useful for covering DUT state machines.
Cross coverage items provide a cross product (matrix) of two or more previously declared basic items. It is possible to create a cross of any number of basic or transition items declared in the same coverage group. A cross can be created either from e code or from the coverage user interface of Specman Elite.
Latency coverage requires comparison of the time an activity ends with the time that activity started. There are no built-in constructs provided by e for latency coverage. However, it is easily possible to perform latency coverage by use of e.