Add COVERIGN warning, as a more specific UNSUPPORTED error.

This commit is contained in:
Wilson Snyder 2025-01-06 18:48:32 -05:00
parent 481adf8fe7
commit e171463fa2
10 changed files with 225 additions and 184 deletions

View File

@ -13,6 +13,7 @@ Verilator 5.033 devel
**Minor:**
* Add COVERIGN warning, as a more specific UNSUPPORTED error.
* Support generated classes (#5665). [Shou-Li Hsu]
* Support `+incdir` with multiple directories.
* Fix error message when call task as a function (#3089). [Matthew Ballance]

View File

@ -445,6 +445,18 @@ List Of Warnings
correctly.
.. option:: COVERIGN
Warns that Verilator does not support certain forms of
:code:`covergroup`, :code:`coverpoint`, and coverage options, and the
construct was are ignored.
Disabling the :option:`UNSUPPORTED` error also disables this warning.
Ignoring this warning may make Verilator ignore lint checking on the
construct, and collect coverage data differently from other simulators.
.. option:: DECLFILENAME
.. TODO better example

View File

@ -88,6 +88,7 @@ public:
COMBDLY, // Combinatorial delayed assignment
CONSTRAINTIGN, // Constraint ignored
CONTASSREG, // Continuous assignment on reg
COVERIGN, // Coverage ignored
DECLFILENAME, // Declaration doesn't match filename
DEFPARAM, // Style: Defparam
DEPRECATED, // Feature will be deprecated
@ -194,7 +195,7 @@ public:
"ALWCOMBORDER", "ASCRANGE", "ASSIGNDLY", "ASSIGNIN", "BADSTDPRAGMA",
"BLKANDNBLK", "BLKLOOPINIT", "BLKSEQ", "BSSPACE",
"CASEINCOMPLETE", "CASEOVERLAP", "CASEWITHX", "CASEX", "CASTCONST", "CDCRSTLOGIC", "CLKDATA",
"CMPCONST", "COLONPLUS", "COMBDLY", "CONSTRAINTIGN", "CONTASSREG",
"CMPCONST", "COLONPLUS", "COMBDLY", "CONSTRAINTIGN", "CONTASSREG", "COVERIGN",
"DECLFILENAME", "DEFPARAM", "DEPRECATED",
"ENCAPSULATED", "ENDLABEL", "ENUMVALUE", "EOFNEWLINE", "GENCLK",
"GENUNNAMED", "HIERBLOCK",

View File

@ -275,6 +275,7 @@ public:
warnOn(V3ErrorCode::WIDTHEXPAND, flag);
warnOn(V3ErrorCode::WIDTHXZEXPAND, flag);
}
if (code == V3ErrorCode::E_UNSUPPORTED) warnOn(V3ErrorCode::COVERIGN, flag);
m_msgEnIdx = singleton().msgEnSetBit(m_msgEnIdx, code, flag);
}
void warnOff(V3ErrorCode code, bool flag) { warnOn(code, !flag); }

View File

@ -1744,6 +1744,12 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc,
V3Error::pretendError(V3ErrorCode::UNUSEDSIGNAL, false);
V3Error::pretendError(V3ErrorCode::UNUSEDPARAM, false);
});
DECL_OPTION("-Wwarn-UNSUPPORTED", CbCall, []() {
FileLine::globalWarnOff(V3ErrorCode::E_UNSUPPORTED, false);
FileLine::globalWarnOff(V3ErrorCode::COVERIGN, false);
V3Error::pretendError(V3ErrorCode::E_UNSUPPORTED, false);
V3Error::pretendError(V3ErrorCode::COVERIGN, false);
});
DECL_OPTION("-Wwarn-WIDTH", CbCall, []() {
FileLine::globalWarnOff(V3ErrorCode::WIDTH, false);
V3Error::pretendError(V3ErrorCode::WIDTH, false);

View File

@ -37,6 +37,7 @@
// Pick up new lexer
#define yylex PARSEP->tokenToBison
#define BBCOVERIGN(fl, msg) (fl)->v3warn(COVERIGN, msg)
#define BBUNSUP(fl, msg) (fl)->v3warn(E_UNSUPPORTED, msg)
#define GATEUNSUP(fl, tok) \
{ BBUNSUP((fl), "Unsupported: Verilog 1995 gate primitive: " << (tok)); }
@ -3947,16 +3948,16 @@ value_range<nodeExprp>: // ==IEEE: value_range/open_value_range
covergroup_value_range<nodeExprp>: // ==IEEE-2012: covergroup_value_range
cgexpr { $$ = $1; }
| '[' cgexpr ':' cgexpr ']'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: covergroup value range"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: covergroup value range"); }
// // IEEE-2023: added all four:
// // Skipped as '$' is part of our expr
// // IEEE-2023: '[' '$' ':' cgexpr ']'
// // Skipped as '$' is part of our expr
// // IEEE-2023: '[' cgexpr ':' '$' ']'
| '[' cgexpr yP_PLUSSLASHMINUS cgexpr ']'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: covergroup value range"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: covergroup value range"); }
| '[' cgexpr yP_PLUSPCTMINUS cgexpr ']'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: covergroup value range"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: covergroup value range"); }
;
caseCondList<nodeExprp>: // IEEE: part of case_item
@ -6173,13 +6174,13 @@ concurrent_assertion_statement<nodep>: // ==IEEE: concurrent_assertion_statemen
{ $$ = new AstCover{$1, $4, $6, VAssertType::CONCURRENT}; }
// // IEEE: cover_sequence_statement
| yCOVER ySEQUENCE '(' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
{ $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover sequence"); }
// // IEEE: yCOVER ySEQUENCE '(' clocking_event sexpr ')' stmt
// // sexpr already includes "clocking_event sexpr"
| yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
{ $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover sequence"); }
| yCOVER ySEQUENCE '(' yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
{ $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover sequence"); }
// // IEEE: restrict_property_statement
| yRESTRICT yPROPERTY '(' property_spec ')' ';'
{ $$ = new AstRestrict{$1, $4}; }
@ -6656,7 +6657,7 @@ covergroup_declaration<nodep>: // ==IEEE: covergroup_declaration
covergroup_declarationFront<constraintp>: // IEEE: part of covergroup_declaration
yCOVERGROUP idAny
{ $$ = new AstConstraint{$<fl>2, *$2, nullptr};
BBUNSUP($<fl>1, "Unsupported: covergroup");
BBCOVERIGN($<fl>1, "Ignoring unsupported: covergroup");
SYMP->pushNew($<constraintp>$); }
;
@ -6686,27 +6687,27 @@ coverage_option<nodep>: // ==IEEE: coverage_option
// // option/type_option aren't really keywords
id/*yOPTION | yTYPE_OPTION*/ '.' idAny/*member_identifier*/ '=' expr
{ // TODO: check that 'id' is 'option' or 'type_option'
$$ = nullptr; BBUNSUP($<fl>1, "Unsupported: coverage option"); }
$$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: coverage option"); }
;
cover_point<nodep>: // ==IEEE: cover_point
// // [ [ data_type_or_implicit ] cover_point_identifier ':' ] yCOVERPOINT
yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: coverpoint"); }
// // IEEE-2012: class_scope before an ID
| id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>3, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>3, "Ignoring unsupported: coverpoint"); }
// // data_type_or_implicit expansion
| data_type id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>4, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>4, "Ignoring unsupported: coverpoint"); }
| yVAR data_type id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>5, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>5, "Ignoring unsupported: coverpoint"); }
| yVAR implicit_typeE id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>5, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>5, "Ignoring unsupported: coverpoint"); }
| signingE rangeList id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>5, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>5, "Ignoring unsupported: coverpoint"); }
| signing id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty
{ $$ = nullptr; BBUNSUP($<fl>4, "Unsupported: cover point"); }
{ $$ = nullptr; BBCOVERIGN($<fl>4, "Ignoring unsupported: coverpoint"); }
// // IEEE-2012:
| bins_or_empty { $$ = $1; }
;
@ -6714,7 +6715,7 @@ cover_point<nodep>: // ==IEEE: cover_point
iffE<nodep>: // IEEE: part of cover_point, others
/* empty */ { $$ = nullptr; }
| yIFF '(' expr ')'
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: cover 'iff'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: cover 'iff'"); }
;
bins_or_empty<nodep>: // ==IEEE: bins_or_empty
@ -6739,24 +6740,24 @@ bins_or_options<nodep>: // ==IEEE: bins_or_options
coverage_option { $$ = $1; }
// // Can't use wildcardE as results in conflicts
| bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' iffE
{ $$ = nullptr; BBUNSUP($<fl>4, "Unsupported: cover bin specification"); }
{ $$ = nullptr; BBCOVERIGN($<fl>4, "Ignoring unsupported: cover bin specification"); }
| bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' yWITH__CUR '{' cgexpr '}' iffE
{ $$ = nullptr; BBUNSUP($<fl>8, "Unsupported: cover bin 'with' specification"); }
{ $$ = nullptr; BBCOVERIGN($<fl>8, "Ignoring unsupported: cover bin 'with' specification"); }
| yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' iffE
{ $$ = nullptr; BBUNSUP($<fl>5, "Unsupported: cover bin 'wildcard' specification"); }
{ $$ = nullptr; BBCOVERIGN($<fl>5, "Ignoring unsupported: cover bin 'wildcard' specification"); }
| yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' yWITH__CUR '{' cgexpr '}' iffE
{ $$ = nullptr; BBUNSUP($<fl>9, "Unsupported: cover bin 'wildcard' 'with' specification"); }
{ $$ = nullptr; BBCOVERIGN($<fl>9, "Ignoring unsupported: cover bin 'wildcard' 'with' specification"); }
//
// // cgexpr part of trans_list
| bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' trans_list iffE
{ $$ = nullptr; BBUNSUP($<fl>4, "Unsupported: cover bin trans list"); }
{ $$ = nullptr; BBCOVERIGN($<fl>4, "Ignoring unsupported: cover bin trans list"); }
| yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' trans_list iffE
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: cover bin 'wildcard' trans list"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: cover bin 'wildcard' trans list"); }
//
| bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' yDEFAULT iffE
{ $$ = nullptr; BBUNSUP($<fl>5, "Unsupported: cover bin 'default'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>5, "Ignoring unsupported: cover bin 'default'"); }
| bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' yDEFAULT ySEQUENCE iffE
{ $$ = nullptr; BBUNSUP($<fl>6, "Unsupported: cover bin 'default' 'sequence'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>6, "Ignoring unsupported: cover bin 'default' 'sequence'"); }
;
bins_orBraE<nodep>: // IEEE: part of bins_or_options:
@ -6780,23 +6781,23 @@ trans_set<nodep>: // ==IEEE: trans_set
trans_range_list { $$ = $1; }
// // Note the { => } in the grammar, this is really a list
| trans_set yP_EQGT trans_range_list
{ $$ = $1; BBUNSUP($<fl>2, "Unsupported: cover trans set '=>'"); }
{ $$ = $1; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover trans set '=>'"); }
;
trans_range_list<nodep>: // ==IEEE: trans_range_list
trans_item { $$ = $1; }
| trans_item yP_BRASTAR cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[*'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[*'"); }
| trans_item yP_BRASTAR cgexpr ':' cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[*'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[*'"); }
| trans_item yP_BRAMINUSGT cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[->'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[->'"); }
| trans_item yP_BRAMINUSGT cgexpr ':' cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[->'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[->'"); }
| trans_item yP_BRAEQ cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[='"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[='"); }
| trans_item yP_BRAEQ cgexpr ':' cgexpr ']'
{ $$ = nullptr; BBUNSUP($<fl>2, "Unsupported: cover '[='"); }
{ $$ = nullptr; BBCOVERIGN($<fl>2, "Ignoring unsupported: cover '[='"); }
;
trans_item<nodep>: // ==IEEE: range_list
@ -6811,9 +6812,9 @@ covergroup_range_list<nodep>: // ==IEEE: covergroup_range_list
cover_cross<nodep>: // ==IEEE: cover_cross
id/*cover_point_identifier*/ ':' yCROSS list_of_cross_items iffE cross_body
{ $$ = nullptr; BBUNSUP($<fl>3, "Unsupported: cross"); }
{ $$ = nullptr; BBCOVERIGN($<fl>3, "Ignoring unsupported: cover cross"); }
| yCROSS list_of_cross_items iffE cross_body
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: cross"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: cover cross"); }
;
list_of_cross_items<nodep>: // ==IEEE: list_of_cross_items
@ -6855,25 +6856,25 @@ cross_body_item<nodep>: // ==IEEE: cross_body_item
coverage_option { $$ = $1; }
// // IEEE: bins_selection
| function_declaration
{ $$ = $1; BBUNSUP($1->fileline(), "Unsupported: coverage cross 'function' declaration"); }
{ $$ = $1; BBCOVERIGN($1->fileline(), "Ignoring unsupported: coverage cross 'function' declaration"); }
| bins_keyword idAny/*new-bin_identifier*/ '=' select_expression iffE
{ $$ = nullptr; BBUNSUP($1, "Unsupported: coverage cross bin"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage cross bin"); }
;
select_expression<nodep>: // ==IEEE: select_expression
// // IEEE: select_condition expanded here
yBINSOF '(' bins_expression ')'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: coverage select expression 'binsof'"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage select expression 'binsof'"); }
| '!' yBINSOF '(' bins_expression ')'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: coverage select expression 'binsof'"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage select expression 'binsof'"); }
| yBINSOF '(' bins_expression ')' yINTERSECT '{' covergroup_range_list '}'
{ $$ = nullptr; BBUNSUP($5, "Unsupported: coverage select expression 'intersect'"); }
{ $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: coverage select expression 'intersect'"); }
| '!' yBINSOF '(' bins_expression ')' yINTERSECT '{' covergroup_range_list '}' { }
{ $$ = nullptr; BBUNSUP($5, "Unsupported: coverage select expression 'intersect'"); }
{ $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: coverage select expression 'intersect'"); }
| yWITH__PAREN '(' cgexpr ')'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: coverage select expression with"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage select expression with"); }
| '!' yWITH__PAREN '(' cgexpr ')'
{ $$ = nullptr; BBUNSUP($1, "Unsupported: coverage select expression with"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage select expression with"); }
// // IEEE-2012: Need clarification as to precedence
//UNSUP yWITH__PAREN '(' cgexpr ')' yMATCHES cgexpr { }
// // IEEE-2012: Need clarification as to precedence
@ -6881,13 +6882,13 @@ select_expression<nodep>: // ==IEEE: select_expression
//
| '(' select_expression ')' { $$ = $2; }
| select_expression yP_ANDAND select_expression
{ $$ = nullptr; BBUNSUP($2, "Unsupported: coverage select expression '&&'"); }
{ $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: coverage select expression '&&'"); }
| select_expression yP_OROR select_expression
{ $$ = nullptr; BBUNSUP($2, "Unsupported: coverage select expression '||'"); }
{ $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: coverage select expression '||'"); }
// // IEEE-2012: cross_identifier
// // Part of covergroup_expression - generic identifier
// // IEEE-2012: Need clarification as to precedence
//UNSUP cgexpr { $$ = nullptr; BBUNSUP($1, "Unsupported: coverage select expression"); }
//UNSUP cgexpr { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage select expression"); }
//
// // Need precedence fix
//UNSUP cgexpr yMATCHES cgexpr {..}
@ -6904,11 +6905,11 @@ bins_expression<nodep>: // ==IEEE: bins_expression
coverage_eventE<nodep>: // IEEE: [ coverage_event ]
/* empty */ { $$ = nullptr; }
| clocking_event
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: coverage clocking event"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: coverage clocking event"); }
| yWITH__ETC yFUNCTION idAny/*"sample"*/ '(' tf_port_listE ')'
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: coverage 'with' 'function'"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: coverage 'with' 'function'"); }
| yP_ATAT '(' block_event_expression ')'
{ $$ = nullptr; BBUNSUP($<fl>1, "Unsupported: coverage '@@' events"); }
{ $$ = nullptr; BBCOVERIGN($<fl>1, "Ignoring unsupported: coverage '@@' events"); }
;
block_event_expression<nodep>: // ==IEEE: block_event_expression
@ -7352,7 +7353,7 @@ class_item<nodep>: // ==IEEE: class_item
{ $$ = nullptr; BBUNSUP($1, "Unsupported: class within class"); }
| timeunits_declaration { $$ = $1; }
| covergroup_declaration
{ $$ = nullptr; BBUNSUP($1, "Unsupported: covergroup within class"); }
{ $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: covergroup within class"); }
// // local_parameter_declaration under parameter_declaration
| parameter_declaration ';' { $$ = $1; }
| ';' { $$ = nullptr; }

View File

@ -1,383 +1,384 @@
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:25:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:25:4: Ignoring unsupported: covergroup
25 | covergroup cg_empty;
| ^~~~~~~~~~
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:28:4: Unsupported: covergroup
... For warning description see https://verilator.org/warn/COVERIGN?v=latest
... Use "/* verilator lint_off COVERIGN */" and lint_on around source to disable this message.
%Warning-COVERIGN: t/t_covergroup_unsup.v:28:4: Ignoring unsupported: covergroup
28 | covergroup cg_opt;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:29:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:29:7: Ignoring unsupported: coverage option
29 | type_option.weight = 1;
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:30:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:30:7: Ignoring unsupported: coverage option
30 | type_option.goal = 99;
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:31:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:31:7: Ignoring unsupported: coverage option
31 | type_option.comment = "type_option_comment";
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:32:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:32:7: Ignoring unsupported: coverage option
32 | type_option.strobe = 0;
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:33:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:33:7: Ignoring unsupported: coverage option
33 | type_option.merge_instances = 1;
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:34:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:34:7: Ignoring unsupported: coverage option
34 | type_option.distribuge_first = 1;
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:35:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:35:7: Ignoring unsupported: coverage option
35 | option.name = "the_name";
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:36:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:36:7: Ignoring unsupported: coverage option
36 | option.weight = 1;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:37:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:37:7: Ignoring unsupported: coverage option
37 | option.goal = 98;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:38:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:38:7: Ignoring unsupported: coverage option
38 | option.comment = "option_comment";
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:39:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:39:7: Ignoring unsupported: coverage option
39 | option.at_least = 20;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:40:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:40:7: Ignoring unsupported: coverage option
40 | option.auto_bin_max = 10;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:41:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:41:7: Ignoring unsupported: coverage option
41 | option.cross_num_print_missing = 2;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:42:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:42:7: Ignoring unsupported: coverage option
42 | option.detect_overlap = 1;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:43:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:43:7: Ignoring unsupported: coverage option
43 | option.per_instance = 1;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:44:7: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:44:7: Ignoring unsupported: coverage option
44 | option.get_inst_coverage = 1;
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:47:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:47:4: Ignoring unsupported: covergroup
47 | covergroup cg_clockingevent() @(posedge clk);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:47:34: Unsupported: coverage clocking event
%Warning-COVERIGN: t/t_covergroup_unsup.v:47:34: Ignoring unsupported: coverage clocking event
47 | covergroup cg_clockingevent() @(posedge clk);
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:49:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:49:4: Ignoring unsupported: covergroup
49 | covergroup cg_withfunction() with function sample (a);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:49:33: Unsupported: coverage 'with' 'function'
%Warning-COVERIGN: t/t_covergroup_unsup.v:49:33: Ignoring unsupported: coverage 'with' 'function'
49 | covergroup cg_withfunction() with function sample (a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:51:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:51:4: Ignoring unsupported: covergroup
51 | covergroup cg_atat() @@ (begin funca or end funcb);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:51:25: Unsupported: coverage '@@' events
%Warning-COVERIGN: t/t_covergroup_unsup.v:51:25: Ignoring unsupported: coverage '@@' events
51 | covergroup cg_atat() @@ (begin funca or end funcb);
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:53:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:53:4: Ignoring unsupported: covergroup
53 | covergroup cg_bracket;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:56:4: Unsupported: covergroup
56 | covergroup cg_bracket;
%Warning-COVERIGN: t/t_covergroup_unsup.v:56:4: Ignoring unsupported: covergroup
56 | covergroup cg_bracket2;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:57:9: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:57:9: Ignoring unsupported: coverage option
57 | { option.name = "option"; }
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:59:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:59:4: Ignoring unsupported: covergroup
59 | covergroup cg_cp;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:60:7: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:60:7: Ignoring unsupported: coverpoint
60 | coverpoint a;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:62:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:62:4: Ignoring unsupported: covergroup
62 | covergroup cg_cp_iff;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:63:20: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:63:20: Ignoring unsupported: cover 'iff'
63 | coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:63:7: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:63:7: Ignoring unsupported: coverpoint
63 | coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:65:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:65:4: Ignoring unsupported: covergroup
65 | covergroup cg_id_cp_iff;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:66:24: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:66:24: Ignoring unsupported: cover 'iff'
66 | id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:66:11: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:66:11: Ignoring unsupported: coverpoint
66 | id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:68:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:68:4: Ignoring unsupported: covergroup
68 | covergroup cg_id_cp_id1;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:69:28: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:69:28: Ignoring unsupported: cover 'iff'
69 | int id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:69:15: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:69:15: Ignoring unsupported: coverpoint
69 | int id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:71:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:71:4: Ignoring unsupported: covergroup
71 | covergroup cg_id_cp_id2;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:72:32: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:72:32: Ignoring unsupported: cover 'iff'
72 | var int id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:72:19: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:72:19: Ignoring unsupported: coverpoint
72 | var int id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:74:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:74:4: Ignoring unsupported: covergroup
74 | covergroup cg_id_cp_id3;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:75:34: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:75:34: Ignoring unsupported: cover 'iff'
75 | var [3:0] id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:75:21: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:75:21: Ignoring unsupported: coverpoint
75 | var [3:0] id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:77:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:77:4: Ignoring unsupported: covergroup
77 | covergroup cg_id_cp_id4;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:78:30: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:78:30: Ignoring unsupported: cover 'iff'
78 | [3:0] id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:78:17: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:78:17: Ignoring unsupported: coverpoint
78 | [3:0] id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:80:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:80:4: Ignoring unsupported: covergroup
80 | covergroup cg_id_cp_id5;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:81:31: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:81:31: Ignoring unsupported: cover 'iff'
81 | signed id: coverpoint a iff (b);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:81:18: Unsupported: cover point
%Warning-COVERIGN: t/t_covergroup_unsup.v:81:18: Ignoring unsupported: coverpoint
81 | signed id: coverpoint a iff (b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:84:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:84:4: Ignoring unsupported: covergroup
84 | covergroup cg_cross;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:85:18: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:85:18: Ignoring unsupported: cover 'iff'
85 | cross a, b iff (!rst);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:85:7: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:85:7: Ignoring unsupported: cover cross
85 | cross a, b iff (!rst);
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:87:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:87:4: Ignoring unsupported: covergroup
87 | covergroup cg_cross2;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:88:18: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:88:18: Ignoring unsupported: cover 'iff'
88 | cross a, b iff (!rst) {}
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:88:7: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:88:7: Ignoring unsupported: cover cross
88 | cross a, b iff (!rst) {}
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:90:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:90:4: Ignoring unsupported: covergroup
90 | covergroup cg_cross3;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:91:20: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:91:20: Ignoring unsupported: coverage option
91 | cross a, b { option.comment = "cross"; option.weight = 12; }
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:91:46: Unsupported: coverage option
%Warning-COVERIGN: t/t_covergroup_unsup.v:91:46: Ignoring unsupported: coverage option
91 | cross a, b { option.comment = "cross"; option.weight = 12; }
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:91:7: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:91:7: Ignoring unsupported: cover cross
91 | cross a, b { option.comment = "cross"; option.weight = 12; }
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:93:4: Unsupported: covergroup
93 | covergroup cg_cross3;
%Warning-COVERIGN: t/t_covergroup_unsup.v:93:4: Ignoring unsupported: covergroup
93 | covergroup cg_cross4;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:94:34: Unsupported: coverage cross 'function' declaration
%Warning-COVERIGN: t/t_covergroup_unsup.v:94:34: Ignoring unsupported: coverage cross 'function' declaration
94 | cross a, b { function void crossfunc; endfunction; }
| ^~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:94:7: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:94:7: Ignoring unsupported: cover cross
94 | cross a, b { function void crossfunc; endfunction; }
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:96:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:96:4: Ignoring unsupported: covergroup
96 | covergroup cg_cross_id;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:97:28: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:97:28: Ignoring unsupported: cover 'iff'
97 | my_cg_id: cross a, b iff (!rst);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:97:17: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:97:17: Ignoring unsupported: cover cross
97 | my_cg_id: cross a, b iff (!rst);
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:100:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:100:4: Ignoring unsupported: covergroup
100 | covergroup cg_binsoroptions_bk1;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:102:17: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:102:17: Ignoring unsupported: cover bin specification
102 | { bins ba = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:103:24: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:103:24: Ignoring unsupported: cover 'iff'
103 | { bins bar = {a} iff (!rst); }
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:103:18: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:103:18: Ignoring unsupported: cover bin specification
103 | { bins bar = {a} iff (!rst); }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:104:26: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:104:26: Ignoring unsupported: cover bin specification
104 | { illegal_bins ila = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:105:25: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:105:25: Ignoring unsupported: cover bin specification
105 | { ignore_bins iga = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:107:19: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:107:19: Ignoring unsupported: cover bin specification
107 | { bins ba[] = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:108:20: Unsupported: cover bin specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:108:20: Ignoring unsupported: cover bin specification
108 | { bins ba[2] = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:110:23: Unsupported: cover bin 'with' specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:110:23: Ignoring unsupported: cover bin 'with' specification
110 | { bins ba = {a} with { b }; }
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:112:27: Unsupported: cover bin 'wildcard' specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:112:27: Ignoring unsupported: cover bin 'wildcard' specification
112 | { wildcard bins bwa = {a}; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:113:34: Unsupported: cover bin 'wildcard' 'with' specification
%Warning-COVERIGN: t/t_covergroup_unsup.v:113:34: Ignoring unsupported: cover bin 'wildcard' 'with' specification
113 | { wildcard bins bwaw = {a} with { b }; }
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:115:20: Unsupported: cover bin 'default'
%Warning-COVERIGN: t/t_covergroup_unsup.v:115:20: Ignoring unsupported: cover bin 'default'
115 | { bins def = default; }
| ^~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:116:29: Unsupported: cover bin 'default' 'sequence'
%Warning-COVERIGN: t/t_covergroup_unsup.v:116:29: Ignoring unsupported: cover bin 'default' 'sequence'
116 | { bins defs = default sequence; }
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:118:18: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:118:18: Ignoring unsupported: cover bin trans list
118 | { bins bts = ( 1, 2 ); }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:119:9: Unsupported: cover bin 'wildcard' trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:119:9: Ignoring unsupported: cover bin 'wildcard' trans list
119 | { wildcard bins wbts = ( 1, 2 ); }
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:120:33: Unsupported: covergroup value range
%Warning-COVERIGN: t/t_covergroup_unsup.v:120:33: Ignoring unsupported: covergroup value range
120 | { bins bts2 = ( 2, 3 ), ( [5:6] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:120:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:120:19: Ignoring unsupported: cover bin trans list
120 | { bins bts2 = ( 2, 3 ), ( [5:6] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:122:27: Unsupported: cover trans set '=>'
%Warning-COVERIGN: t/t_covergroup_unsup.v:122:27: Ignoring unsupported: cover trans set '=>'
122 | { bins bts2 = ( 1,5 => 6,7 ) ; }
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:122:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:122:19: Ignoring unsupported: cover bin trans list
122 | { bins bts2 = ( 1,5 => 6,7 ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:123:25: Unsupported: cover '[*'
%Warning-COVERIGN: t/t_covergroup_unsup.v:123:25: Ignoring unsupported: cover '[*'
123 | { bins bts2 = ( 3 [*5] ) ; }
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:123:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:123:19: Ignoring unsupported: cover bin trans list
123 | { bins bts2 = ( 3 [*5] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:124:25: Unsupported: cover '[*'
%Warning-COVERIGN: t/t_covergroup_unsup.v:124:25: Ignoring unsupported: cover '[*'
124 | { bins bts2 = ( 3 [*5:6] ) ; }
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:124:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:124:19: Ignoring unsupported: cover bin trans list
124 | { bins bts2 = ( 3 [*5:6] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:125:25: Unsupported: cover '[->'
%Warning-COVERIGN: t/t_covergroup_unsup.v:125:25: Ignoring unsupported: cover '[->'
125 | { bins bts2 = ( 3 [->5] ) ; }
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:125:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:125:19: Ignoring unsupported: cover bin trans list
125 | { bins bts2 = ( 3 [->5] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:126:25: Unsupported: cover '[->'
%Warning-COVERIGN: t/t_covergroup_unsup.v:126:25: Ignoring unsupported: cover '[->'
126 | { bins bts2 = ( 3 [->5:6] ) ; }
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:126:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:126:19: Ignoring unsupported: cover bin trans list
126 | { bins bts2 = ( 3 [->5:6] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:127:25: Unsupported: cover '[='
%Warning-COVERIGN: t/t_covergroup_unsup.v:127:25: Ignoring unsupported: cover '[='
127 | { bins bts2 = ( 3 [=5] ) ; }
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:127:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:127:19: Ignoring unsupported: cover bin trans list
127 | { bins bts2 = ( 3 [=5] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:128:25: Unsupported: cover '[='
%Warning-COVERIGN: t/t_covergroup_unsup.v:128:25: Ignoring unsupported: cover '[='
128 | { bins bts2 = ( 3 [=5:6] ) ; }
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:128:19: Unsupported: cover bin trans list
%Warning-COVERIGN: t/t_covergroup_unsup.v:128:19: Ignoring unsupported: cover bin trans list
128 | { bins bts2 = ( 3 [=5:6] ) ; }
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:132:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:132:4: Ignoring unsupported: covergroup
132 | covergroup cg_cross_bins;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:134:23: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:134:23: Ignoring unsupported: coverage select expression 'binsof'
134 | bins bin_a = binsof(a);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:134:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:134:10: Ignoring unsupported: coverage cross bin
134 | bins bin_a = binsof(a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:135:24: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:135:24: Ignoring unsupported: coverage select expression 'binsof'
135 | bins bin_ai = binsof(a) iff (!rst);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:135:34: Unsupported: cover 'iff'
%Warning-COVERIGN: t/t_covergroup_unsup.v:135:34: Ignoring unsupported: cover 'iff'
135 | bins bin_ai = binsof(a) iff (!rst);
| ^~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:135:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:135:10: Ignoring unsupported: coverage cross bin
135 | bins bin_ai = binsof(a) iff (!rst);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:136:23: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:136:23: Ignoring unsupported: coverage select expression 'binsof'
136 | bins bin_c = binsof(cp.x);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:136:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:136:10: Ignoring unsupported: coverage cross bin
136 | bins bin_c = binsof(cp.x);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:137:24: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:137:24: Ignoring unsupported: coverage select expression 'binsof'
137 | bins bin_na = ! binsof(a);
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:137:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:137:10: Ignoring unsupported: coverage cross bin
137 | bins bin_na = ! binsof(a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:139:33: Unsupported: coverage select expression 'intersect'
%Warning-COVERIGN: t/t_covergroup_unsup.v:139:33: Ignoring unsupported: coverage select expression 'intersect'
139 | bins bin_d = binsof(a) intersect { b };
| ^~~~~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:139:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:139:10: Ignoring unsupported: coverage cross bin
139 | bins bin_d = binsof(a) intersect { b };
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:140:34: Unsupported: coverage select expression 'intersect'
%Warning-COVERIGN: t/t_covergroup_unsup.v:140:34: Ignoring unsupported: coverage select expression 'intersect'
140 | bins bin_nd = ! binsof(a) intersect { b };
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:140:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:140:10: Ignoring unsupported: coverage cross bin
140 | bins bin_nd = ! binsof(a) intersect { b };
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:142:23: Unsupported: coverage select expression with
%Warning-COVERIGN: t/t_covergroup_unsup.v:142:23: Ignoring unsupported: coverage select expression with
142 | bins bin_e = with (a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:142:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:142:10: Ignoring unsupported: coverage cross bin
142 | bins bin_e = with (a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:143:23: Unsupported: coverage select expression with
%Warning-COVERIGN: t/t_covergroup_unsup.v:143:23: Ignoring unsupported: coverage select expression with
143 | bins bin_e = ! with (a);
| ^
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:143:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:143:10: Ignoring unsupported: coverage cross bin
143 | bins bin_e = ! with (a);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:145:26: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:145:26: Ignoring unsupported: coverage select expression 'binsof'
145 | bins bin_par = (binsof(a));
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:145:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:145:10: Ignoring unsupported: coverage cross bin
145 | bins bin_par = (binsof(a));
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:146:25: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:146:25: Ignoring unsupported: coverage select expression 'binsof'
146 | bins bin_and = binsof(a) && binsof(b);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:146:38: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:146:38: Ignoring unsupported: coverage select expression 'binsof'
146 | bins bin_and = binsof(a) && binsof(b);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:146:35: Unsupported: coverage select expression '&&'
%Warning-COVERIGN: t/t_covergroup_unsup.v:146:35: Ignoring unsupported: coverage select expression '&&'
146 | bins bin_and = binsof(a) && binsof(b);
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:146:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:146:10: Ignoring unsupported: coverage cross bin
146 | bins bin_and = binsof(a) && binsof(b);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:147:24: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:147:24: Ignoring unsupported: coverage select expression 'binsof'
147 | bins bin_or = binsof(a) || binsof(b);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:147:37: Unsupported: coverage select expression 'binsof'
%Warning-COVERIGN: t/t_covergroup_unsup.v:147:37: Ignoring unsupported: coverage select expression 'binsof'
147 | bins bin_or = binsof(a) || binsof(b);
| ^~~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:147:34: Unsupported: coverage select expression '||'
%Warning-COVERIGN: t/t_covergroup_unsup.v:147:34: Ignoring unsupported: coverage select expression '||'
147 | bins bin_or = binsof(a) || binsof(b);
| ^~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:147:10: Unsupported: coverage cross bin
%Warning-COVERIGN: t/t_covergroup_unsup.v:147:10: Ignoring unsupported: coverage cross bin
147 | bins bin_or = binsof(a) || binsof(b);
| ^~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:133:7: Unsupported: cross
%Warning-COVERIGN: t/t_covergroup_unsup.v:133:7: Ignoring unsupported: cover cross
133 | cross a, b {
| ^~~~~
%Error-UNSUPPORTED: t/t_covergroup_unsup.v:151:4: Unsupported: covergroup
%Warning-COVERIGN: t/t_covergroup_unsup.v:151:4: Ignoring unsupported: covergroup
151 | covergroup cg_more extends cg_empty;
| ^~~~~~~~~~
%Error: Exiting due to

View File

@ -53,7 +53,7 @@ module t (/*AUTOARG*/
covergroup cg_bracket;
{}
endgroup
covergroup cg_bracket;
covergroup cg_bracket2;
{ option.name = "option"; }
endgroup
covergroup cg_cp;
@ -90,7 +90,7 @@ module t (/*AUTOARG*/
covergroup cg_cross3;
cross a, b { option.comment = "cross"; option.weight = 12; }
endgroup
covergroup cg_cross3;
covergroup cg_cross4;
cross a, b { function void crossfunc; endfunction; }
endgroup
covergroup cg_cross_id;

View File

@ -0,0 +1,17 @@
#!/usr/bin/env python3
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
#
# Copyright 2024 by Wilson Snyder. This program is free software; you
# can redistribute it and/or modify it under the terms of either the GNU
# Lesser General Public License Version 3 or the Perl Artistic License
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
import vltest_bootstrap
test.scenarios('vlt')
test.top_filename = "t/t_covergroup_unsup.v"
test.lint(verilator_flags2=['--assert --coverage --Wno-COVERIGN'])
test.passes()

View File

@ -230,13 +230,14 @@
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:126:7: Unsupported: first_match (in sequence expression)
126 | first_match (a, res0 = 1, res1 = 2);
| ^~~~~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:129:10: Unsupported: cover sequence
%Warning-COVERIGN: t/t_sequence_sexpr_unsup.v:129:10: Ignoring unsupported: cover sequence
129 | cover sequence (s_a) $display("");
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:130:10: Unsupported: cover sequence
... Use "/* verilator lint_off COVERIGN */" and lint_on around source to disable this message.
%Warning-COVERIGN: t/t_sequence_sexpr_unsup.v:130:10: Ignoring unsupported: cover sequence
130 | cover sequence (@(posedge a) disable iff (b) s_a) $display("");
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:131:10: Unsupported: cover sequence
%Warning-COVERIGN: t/t_sequence_sexpr_unsup.v:131:10: Ignoring unsupported: cover sequence
131 | cover sequence (disable iff (b) s_a) $display("");
| ^~~~~~~~
%Error: Exiting due to