forked from github/verilator
Parse 'sequence' declarations, property case/if, still unsupported.
This commit is contained in:
parent
87c3de5aab
commit
725ec088ea
@ -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; }
|
||||
|
198
src/verilog.y
198
src/verilog.y
@ -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{}};
|
||||
|
@ -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
|
||||
|
@ -12,7 +12,7 @@ scenarios(vlt => 1);
|
||||
|
||||
compile(
|
||||
expect_filename => $Self->{golden_filename},
|
||||
verilator_flags2 => ['--assert'],
|
||||
verilator_flags2 => ['--assert --error-limit 1000'],
|
||||
fails => 1,
|
||||
);
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -12,7 +12,7 @@ scenarios(vlt => 1);
|
||||
|
||||
compile(
|
||||
expect_filename => $Self->{golden_filename},
|
||||
verilator_flags2 => ['--assert'],
|
||||
verilator_flags2 => ['--assert --error-limit 1000'],
|
||||
fails => 1,
|
||||
);
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user