Parse 'sequence' declarations, property case/if, still unsupported.

This commit is contained in:
Wilson Snyder 2023-03-06 05:12:09 -05:00
parent 87c3de5aab
commit 725ec088ea
9 changed files with 531 additions and 372 deletions

View File

@ -564,7 +564,7 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5}
"ref" { FL; return yREF; }
"restrict" { FL; return yRESTRICT; }
"return" { FL; return yRETURN; }
"sequence" { ERROR_RSVD_WORD("SystemVerilog 2005"); }
"sequence" { FL; return ySEQUENCE; }
"shortint" { FL; return ySHORTINT; }
"shortreal" { FL; return ySHORTREAL; }
"solve" { FL; return ySOLVE; }

View File

@ -710,7 +710,7 @@ BISONPRE_VERSION(3.7,%define api.header.include {"V3ParseBison.h"})
%token<fl> yRTRANIF0 "rtranif0"
%token<fl> yRTRANIF1 "rtranif1"
%token<fl> ySCALARED "scalared"
//UNSUP %token<fl> ySEQUENCE "sequence"
%token<fl> ySEQUENCE "sequence"
%token<fl> ySHORTINT "shortint"
%token<fl> ySHORTREAL "shortreal"
%token<fl> ySIGNED "signed"
@ -2509,10 +2509,11 @@ implicit_typeE<nodeDTypep>: // IEEE: part of *data_type_or_implicit
{ $$ = new AstBasicDType{$<fl>1, LOGIC_IMPLICIT, $1}; }
;
//UNSUPassertion_variable_declaration: // IEEE: assertion_variable_declaration
//UNSUP // // IEEE: var_data_type expanded
//UNSUP var_data_type list_of_variable_decl_assignments ';' { }
//UNSUP ;
assertion_variable_declaration<nodep>: // IEEE: assertion_variable_declaration
// // IEEE: var_data_type expanded
var_data_type { VARRESET_NONLIST(VAR); VARDTYPE_NDECL($1); }
/*cont*/ list_of_variable_decl_assignments ';' { $$ = $3; }
;
type_declaration<nodep>: // ==IEEE: type_declaration
// Data_type expanded
@ -5685,8 +5686,8 @@ cycle_delay<delayp>: // IEEE: cycle_delay
assertion_item_declaration<nodep>: // ==IEEE: assertion_item_declaration
property_declaration { $$ = $1; }
//UNSUP | sequence_declaration { $$ = $1; }
//UNSUP | let_declaration { $$ = $1; }
| sequence_declaration { $$ = $1; }
//UNSUP let_declaration { $$ = $1; }
;
assertion_item<nodep>: // ==IEEE: assertion_item
@ -5780,15 +5781,20 @@ concurrent_assertion_statement<nodep>: // ==IEEE: concurrent_assertion_statemen
{ $$ = new AstAssert{$1, new AstSampled{$1, $4}, nullptr, $6, false}; }
//UNSUP yASSUME yPROPERTY '(' property_spec ')' action_block { }
// // IEEE: cover_property_statement
| yCOVER yPROPERTY '(' property_spec ')' stmtBlock { $$ = new AstCover{$1, $4, $6, false}; }
| yCOVER yPROPERTY '(' property_spec ')' stmtBlock
{ $$ = new AstCover{$1, $4, $6, false}; }
// // IEEE: cover_sequence_statement
//UNSUP yCOVER ySEQUENCE '(' sexpr ')' stmt { }
| yCOVER ySEQUENCE '(' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
// // IEEE: yCOVER ySEQUENCE '(' clocking_event sexpr ')' stmt
// // sexpr already includes "clocking_event sexpr"
//UNSUP yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt { }
//UNSUP yCOVER ySEQUENCE '(' yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt { }
| yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
| yCOVER ySEQUENCE '(' yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt
{ $$ = nullptr; BBUNSUP($2, "Unsupported: cover sequence"); }
// // IEEE: restrict_property_statement
| yRESTRICT yPROPERTY '(' property_spec ')' ';' { $$ = new AstRestrict{$1, $4}; }
| yRESTRICT yPROPERTY '(' property_spec ')' ';'
{ $$ = new AstRestrict{$1, $4}; }
;
elseStmtBlock<nodep>: // Part of concurrent_assertion_statement
@ -5799,20 +5805,20 @@ elseStmtBlock<nodep>: // Part of concurrent_assertion_statement
property_declaration<nodeFTaskp>: // ==IEEE: property_declaration
property_declarationFront property_port_listE ';' property_declarationBody
yENDPROPERTY endLabelE
{ $$ = $1;
$$->addStmtsp($2);
$$->addStmtsp($4);
SYMP->popScope($$);
GRAMMARP->endLabel($<fl>6, $$, $6);
GRAMMARP->m_insideProperty = false;
GRAMMARP->m_typedPropertyPort = false; }
{ $$ = $1;
$$->addStmtsp($2);
$$->addStmtsp($4);
SYMP->popScope($$);
GRAMMARP->endLabel($<fl>6, $$, $6);
GRAMMARP->m_insideProperty = false;
GRAMMARP->m_typedPropertyPort = false; }
;
property_declarationFront<nodeFTaskp>: // IEEE: part of property_declaration
yPROPERTY idAny/*property_identifier*/
{ $$ = new AstProperty{$1, *$2, nullptr};
GRAMMARP->m_insideProperty = true;
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
{ $$ = new AstProperty{$<fl>2, *$2, nullptr};
GRAMMARP->m_insideProperty = true;
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
;
property_port_listE<nodep>: // IEEE: [ ( [ property_port_list ] ) ]
@ -5848,71 +5854,83 @@ property_port_itemFront: // IEEE: part of property_port_item/sequence_port_item
property_port_itemAssignment<nodep>: // IEEE: part of property_port_item/sequence_port_item/checker_port_direction
id variable_dimensionListE { $$ = VARDONEA($<fl>1, *$1, $2, nullptr); }
//UNSUP | id variable_dimensionListE '=' property_actual_arg
//UNSUP { VARDONE($<fl>1, $1, $2, $4); PINNUMINC(); }
//UNSUP|id variable_dimensionListE '=' property_actual_arg
//UNSUP { VARDONE($<fl>1, $1, $2, $4); PINNUMINC(); }
;
property_port_itemDirE:
/* empty */ { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
//UNSUP | yLOCAL__ETC { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
//UNSUP | yLOCAL__ETC yINPUT { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
//UNSUP|yLOCAL__ETC { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
//UNSUP|yLOCAL__ETC yINPUT { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
;
property_declarationBody<nodep>: // IEEE: part of property_declaration
//UNSUP assertion_variable_declarationList property_statement_spec { }
//UNSUP // // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here.
//UNSUP // // Fixed in IEEE 1800-2017
//UNSUP assertion_variable_declarationList property_statement_spec {}
// // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here.
// // Fixed in IEEE 1800-2017
property_spec { $$ = $1; }
| property_spec ';' { $$ = $1; }
;
//UNSUPassertion_variable_declarationList<nodep>: // IEEE: part of assertion_variable_declaration
//UNSUP assertion_variable_declaration { $$ = $1; }
//UNSUP | assertion_variable_declarationList assertion_variable_declaration { }
//UNSUP ;
assertion_variable_declarationList<nodep>: // IEEE: part of assertion_variable_declaration
assertion_variable_declaration { $$ = $1; }
| assertion_variable_declarationList assertion_variable_declaration
{ $$ = addNextNull($1, $2); }
;
//UNSUPsequence_declaration<nodep>: // ==IEEE: sequence_declaration
//UNSUP sequence_declarationFront sequence_port_listE ';' sequence_declarationBody
//UNSUP yENDSEQUENCE endLabelE
//UNSUP { SYMP->popScope($$); }
//UNSUP ;
sequence_declaration<nodeFTaskp>: // ==IEEE: sequence_declaration
sequence_declarationFront sequence_port_listE ';' sequence_declarationBody
/*cont*/ yENDSEQUENCE endLabelE
{ $$ = $1;
$$->addStmtsp($2);
$$->addStmtsp($4);
SYMP->popScope($$);
GRAMMARP->endLabel($<fl>6, $$, $6); }
;
//UNSUPsequence_declarationFront<nodep>: // IEEE: part of sequence_declaration
//UNSUP ySEQUENCE idAny/*new_sequence*/
//UNSUP { SYMP->pushNew($$); }
//UNSUP ;
sequence_declarationFront<nodeFTaskp>: // IEEE: part of sequence_declaration
ySEQUENCE idAny/*new_sequence*/
{ BBUNSUP($1, "Unsupported: sequence");
$$ = new AstProperty{$<fl>2, *$2, nullptr};
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
;
//UNSUPsequence_port_listE<nodep>: // IEEE: [ ( [ sequence_port_list ] ) ]
//UNSUP // // IEEE: sequence_lvar_port_direction ::= yINPUT | yINOUT | yOUTPUT
//UNSUP // // IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type
//UNSUP // // id {variable_dimension} [ '=' sequence_actual_arg ]
//UNSUP // // All this is almost identically the same as a property.
//UNSUP // // Difference is only yINOUT/yOUTPUT (which might be added to 1800-2012)
//UNSUP // // and yPROPERTY. So save some work.
//UNSUP property_port_listE { $$ = $1; }
//UNSUP ;
sequence_port_listE<nodep>: // IEEE: [ ( [ sequence_port_list ] ) ]
// // IEEE: sequence_lvar_port_direction ::= yINPUT | yINOUT | yOUTPUT
// // IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type
// // id {variable_dimension} [ '=' sequence_actual_arg ]
// // All this is almost identically the same as a property.
// // Difference is only yINOUT/yOUTPUT (which might be added to 1800-2012)
// // and yPROPERTY. So save some work.
property_port_listE { $$ = $1; }
;
property_formal_typeNoDt<nodeDTypep>: // IEEE: property_formal_type (w/o implicit)
sequence_formal_typeNoDt { $$ = $1; }
//UNSUP | yPROPERTY { }
| yPROPERTY
{ $$ = nullptr; GRAMMARP->m_typedPropertyPort = false;
BBUNSUP($1, "Unsupported: property argument data type"); }
;
sequence_formal_typeNoDt<nodeDTypep>: // ==IEEE: sequence_formal_type (w/o data_type_or_implicit)
// // IEEE: data_type_or_implicit
// // implicit expanded where used
//UNSUP ySEQUENCE { }
// // IEEE-2009: yEVENT
// // already part of data_type. Removed in 1800-2012.
yUNTYPED { $$ = nullptr; GRAMMARP->m_typedPropertyPort = false; }
// IEEE: data_type_or_implicit
// implicit expanded where used
ySEQUENCE
{ $$ = nullptr; GRAMMARP->m_typedPropertyPort = false;
BBUNSUP($1, "Unsupported: sequence argument data type"); }
// IEEE-2009: yEVENT
// already part of data_type. Removed in 1800-2012.
| yUNTYPED
{ $$ = nullptr; GRAMMARP->m_typedPropertyPort = false; }
;
//UNSUPsequence_declarationBody<nodep>: // IEEE: part of sequence_declaration
//UNSUP // // 1800-2012 makes ';' optional
//UNSUP assertion_variable_declarationList sexpr { }
//UNSUP | assertion_variable_declarationList sexpr ';' { }
//UNSUP | sexpr { $$ = $1; }
//UNSUP | sexpr ';' { $$ = $1; }
//UNSUP ;
sequence_declarationBody<nodep>: // IEEE: part of sequence_declaration
// // 1800-2012 makes ';' optional
assertion_variable_declarationList sexpr { $$ = addNextNull($1, $2); }
| assertion_variable_declarationList sexpr ';' { $$ = addNextNull($1, $2); }
| sexpr { $$ = $1; }
| sexpr ';' { $$ = $1; }
;
property_spec<propSpecp>: // IEEE: property_spec
//UNSUP: This rule has been super-specialized to what is supported now
@ -5945,27 +5963,33 @@ property_spec<propSpecp>: // IEEE: property_spec
//UNSUP | property_statementCaseIf { $$ = $1; }
//UNSUP ;
//UNSUPproperty_statementCaseIf<nodep>: // IEEE: property_statement - minus pexpr
//UNSUP yCASE '(' expr/*expression_or_dist*/ ')' property_case_itemList yENDCASE { }
//UNSUP | yCASE '(' expr/*expression_or_dist*/ ')' yENDCASE { }
//UNSUP | yIF '(' expr/*expression_or_dist*/ ')' pexpr %prec prLOWER_THAN_ELSE { }
//UNSUP | yIF '(' expr/*expression_or_dist*/ ')' pexpr yELSE pexpr { }
//UNSUP ;
property_statementCaseIf<nodeExprp>: // IEEE: property_statement - minus pexpr
yCASE '(' expr/*expression_or_dist*/ ')' property_case_itemList yENDCASE
{ $$ = new AstConst{$1, AstConst::BitFalse{}};
BBUNSUP($<fl>1, "Unsupported: property case expression"); }
| yCASE '(' expr/*expression_or_dist*/ ')' yENDCASE
{ $$ = new AstConst{$1, AstConst::BitFalse{}};
BBUNSUP($<fl>1, "Unsupported: property case expression"); }
| yIF '(' expr/*expression_or_dist*/ ')' pexpr %prec prLOWER_THAN_ELSE
{ $$ = $5; BBUNSUP($<fl>1, "Unsupported: property case expression"); }
| yIF '(' expr/*expression_or_dist*/ ')' pexpr yELSE pexpr
{ $$ = $5; BBUNSUP($<fl>1, "Unsupported: property case expression"); }
;
//UNSUPproperty_case_itemList<nodep>: // IEEE: {property_case_item}
//UNSUP property_case_item { $$ = $1; }
//UNSUP | property_case_itemList ',' property_case_item { $$ = addNextNull($1, $3); }
//UNSUP ;
property_case_itemList<caseItemp>: // IEEE: {property_case_item}
property_case_item { $$ = $1; }
| property_case_itemList ',' property_case_item { $$ = addNextNull($1, $3); }
;
//UNSUPproperty_case_item<nodep>: // ==IEEE: property_case_item
//UNSUP // // IEEE: expression_or_dist { ',' expression_or_dist } ':' property_statement
//UNSUP // // IEEE 1800-2012 changed from property_statement to property_expr
//UNSUP // // IEEE 1800-2017 changed to require the semicolon
//UNSUP caseCondList ':' pexpr { }
//UNSUP | caseCondList ':' pexpr ';' { }
//UNSUP | yDEFAULT pexpr { }
//UNSUP | yDEFAULT ':' pexpr ';' { }
//UNSUP ;
property_case_item<caseItemp>: // ==IEEE: property_case_item
// // IEEE: expression_or_dist { ',' expression_or_dist } ':' property_statement
// // IEEE 1800-2012 changed from property_statement to property_expr
// // IEEE 1800-2017 changed to require the semicolon
caseCondList ':' pexpr { $$ = new AstCaseItem{$2, $1, $3}; }
| caseCondList ':' pexpr ';' { $$ = new AstCaseItem{$2, $1, $3}; }
| yDEFAULT pexpr { $$ = new AstCaseItem{$1, nullptr, $2}; }
| yDEFAULT ':' pexpr ';' { $$ = new AstCaseItem{$1, nullptr, $3}; }
;
//UNSUPpev_expr<nodep>: // IEEE: property_actual_arg | expr
//UNSUP // // which expands to pexpr | event_expression
@ -6017,7 +6041,7 @@ pexpr<nodeExprp>: // IEEE: property_expr (The name pexpr is important as regex
//
// // IEEE-2009: property_statement
// // IEEE-2012: yIF and yCASE
//UNSUP property_statementCaseIf { }
| property_statementCaseIf { $$ = $1; }
//
| ~o~pexpr/*sexpr*/ yP_POUNDMINUSPD pexpr
{ $$ = $3; BBUNSUP($2, "Unsupported: #-# (in property expression)"); }
@ -6182,9 +6206,9 @@ cycle_delay_range<nodep>: // IEEE: ==cycle_delay_range
boolean_abbrev<nodeExprp>: // ==IEEE: boolean_abbrev
// // IEEE: consecutive_repetition
yP_BRASTAR constExpr ']' { }
yP_BRASTAR constExpr ']'
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
| yP_BRASTAR constExpr ':' constExpr ']' { }
| yP_BRASTAR constExpr ':' constExpr ']'
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
| yP_BRASTAR ']'
{ $$ = new AstConst{$1, AstConst::BitFalse{}};

View File

@ -1,95 +1,113 @@
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:24:13: Unsupported: strong (in property expression)
24 | strong(a);
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:25:13: Unsupported: strong (in property expression)
25 | strong(a);
| ^
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:28:11: Unsupported: weak (in property expression)
28 | weak(a);
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:29:11: Unsupported: weak (in property expression)
29 | weak(a);
| ^
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:32:9: Unsupported: until (in property expression)
32 | a until b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:33:9: Unsupported: until (in property expression)
33 | a until b;
| ^~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:36:9: Unsupported: s_until (in property expression)
36 | a s_until b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:37:9: Unsupported: s_until (in property expression)
37 | a s_until b;
| ^~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:40:9: Unsupported: until_with (in property expression)
40 | a until_with b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:41:9: Unsupported: until_with (in property expression)
41 | a until_with b;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:44:9: Unsupported: s_until_with (in property expression)
44 | a s_until_with b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:45:9: Unsupported: s_until_with (in property expression)
45 | a s_until_with b;
| ^~~~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:48:9: Unsupported: implies (in property expression)
48 | a implies b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:49:9: Unsupported: implies (in property expression)
49 | a implies b;
| ^~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:52:9: Unsupported: #-# (in property expression)
52 | a #-# b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:53:9: Unsupported: #-# (in property expression)
53 | a #-# b;
| ^~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:56:9: Unsupported: #=# (in property expression)
56 | a #=# b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:57:9: Unsupported: #=# (in property expression)
57 | a #=# b;
| ^~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:60:7: Unsupported: nexttime (in property expression)
60 | nexttime a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:61:7: Unsupported: nexttime (in property expression)
61 | nexttime a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:64:7: Unsupported: nexttime[] (in property expression)
64 | nexttime [2] a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:65:7: Unsupported: nexttime[] (in property expression)
65 | nexttime [2] a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:68:7: Unsupported: s_nexttime (in property expression)
68 | s_nexttime a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:69:7: Unsupported: s_nexttime (in property expression)
69 | s_nexttime a;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:72:7: Unsupported: s_nexttime[] (in property expression)
72 | s_nexttime [2] a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:73:7: Unsupported: s_nexttime[] (in property expression)
73 | s_nexttime [2] a;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:76:16: Unsupported: always (in property expression)
76 | nexttime always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:77:16: Unsupported: always (in property expression)
77 | nexttime always a;
| ^~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:76:7: Unsupported: nexttime (in property expression)
76 | nexttime always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:77:7: Unsupported: nexttime (in property expression)
77 | nexttime always a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:80:20: Unsupported: always (in property expression)
80 | nexttime [2] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:81:20: Unsupported: always (in property expression)
81 | nexttime [2] always a;
| ^~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:80:7: Unsupported: nexttime[] (in property expression)
80 | nexttime [2] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:81:7: Unsupported: nexttime[] (in property expression)
81 | nexttime [2] always a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:84:16: Unsupported: eventually (in property expression)
84 | nexttime eventually a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:85:16: Unsupported: eventually (in property expression)
85 | nexttime eventually a;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:84:7: Unsupported: nexttime (in property expression)
84 | nexttime eventually a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:85:7: Unsupported: nexttime (in property expression)
85 | nexttime eventually a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:88:20: Unsupported: always (in property expression)
88 | nexttime [2] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:89:20: Unsupported: always (in property expression)
89 | nexttime [2] always a;
| ^~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:88:7: Unsupported: nexttime[] (in property expression)
88 | nexttime [2] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:89:7: Unsupported: nexttime[] (in property expression)
89 | nexttime [2] always a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:92:16: Unsupported: s_eventually (in property expression)
92 | nexttime s_eventually a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:93:16: Unsupported: s_eventually (in property expression)
93 | nexttime s_eventually a;
| ^~~~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:92:7: Unsupported: nexttime (in property expression)
92 | nexttime s_eventually a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:93:7: Unsupported: nexttime (in property expression)
93 | nexttime s_eventually a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:35: Unsupported: always (in property expression)
96 | nexttime s_eventually [2:$] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:35: Unsupported: always (in property expression)
97 | nexttime s_eventually [2:$] always a;
| ^~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:16: Unsupported: s_eventually[] (in property expression)
96 | nexttime s_eventually [2:$] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:16: Unsupported: s_eventually[] (in property expression)
97 | nexttime s_eventually [2:$] always a;
| ^~~~~~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:7: Unsupported: nexttime (in property expression)
96 | nexttime s_eventually [2:$] always a;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:7: Unsupported: nexttime (in property expression)
97 | nexttime s_eventually [2:$] always a;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:100:17: Unsupported: accept_on (in property expression)
100 | accept_on (a) b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:101:17: Unsupported: accept_on (in property expression)
101 | accept_on (a) b;
| ^
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:104:22: Unsupported: sync_accept_on (in property expression)
104 | sync_accept_on (a) b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:105:22: Unsupported: sync_accept_on (in property expression)
105 | sync_accept_on (a) b;
| ^
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:108:17: Unsupported: reject_on (in property expression)
108 | reject_on (a) b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:109:17: Unsupported: reject_on (in property expression)
109 | reject_on (a) b;
| ^
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:112:22: Unsupported: sync_reject_on (in property expression)
112 | sync_reject_on (a) b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:113:22: Unsupported: sync_reject_on (in property expression)
113 | sync_reject_on (a) b;
| ^
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:116:9: Unsupported: iff (in property expression)
116 | a iff b;
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:117:9: Unsupported: iff (in property expression)
117 | a iff b;
| ^~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:120:27: Unsupported: property argument data type
120 | property p_arg_propery(property inprop);
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:123:27: Unsupported: sequence argument data type
123 | property p_arg_seqence(sequence inseq);
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:128:7: Unsupported: property case expression
128 | case (a) endcase
| ^~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:131:7: Unsupported: property case expression
131 | case (a) default: b; endcase
| ^~~~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:134:7: Unsupported: property case expression
134 | if (a) b
| ^~
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:137:7: Unsupported: property case expression
137 | if (a) b else c
| ^~
%Error: Exiting due to

View File

@ -12,7 +12,7 @@ scenarios(vlt => 1);
compile(
expect_filename => $Self->{golden_filename},
verilator_flags2 => ['--assert'],
verilator_flags2 => ['--assert --error-limit 1000'],
fails => 1,
);

View File

@ -6,12 +6,13 @@
module t (/*AUTOARG*/
// Inputs
clk, a, b
clk
);
input clk;
int a;
int b;
int c;
int cyc = 0;
always @(posedge clk) begin
@ -116,6 +117,26 @@ module t (/*AUTOARG*/
a iff b;
endproperty
property p_arg_propery(property inprop);
inprop;
endproperty
property p_arg_seqence(sequence inseq);
inseq;
endproperty
property p_case_1;
case (a) endcase
endproperty
property p_case_2;
case (a) default: b; endcase
endproperty
property p_if;
if (a) b
endproperty
property p_ifelse;
if (a) b else c
endproperty
always @(posedge clk) begin
if (cyc == 10) begin
$write("*-* All Finished *-*\n");

View File

@ -1,6 +1,6 @@
%Error-UNSUPPORTED: t/t_assert_recursive_property_unsup.v:20:4: Unsupported: Recursive property call: 'check'
: ... In instance t
%Error-UNSUPPORTED: t/t_assert_recursive_property_unsup.v:20:13: Unsupported: Recursive property call: 'check'
: ... In instance t
20 | property check(int n);
| ^~~~~~~~
| ^~~~~
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error: Exiting due to

View File

@ -1,144 +1,224 @@
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:27:14: Unsupported: within (in sequence expression)
27 | weak(a within(b));
| ^~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:26:4: Unsupported: sequence
26 | sequence s_a;
| ^~~~~~~~
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:27:11: Unsupported: weak (in property expression)
27 | weak(a within(b));
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:31:14: Unsupported: and (in sequence expression)
31 | weak(a and b);
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:31:11: Unsupported: weak (in property expression)
31 | weak(a and b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:14: Unsupported: or (in sequence expression)
35 | weak(a or b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:11: Unsupported: weak (in property expression)
35 | weak(a or b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:14: Unsupported: throughout (in sequence expression)
39 | weak(a throughout b);
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:11: Unsupported: weak (in property expression)
39 | weak(a throughout b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:14: Unsupported: intersect (in sequence expression)
43 | weak(a intersect b);
| ^~~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:11: Unsupported: weak (in property expression)
43 | weak(a intersect b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:12: Unsupported: ## () cycle delay range expression
47 | weak(## 1 b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:17: Unsupported: ## (in sequence expression)
47 | weak(## 1 b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:11: Unsupported: weak (in property expression)
47 | weak(## 1 b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:12: Unsupported: ## id cycle delay range expression
50 | weak(## DELAY b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:21: Unsupported: ## (in sequence expression)
50 | weak(## DELAY b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:11: Unsupported: weak (in property expression)
50 | weak(## DELAY b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:12: Unsupported: ## () cycle delay range expression
53 | weak(## ( DELAY ) b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:25: Unsupported: ## (in sequence expression)
53 | weak(## ( DELAY ) b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:11: Unsupported: weak (in property expression)
53 | weak(## ( DELAY ) b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:12: Unsupported: ## range cycle delay range expression
56 | weak(## [1:2] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:21: Unsupported: ## (in sequence expression)
56 | weak(## [1:2] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:11: Unsupported: weak (in property expression)
56 | weak(## [1:2] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:12: Unsupported: ## [*] cycle delay range expression
59 | weak(## [*] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:19: Unsupported: ## (in sequence expression)
59 | weak(## [*] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:11: Unsupported: weak (in property expression)
59 | weak(## [*] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:12: Unsupported: ## [+] cycle delay range expression
62 | weak(## [+] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:19: Unsupported: ## (in sequence expression)
62 | weak(## [+] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:11: Unsupported: weak (in property expression)
62 | weak(## [+] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:14: Unsupported: ## () cycle delay range expression
66 | weak(a ## 1 b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:17: Unsupported: ## (in sequence expression)
66 | weak(a ## 1 b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:11: Unsupported: weak (in property expression)
66 | weak(a ## 1 b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:14: Unsupported: ## id cycle delay range expression
69 | weak(a ## DELAY b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:14: Unsupported: ## (in sequence expression)
69 | weak(a ## DELAY b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:11: Unsupported: weak (in property expression)
69 | weak(a ## DELAY b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:14: Unsupported: ## () cycle delay range expression
72 | weak(a ## ( DELAY ) b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:19: Unsupported: ## (in sequence expression)
72 | weak(a ## ( DELAY ) b);
| ^~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:11: Unsupported: weak (in property expression)
72 | weak(a ## ( DELAY ) b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:14: Unsupported: ## range cycle delay range expression
75 | weak(a ## [1:2] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:14: Unsupported: ## (in sequence expression)
75 | weak(a ## [1:2] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:11: Unsupported: weak (in property expression)
75 | weak(a ## [1:2] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:14: Unsupported: ## [*] cycle delay range expression
78 | weak(a ## [*] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:14: Unsupported: ## (in sequence expression)
78 | weak(a ## [*] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:11: Unsupported: weak (in property expression)
78 | weak(a ## [*] b);
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:14: Unsupported: ## [+] cycle delay range expression
81 | weak(a ## [+] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:14: Unsupported: ## (in sequence expression)
81 | weak(a ## [+] b);
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:11: Unsupported: weak (in property expression)
81 | weak(a ## [+] b);
| ^
%Error: t/t_sequence_sexpr_unsup.v:85:12: syntax error, unexpected [*, expecting TYPE-IDENTIFIER
85 | weak([* 1 ] a);
| ^~
%Error: Cannot continue
... See the manual at https://verilator.org/verilator_doc.html for more assistance.
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:29:4: Unsupported: sequence
29 | sequence s_var;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:34:4: Unsupported: sequence
34 | sequence s_within;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:9: Unsupported: within (in sequence expression)
35 | a within(b);
| ^~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:38:4: Unsupported: sequence
38 | sequence s_and;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:9: Unsupported: and (in sequence expression)
39 | a and b;
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:42:4: Unsupported: sequence
42 | sequence s_or;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:9: Unsupported: or (in sequence expression)
43 | a or b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:46:4: Unsupported: sequence
46 | sequence s_throughout;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:9: Unsupported: throughout (in sequence expression)
47 | a throughout b;
| ^~~~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:4: Unsupported: sequence
50 | sequence s_intersect;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:51:9: Unsupported: intersect (in sequence expression)
51 | a intersect b;
| ^~~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:54:4: Unsupported: sequence
54 | sequence s_uni_cycdelay_int;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:55:7: Unsupported: ## () cycle delay range expression
55 | ## 1 b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:55:12: Unsupported: ## (in sequence expression)
55 | ## 1 b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:57:4: Unsupported: sequence
57 | sequence s_uni_cycdelay_id;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:58:7: Unsupported: ## id cycle delay range expression
58 | ## DELAY b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:58:16: Unsupported: ## (in sequence expression)
58 | ## DELAY b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:60:4: Unsupported: sequence
60 | sequence s_uni_cycdelay_pid;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:61:7: Unsupported: ## () cycle delay range expression
61 | ## ( DELAY ) b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:61:20: Unsupported: ## (in sequence expression)
61 | ## ( DELAY ) b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:63:4: Unsupported: sequence
63 | sequence s_uni_cycdelay_range;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:64:7: Unsupported: ## range cycle delay range expression
64 | ## [1:2] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:64:16: Unsupported: ## (in sequence expression)
64 | ## [1:2] b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:4: Unsupported: sequence
66 | sequence s_uni_cycdelay_star;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:67:7: Unsupported: ## [*] cycle delay range expression
67 | ## [*] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:67:14: Unsupported: ## (in sequence expression)
67 | ## [*] b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:4: Unsupported: sequence
69 | sequence s_uni_cycdelay_plus;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:70:7: Unsupported: ## [+] cycle delay range expression
70 | ## [+] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:70:14: Unsupported: ## (in sequence expression)
70 | ## [+] b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:73:4: Unsupported: sequence
73 | sequence s_cycdelay_int;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:74:9: Unsupported: ## () cycle delay range expression
74 | a ## 1 b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:74:12: Unsupported: ## (in sequence expression)
74 | a ## 1 b;
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:76:4: Unsupported: sequence
76 | sequence s_cycdelay_id;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:77:9: Unsupported: ## id cycle delay range expression
77 | a ## DELAY b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:77:9: Unsupported: ## (in sequence expression)
77 | a ## DELAY b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:79:4: Unsupported: sequence
79 | sequence s_cycdelay_pid;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:80:9: Unsupported: ## () cycle delay range expression
80 | a ## ( DELAY ) b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:80:14: Unsupported: ## (in sequence expression)
80 | a ## ( DELAY ) b;
| ^~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:82:4: Unsupported: sequence
82 | sequence s_cycdelay_range;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:83:9: Unsupported: ## range cycle delay range expression
83 | a ## [1:2] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:83:9: Unsupported: ## (in sequence expression)
83 | a ## [1:2] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:85:4: Unsupported: sequence
85 | sequence s_cycdelay_star;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:86:9: Unsupported: ## [*] cycle delay range expression
86 | a ## [*] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:86:9: Unsupported: ## (in sequence expression)
86 | a ## [*] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:88:4: Unsupported: sequence
88 | sequence s_cycdelay_plus;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:89:9: Unsupported: ## [+] cycle delay range expression
89 | a ## [+] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:89:9: Unsupported: ## (in sequence expression)
89 | a ## [+] b;
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:92:4: Unsupported: sequence
92 | sequence s_booleanabbrev_brastar_int;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:93:9: Unsupported: [*] boolean abbrev expression
93 | a [* 1 ];
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:93:12: Unsupported: boolean abbrev (in sequence expression)
93 | a [* 1 ];
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:95:4: Unsupported: sequence
95 | sequence s_booleanabbrev_brastar;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:96:9: Unsupported: [*] boolean abbrev expression
96 | a [*];
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:96:9: Unsupported: boolean abbrev (in sequence expression)
96 | a [*];
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:98:4: Unsupported: sequence
98 | sequence s_booleanabbrev_plus;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:99:9: Unsupported: [+] boolean abbrev expression
99 | a [+];
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:99:9: Unsupported: boolean abbrev (in sequence expression)
99 | a [+];
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:101:4: Unsupported: sequence
101 | sequence s_booleanabbrev_eq;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:102:9: Unsupported: [= boolean abbrev expression
102 | a [= 1];
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:102:12: Unsupported: boolean abbrev (in sequence expression)
102 | a [= 1];
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:104:4: Unsupported: sequence
104 | sequence s_booleanabbrev_eq_range;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:105:9: Unsupported: [= boolean abbrev expression
105 | a [= 1:2];
| ^~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:105:12: Unsupported: boolean abbrev (in sequence expression)
105 | a [= 1:2];
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:107:4: Unsupported: sequence
107 | sequence s_booleanabbrev_minusgt;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:108:9: Unsupported: [-> boolean abbrev expression
108 | a [-> 1];
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:108:13: Unsupported: boolean abbrev (in sequence expression)
108 | a [-> 1];
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:110:4: Unsupported: sequence
110 | sequence s_booleanabbrev_minusgt_range;
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:111:9: Unsupported: [-> boolean abbrev expression
111 | a [-> 1:2];
| ^~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:111:13: Unsupported: boolean abbrev (in sequence expression)
111 | a [-> 1:2];
| ^
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:114:4: Unsupported: sequence
114 | sequence p_arg_seqence(sequence inseq);
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:114:27: Unsupported: sequence argument data type
114 | sequence p_arg_seqence(sequence inseq);
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:118:10: Unsupported: cover sequence
118 | cover sequence (s_a) $display("");
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:119:10: Unsupported: cover sequence
119 | cover sequence (@(posedge a) disable iff (b) s_a) $display("");
| ^~~~~~~~
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:120:10: Unsupported: cover sequence
120 | cover sequence (disable iff (b) s_a) $display("");
| ^~~~~~~~
%Error: Exiting due to

View File

@ -12,7 +12,7 @@ scenarios(vlt => 1);
compile(
expect_filename => $Self->{golden_filename},
verilator_flags2 => ['--assert'],
verilator_flags2 => ['--assert --error-limit 1000'],
fails => 1,
);

View File

@ -6,7 +6,7 @@
module t (/*AUTOARG*/
// Inputs
clk, a, b
clk
);
input clk;
@ -23,85 +23,101 @@ module t (/*AUTOARG*/
// NOTE this grammar hasn't been checked with other simulators,
// is here just to avoid uncovered code lines in the grammar.
// NOTE using 'property weak' here as sequence/endsequence not supported
property s_within;
weak(a within(b));
endproperty
sequence s_a;
a;
endsequence : s_a
sequence s_var;
logic l1, l2;
a;
endsequence
property s_and;
weak(a and b);
endproperty
sequence s_within;
a within(b);
endsequence
property s_or;
weak(a or b);
endproperty
sequence s_and;
a and b;
endsequence
property s_throughout;
weak(a throughout b);
endproperty
sequence s_or;
a or b;
endsequence
property s_intersect;
weak(a intersect b);
endproperty
sequence s_throughout;
a throughout b;
endsequence
property s_uni_cycdelay_int;
weak(## 1 b);
endproperty
property s_uni_cycdelay_id;
weak(## DELAY b);
endproperty
property s_uni_cycdelay_pid;
weak(## ( DELAY ) b);
endproperty
property s_uni_cycdelay_range;
weak(## [1:2] b);
endproperty
property s_uni_cycdelay_star;
weak(## [*] b);
endproperty
property s_uni_cycdelay_plus;
weak(## [+] b);
endproperty
sequence s_intersect;
a intersect b;
endsequence
property s_cycdelay_int;
weak(a ## 1 b);
endproperty
property s_cycdelay_id;
weak(a ## DELAY b);
endproperty
property s_cycdelay_pid;
weak(a ## ( DELAY ) b);
endproperty
property s_cycdelay_range;
weak(a ## [1:2] b);
endproperty
property s_cycdelay_star;
weak(a ## [*] b);
endproperty
property s_cycdelay_plus;
weak(a ## [+] b);
endproperty
sequence s_uni_cycdelay_int;
## 1 b;
endsequence
sequence s_uni_cycdelay_id;
## DELAY b;
endsequence
sequence s_uni_cycdelay_pid;
## ( DELAY ) b;
endsequence
sequence s_uni_cycdelay_range;
## [1:2] b;
endsequence
sequence s_uni_cycdelay_star;
## [*] b;
endsequence
sequence s_uni_cycdelay_plus;
## [+] b;
endsequence
property s_booleanabbrev_brastar_int;
weak([* 1 ] a);
endproperty
property s_booleanabbrev_brastar;
weak([*] a);
endproperty
property s_booleanabbrev_plus;
weak([+] a);
endproperty
property s_booleanabbrev_eq;
weak([= 1] a);
endproperty
property s_booleanabbrev_eq_range;
weak([= 1:2] a);
endproperty
property s_booleanabbrev_minusgt;
weak([-> 1] a);
endproperty
property s_booleanabbrev_minusgt_range;
weak([-> 1:2] a);
endproperty
sequence s_cycdelay_int;
a ## 1 b;
endsequence
sequence s_cycdelay_id;
a ## DELAY b;
endsequence
sequence s_cycdelay_pid;
a ## ( DELAY ) b;
endsequence
sequence s_cycdelay_range;
a ## [1:2] b;
endsequence
sequence s_cycdelay_star;
a ## [*] b;
endsequence
sequence s_cycdelay_plus;
a ## [+] b;
endsequence
sequence s_booleanabbrev_brastar_int;
a [* 1 ];
endsequence
sequence s_booleanabbrev_brastar;
a [*];
endsequence
sequence s_booleanabbrev_plus;
a [+];
endsequence
sequence s_booleanabbrev_eq;
a [= 1];
endsequence
sequence s_booleanabbrev_eq_range;
a [= 1:2];
endsequence
sequence s_booleanabbrev_minusgt;
a [-> 1];
endsequence
sequence s_booleanabbrev_minusgt_range;
a [-> 1:2];
endsequence
sequence p_arg_seqence(sequence inseq);
inseq;
endsequence
cover sequence (s_a) $display("");
cover sequence (@(posedge a) disable iff (b) s_a) $display("");
cover sequence (disable iff (b) s_a) $display("");
always @(posedge clk) begin
if (cyc == 10) begin