SV
covergroup_declaration ::=
covergroup covergroup_id [ ( [ tf_port_list ] ) ] [ coverage_event ] ;
{ coverage_spec_or_option }
endgroup [ : covergroup_id ]
coverage_event ::=
clocking_event
| with function sample ( [ tf_port_list ] )
| @@ ( block_event_expression )
coverage_spec_or_option ::=
{ attribute_instance } coverage_spec | { attribute_instance } coverage_option ;
coverage_spec ::= cover_point | cover_cross
coverage_option ::=
option.member_id = expression
| type_option.member_id = constant_expression
coverpoint ::=
[ [ data_type_or_implicit ] cover_point_id : ] coverpoint expression [ iff ( expressoin ) ] bins_or_empty
bins_or_empty ::=
{ { attribute_instance } { bins_or_options ; } }
| ;
bins_or_options ::=
coverage_option
| [ wildcard ] bins_kw bin_id [ [ [ covergroup_exp ] ] ] = { cg_range_list }
[ with ( with_cg_exp ) ] [ iff ( exp ) ]
| [ wildcard ] bins_kw bin_id [ [ [ covergroup_exp ] ] ] = cover_point_id
[ with ( with_cg_exp ) ] [ iff ( exp ) ]
| [ wildcard ] bins_kw bin_id [ [ [ covergroup_exp ] ] ] = set_cg_exp [ iff ( exp ) ]
| [ wildcard ] bins_kw bin_id [ [ ] ] = trans_list [ iff ( exp ) ]
| bins_kw bin_id [ [ [ cg_exp ] ] ] = default [ iff ( exp ) ]
| bons_kw bin_id = default sequece [ iff ( exp ) ]
bins_kw ::= bins | illegal_bins | ignore_bins
cg_range_list ::= cg_value_range { , cg_value_range }
cg_value_range ::= cg_exp | [ cg_exp : cg_exp ]
cover_cross ::=
[ cross_id : ] cross list_of_cross_items [ iff ( exp ) ] cross_body
list_of_cross_items ::= cross_item , cross_item { , cross_item }
cross_item ::= cover_point_id | var_id
cross_body ::= { { cross_body_item ; } } | ;
cross_body_item ::=
function_decl
| bins_selection_or_option ;
bins_selection_or_option ::=
{ attribute_instance } coverage_option
| { attribute_instance } bins_selection
bins_selection ::= bins_kw bin_id = select_expression [ iff ( exp ) ]
select_expression ::=
select_condition
| ! select_condition
| select_expression && select_expression
| select_expression || select_expression
| ( select_expression )
| select_expression with ( with_cg_exp ) [ matches integer_cg_exp ]
| cross_id
| cross_set_exp [ matches integer_cg_exp ]
select_condition ::= binsof ( bins_exp ) [ intersect { cg_rang_list } ]
bins_exp ::= var_id | cover_point_id [ . bin_id ]