diff --git a/Changes b/Changes index 7702f91a7..6e2f283fb 100644 --- a/Changes +++ b/Changes @@ -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] diff --git a/docs/guide/warnings.rst b/docs/guide/warnings.rst index 6197f8420..387530491 100644 --- a/docs/guide/warnings.rst +++ b/docs/guide/warnings.rst @@ -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 diff --git a/src/V3Error.h b/src/V3Error.h index c381ddfe7..dd69654f6 100644 --- a/src/V3Error.h +++ b/src/V3Error.h @@ -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", diff --git a/src/V3FileLine.h b/src/V3FileLine.h index 5b934416a..e885cc7cd 100644 --- a/src/V3FileLine.h +++ b/src/V3FileLine.h @@ -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); } diff --git a/src/V3Options.cpp b/src/V3Options.cpp index 85bba8027..aad0856b9 100644 --- a/src/V3Options.cpp +++ b/src/V3Options.cpp @@ -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); diff --git a/src/verilog.y b/src/verilog.y index 08ac1a969..9e292785e 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -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: // ==IEEE: value_range/open_value_range covergroup_value_range: // ==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: // IEEE: part of case_item @@ -6173,13 +6174,13 @@ concurrent_assertion_statement: // ==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: // ==IEEE: covergroup_declaration covergroup_declarationFront: // IEEE: part of covergroup_declaration yCOVERGROUP idAny { $$ = new AstConstraint{$2, *$2, nullptr}; - BBUNSUP($1, "Unsupported: covergroup"); + BBCOVERIGN($1, "Ignoring unsupported: covergroup"); SYMP->pushNew($$); } ; @@ -6686,27 +6687,27 @@ coverage_option: // ==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($1, "Unsupported: coverage option"); } + $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage option"); } ; cover_point: // ==IEEE: cover_point // // [ [ data_type_or_implicit ] cover_point_identifier ':' ] yCOVERPOINT yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($1, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverpoint"); } // // IEEE-2012: class_scope before an ID | id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($3, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($3, "Ignoring unsupported: coverpoint"); } // // data_type_or_implicit expansion | data_type id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($4, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($4, "Ignoring unsupported: coverpoint"); } | yVAR data_type id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($5, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: coverpoint"); } | yVAR implicit_typeE id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($5, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: coverpoint"); } | signingE rangeList id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($5, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: coverpoint"); } | signing id/*cover_point_id*/ ':' yCOVERPOINT expr iffE bins_or_empty - { $$ = nullptr; BBUNSUP($4, "Unsupported: cover point"); } + { $$ = nullptr; BBCOVERIGN($4, "Ignoring unsupported: coverpoint"); } // // IEEE-2012: | bins_or_empty { $$ = $1; } ; @@ -6714,7 +6715,7 @@ cover_point: // ==IEEE: cover_point iffE: // IEEE: part of cover_point, others /* empty */ { $$ = nullptr; } | yIFF '(' expr ')' - { $$ = nullptr; BBUNSUP($1, "Unsupported: cover 'iff'"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: cover 'iff'"); } ; bins_or_empty: // ==IEEE: bins_or_empty @@ -6739,24 +6740,24 @@ bins_or_options: // ==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($4, "Unsupported: cover bin specification"); } + { $$ = nullptr; BBCOVERIGN($4, "Ignoring unsupported: cover bin specification"); } | bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' yWITH__CUR '{' cgexpr '}' iffE - { $$ = nullptr; BBUNSUP($8, "Unsupported: cover bin 'with' specification"); } + { $$ = nullptr; BBCOVERIGN($8, "Ignoring unsupported: cover bin 'with' specification"); } | yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' iffE - { $$ = nullptr; BBUNSUP($5, "Unsupported: cover bin 'wildcard' specification"); } + { $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: cover bin 'wildcard' specification"); } | yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' '{' range_list '}' yWITH__CUR '{' cgexpr '}' iffE - { $$ = nullptr; BBUNSUP($9, "Unsupported: cover bin 'wildcard' 'with' specification"); } + { $$ = nullptr; BBCOVERIGN($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($4, "Unsupported: cover bin trans list"); } + { $$ = nullptr; BBCOVERIGN($4, "Ignoring unsupported: cover bin trans list"); } | yWILDCARD bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' trans_list iffE - { $$ = nullptr; BBUNSUP($1, "Unsupported: cover bin 'wildcard' trans list"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: cover bin 'wildcard' trans list"); } // | bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' yDEFAULT iffE - { $$ = nullptr; BBUNSUP($5, "Unsupported: cover bin 'default'"); } + { $$ = nullptr; BBCOVERIGN($5, "Ignoring unsupported: cover bin 'default'"); } | bins_keyword idAny/*bin_identifier*/ bins_orBraE '=' yDEFAULT ySEQUENCE iffE - { $$ = nullptr; BBUNSUP($6, "Unsupported: cover bin 'default' 'sequence'"); } + { $$ = nullptr; BBCOVERIGN($6, "Ignoring unsupported: cover bin 'default' 'sequence'"); } ; bins_orBraE: // IEEE: part of bins_or_options: @@ -6780,23 +6781,23 @@ trans_set: // ==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($2, "Unsupported: cover trans set '=>'"); } + { $$ = $1; BBCOVERIGN($2, "Ignoring unsupported: cover trans set '=>'"); } ; trans_range_list: // ==IEEE: trans_range_list trans_item { $$ = $1; } | trans_item yP_BRASTAR cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[*'"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[*'"); } | trans_item yP_BRASTAR cgexpr ':' cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[*'"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[*'"); } | trans_item yP_BRAMINUSGT cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[->'"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[->'"); } | trans_item yP_BRAMINUSGT cgexpr ':' cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[->'"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[->'"); } | trans_item yP_BRAEQ cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[='"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[='"); } | trans_item yP_BRAEQ cgexpr ':' cgexpr ']' - { $$ = nullptr; BBUNSUP($2, "Unsupported: cover '[='"); } + { $$ = nullptr; BBCOVERIGN($2, "Ignoring unsupported: cover '[='"); } ; trans_item: // ==IEEE: range_list @@ -6811,9 +6812,9 @@ covergroup_range_list: // ==IEEE: covergroup_range_list cover_cross: // ==IEEE: cover_cross id/*cover_point_identifier*/ ':' yCROSS list_of_cross_items iffE cross_body - { $$ = nullptr; BBUNSUP($3, "Unsupported: cross"); } + { $$ = nullptr; BBCOVERIGN($3, "Ignoring unsupported: cover cross"); } | yCROSS list_of_cross_items iffE cross_body - { $$ = nullptr; BBUNSUP($1, "Unsupported: cross"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: cover cross"); } ; list_of_cross_items: // ==IEEE: list_of_cross_items @@ -6855,25 +6856,25 @@ cross_body_item: // ==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: // ==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: // ==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: // ==IEEE: bins_expression coverage_eventE: // IEEE: [ coverage_event ] /* empty */ { $$ = nullptr; } | clocking_event - { $$ = nullptr; BBUNSUP($1, "Unsupported: coverage clocking event"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage clocking event"); } | yWITH__ETC yFUNCTION idAny/*"sample"*/ '(' tf_port_listE ')' - { $$ = nullptr; BBUNSUP($1, "Unsupported: coverage 'with' 'function'"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage 'with' 'function'"); } | yP_ATAT '(' block_event_expression ')' - { $$ = nullptr; BBUNSUP($1, "Unsupported: coverage '@@' events"); } + { $$ = nullptr; BBCOVERIGN($1, "Ignoring unsupported: coverage '@@' events"); } ; block_event_expression: // ==IEEE: block_event_expression @@ -7352,7 +7353,7 @@ class_item: // ==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; } diff --git a/test_regress/t/t_covergroup_unsup.out b/test_regress/t/t_covergroup_unsup.out index 808facb6d..8c27e0ad6 100644 --- a/test_regress/t/t_covergroup_unsup.out +++ b/test_regress/t/t_covergroup_unsup.out @@ -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 diff --git a/test_regress/t/t_covergroup_unsup.v b/test_regress/t/t_covergroup_unsup.v index 1d8dcade6..04d78b154 100644 --- a/test_regress/t/t_covergroup_unsup.v +++ b/test_regress/t/t_covergroup_unsup.v @@ -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; diff --git a/test_regress/t/t_covergroup_unsup_ign.py b/test_regress/t/t_covergroup_unsup_ign.py new file mode 100755 index 000000000..47c0cd627 --- /dev/null +++ b/test_regress/t/t_covergroup_unsup_ign.py @@ -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() diff --git a/test_regress/t/t_sequence_sexpr_unsup.out b/test_regress/t/t_sequence_sexpr_unsup.out index f72f26834..cdd372742 100644 --- a/test_regress/t/t_sequence_sexpr_unsup.out +++ b/test_regress/t/t_sequence_sexpr_unsup.out @@ -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