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; }
|
"ref" { FL; return yREF; }
|
||||||
"restrict" { FL; return yRESTRICT; }
|
"restrict" { FL; return yRESTRICT; }
|
||||||
"return" { FL; return yRETURN; }
|
"return" { FL; return yRETURN; }
|
||||||
"sequence" { ERROR_RSVD_WORD("SystemVerilog 2005"); }
|
"sequence" { FL; return ySEQUENCE; }
|
||||||
"shortint" { FL; return ySHORTINT; }
|
"shortint" { FL; return ySHORTINT; }
|
||||||
"shortreal" { FL; return ySHORTREAL; }
|
"shortreal" { FL; return ySHORTREAL; }
|
||||||
"solve" { FL; return ySOLVE; }
|
"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> yRTRANIF0 "rtranif0"
|
||||||
%token<fl> yRTRANIF1 "rtranif1"
|
%token<fl> yRTRANIF1 "rtranif1"
|
||||||
%token<fl> ySCALARED "scalared"
|
%token<fl> ySCALARED "scalared"
|
||||||
//UNSUP %token<fl> ySEQUENCE "sequence"
|
%token<fl> ySEQUENCE "sequence"
|
||||||
%token<fl> ySHORTINT "shortint"
|
%token<fl> ySHORTINT "shortint"
|
||||||
%token<fl> ySHORTREAL "shortreal"
|
%token<fl> ySHORTREAL "shortreal"
|
||||||
%token<fl> ySIGNED "signed"
|
%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}; }
|
{ $$ = new AstBasicDType{$<fl>1, LOGIC_IMPLICIT, $1}; }
|
||||||
;
|
;
|
||||||
|
|
||||||
//UNSUPassertion_variable_declaration: // IEEE: assertion_variable_declaration
|
assertion_variable_declaration<nodep>: // IEEE: assertion_variable_declaration
|
||||||
//UNSUP // // IEEE: var_data_type expanded
|
// // IEEE: var_data_type expanded
|
||||||
//UNSUP var_data_type list_of_variable_decl_assignments ';' { }
|
var_data_type { VARRESET_NONLIST(VAR); VARDTYPE_NDECL($1); }
|
||||||
//UNSUP ;
|
/*cont*/ list_of_variable_decl_assignments ';' { $$ = $3; }
|
||||||
|
;
|
||||||
|
|
||||||
type_declaration<nodep>: // ==IEEE: type_declaration
|
type_declaration<nodep>: // ==IEEE: type_declaration
|
||||||
// Data_type expanded
|
// Data_type expanded
|
||||||
|
|
@ -5685,8 +5686,8 @@ cycle_delay<delayp>: // IEEE: cycle_delay
|
||||||
|
|
||||||
assertion_item_declaration<nodep>: // ==IEEE: assertion_item_declaration
|
assertion_item_declaration<nodep>: // ==IEEE: assertion_item_declaration
|
||||||
property_declaration { $$ = $1; }
|
property_declaration { $$ = $1; }
|
||||||
//UNSUP | sequence_declaration { $$ = $1; }
|
| sequence_declaration { $$ = $1; }
|
||||||
//UNSUP | let_declaration { $$ = $1; }
|
//UNSUP let_declaration { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
assertion_item<nodep>: // ==IEEE: assertion_item
|
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}; }
|
{ $$ = new AstAssert{$1, new AstSampled{$1, $4}, nullptr, $6, false}; }
|
||||||
//UNSUP yASSUME yPROPERTY '(' property_spec ')' action_block { }
|
//UNSUP yASSUME yPROPERTY '(' property_spec ')' action_block { }
|
||||||
// // IEEE: cover_property_statement
|
// // 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
|
// // 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
|
// // IEEE: yCOVER ySEQUENCE '(' clocking_event sexpr ')' stmt
|
||||||
// // sexpr already includes "clocking_event sexpr"
|
// // sexpr already includes "clocking_event sexpr"
|
||||||
//UNSUP yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt { }
|
| yCOVER ySEQUENCE '(' clocking_event yDISABLE yIFF '(' expr/*expression_or_dist*/ ')' sexpr ')' stmt
|
||||||
//UNSUP yCOVER ySEQUENCE '(' 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
|
// // 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
|
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_declaration<nodeFTaskp>: // ==IEEE: property_declaration
|
||||||
property_declarationFront property_port_listE ';' property_declarationBody
|
property_declarationFront property_port_listE ';' property_declarationBody
|
||||||
yENDPROPERTY endLabelE
|
yENDPROPERTY endLabelE
|
||||||
{ $$ = $1;
|
{ $$ = $1;
|
||||||
$$->addStmtsp($2);
|
$$->addStmtsp($2);
|
||||||
$$->addStmtsp($4);
|
$$->addStmtsp($4);
|
||||||
SYMP->popScope($$);
|
SYMP->popScope($$);
|
||||||
GRAMMARP->endLabel($<fl>6, $$, $6);
|
GRAMMARP->endLabel($<fl>6, $$, $6);
|
||||||
GRAMMARP->m_insideProperty = false;
|
GRAMMARP->m_insideProperty = false;
|
||||||
GRAMMARP->m_typedPropertyPort = false; }
|
GRAMMARP->m_typedPropertyPort = false; }
|
||||||
;
|
;
|
||||||
|
|
||||||
property_declarationFront<nodeFTaskp>: // IEEE: part of property_declaration
|
property_declarationFront<nodeFTaskp>: // IEEE: part of property_declaration
|
||||||
yPROPERTY idAny/*property_identifier*/
|
yPROPERTY idAny/*property_identifier*/
|
||||||
{ $$ = new AstProperty{$1, *$2, nullptr};
|
{ $$ = new AstProperty{$<fl>2, *$2, nullptr};
|
||||||
GRAMMARP->m_insideProperty = true;
|
GRAMMARP->m_insideProperty = true;
|
||||||
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
|
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
|
||||||
;
|
;
|
||||||
|
|
||||||
property_port_listE<nodep>: // IEEE: [ ( [ property_port_list ] ) ]
|
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
|
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); }
|
id variable_dimensionListE { $$ = VARDONEA($<fl>1, *$1, $2, nullptr); }
|
||||||
//UNSUP | id variable_dimensionListE '=' property_actual_arg
|
//UNSUP|id variable_dimensionListE '=' property_actual_arg
|
||||||
//UNSUP { VARDONE($<fl>1, $1, $2, $4); PINNUMINC(); }
|
//UNSUP { VARDONE($<fl>1, $1, $2, $4); PINNUMINC(); }
|
||||||
;
|
;
|
||||||
|
|
||||||
property_port_itemDirE:
|
property_port_itemDirE:
|
||||||
/* empty */ { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
|
/* empty */ { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
|
||||||
//UNSUP | yLOCAL__ETC { 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 yINPUT { GRAMMARP->m_pinAnsi = true; VARIO(INPUT); }
|
||||||
;
|
;
|
||||||
|
|
||||||
property_declarationBody<nodep>: // IEEE: part of property_declaration
|
property_declarationBody<nodep>: // IEEE: part of property_declaration
|
||||||
//UNSUP assertion_variable_declarationList property_statement_spec { }
|
//UNSUP assertion_variable_declarationList property_statement_spec {}
|
||||||
//UNSUP // // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here.
|
// // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here.
|
||||||
//UNSUP // // Fixed in IEEE 1800-2017
|
// // Fixed in IEEE 1800-2017
|
||||||
property_spec { $$ = $1; }
|
property_spec { $$ = $1; }
|
||||||
| property_spec ';' { $$ = $1; }
|
| property_spec ';' { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
//UNSUPassertion_variable_declarationList<nodep>: // IEEE: part of assertion_variable_declaration
|
assertion_variable_declarationList<nodep>: // IEEE: part of assertion_variable_declaration
|
||||||
//UNSUP assertion_variable_declaration { $$ = $1; }
|
assertion_variable_declaration { $$ = $1; }
|
||||||
//UNSUP | assertion_variable_declarationList assertion_variable_declaration { }
|
| assertion_variable_declarationList assertion_variable_declaration
|
||||||
//UNSUP ;
|
{ $$ = addNextNull($1, $2); }
|
||||||
|
;
|
||||||
|
|
||||||
//UNSUPsequence_declaration<nodep>: // ==IEEE: sequence_declaration
|
sequence_declaration<nodeFTaskp>: // ==IEEE: sequence_declaration
|
||||||
//UNSUP sequence_declarationFront sequence_port_listE ';' sequence_declarationBody
|
sequence_declarationFront sequence_port_listE ';' sequence_declarationBody
|
||||||
//UNSUP yENDSEQUENCE endLabelE
|
/*cont*/ yENDSEQUENCE endLabelE
|
||||||
//UNSUP { SYMP->popScope($$); }
|
{ $$ = $1;
|
||||||
//UNSUP ;
|
$$->addStmtsp($2);
|
||||||
|
$$->addStmtsp($4);
|
||||||
|
SYMP->popScope($$);
|
||||||
|
GRAMMARP->endLabel($<fl>6, $$, $6); }
|
||||||
|
;
|
||||||
|
|
||||||
//UNSUPsequence_declarationFront<nodep>: // IEEE: part of sequence_declaration
|
sequence_declarationFront<nodeFTaskp>: // IEEE: part of sequence_declaration
|
||||||
//UNSUP ySEQUENCE idAny/*new_sequence*/
|
ySEQUENCE idAny/*new_sequence*/
|
||||||
//UNSUP { SYMP->pushNew($$); }
|
{ BBUNSUP($1, "Unsupported: sequence");
|
||||||
//UNSUP ;
|
$$ = new AstProperty{$<fl>2, *$2, nullptr};
|
||||||
|
SYMP->pushNewUnderNodeOrCurrent($$, nullptr); }
|
||||||
|
;
|
||||||
|
|
||||||
//UNSUPsequence_port_listE<nodep>: // IEEE: [ ( [ sequence_port_list ] ) ]
|
sequence_port_listE<nodep>: // IEEE: [ ( [ sequence_port_list ] ) ]
|
||||||
//UNSUP // // IEEE: sequence_lvar_port_direction ::= yINPUT | yINOUT | yOUTPUT
|
// // IEEE: sequence_lvar_port_direction ::= yINPUT | yINOUT | yOUTPUT
|
||||||
//UNSUP // // IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type
|
// // IEEE: [ yLOCAL [ sequence_lvar_port_direction ] ] sequence_formal_type
|
||||||
//UNSUP // // id {variable_dimension} [ '=' sequence_actual_arg ]
|
// // id {variable_dimension} [ '=' sequence_actual_arg ]
|
||||||
//UNSUP // // All this is almost identically the same as a property.
|
// // All this is almost identically the same as a property.
|
||||||
//UNSUP // // Difference is only yINOUT/yOUTPUT (which might be added to 1800-2012)
|
// // Difference is only yINOUT/yOUTPUT (which might be added to 1800-2012)
|
||||||
//UNSUP // // and yPROPERTY. So save some work.
|
// // and yPROPERTY. So save some work.
|
||||||
//UNSUP property_port_listE { $$ = $1; }
|
property_port_listE { $$ = $1; }
|
||||||
//UNSUP ;
|
;
|
||||||
|
|
||||||
property_formal_typeNoDt<nodeDTypep>: // IEEE: property_formal_type (w/o implicit)
|
property_formal_typeNoDt<nodeDTypep>: // IEEE: property_formal_type (w/o implicit)
|
||||||
sequence_formal_typeNoDt { $$ = $1; }
|
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)
|
sequence_formal_typeNoDt<nodeDTypep>: // ==IEEE: sequence_formal_type (w/o data_type_or_implicit)
|
||||||
// // IEEE: data_type_or_implicit
|
// IEEE: data_type_or_implicit
|
||||||
// // implicit expanded where used
|
// implicit expanded where used
|
||||||
//UNSUP ySEQUENCE { }
|
ySEQUENCE
|
||||||
// // IEEE-2009: yEVENT
|
{ $$ = nullptr; GRAMMARP->m_typedPropertyPort = false;
|
||||||
// // already part of data_type. Removed in 1800-2012.
|
BBUNSUP($1, "Unsupported: sequence argument data type"); }
|
||||||
yUNTYPED { $$ = nullptr; GRAMMARP->m_typedPropertyPort = false; }
|
// 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
|
sequence_declarationBody<nodep>: // IEEE: part of sequence_declaration
|
||||||
//UNSUP // // 1800-2012 makes ';' optional
|
// // 1800-2012 makes ';' optional
|
||||||
//UNSUP assertion_variable_declarationList sexpr { }
|
assertion_variable_declarationList sexpr { $$ = addNextNull($1, $2); }
|
||||||
//UNSUP | assertion_variable_declarationList sexpr ';' { }
|
| assertion_variable_declarationList sexpr ';' { $$ = addNextNull($1, $2); }
|
||||||
//UNSUP | sexpr { $$ = $1; }
|
| sexpr { $$ = $1; }
|
||||||
//UNSUP | sexpr ';' { $$ = $1; }
|
| sexpr ';' { $$ = $1; }
|
||||||
//UNSUP ;
|
;
|
||||||
|
|
||||||
property_spec<propSpecp>: // IEEE: property_spec
|
property_spec<propSpecp>: // IEEE: property_spec
|
||||||
//UNSUP: This rule has been super-specialized to what is supported now
|
//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 | property_statementCaseIf { $$ = $1; }
|
||||||
//UNSUP ;
|
//UNSUP ;
|
||||||
|
|
||||||
//UNSUPproperty_statementCaseIf<nodep>: // IEEE: property_statement - minus pexpr
|
property_statementCaseIf<nodeExprp>: // IEEE: property_statement - minus pexpr
|
||||||
//UNSUP yCASE '(' expr/*expression_or_dist*/ ')' property_case_itemList yENDCASE { }
|
yCASE '(' expr/*expression_or_dist*/ ')' property_case_itemList yENDCASE
|
||||||
//UNSUP | yCASE '(' expr/*expression_or_dist*/ ')' yENDCASE { }
|
{ $$ = new AstConst{$1, AstConst::BitFalse{}};
|
||||||
//UNSUP | yIF '(' expr/*expression_or_dist*/ ')' pexpr %prec prLOWER_THAN_ELSE { }
|
BBUNSUP($<fl>1, "Unsupported: property case expression"); }
|
||||||
//UNSUP | yIF '(' expr/*expression_or_dist*/ ')' pexpr yELSE pexpr { }
|
| yCASE '(' expr/*expression_or_dist*/ ')' yENDCASE
|
||||||
//UNSUP ;
|
{ $$ = 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}
|
property_case_itemList<caseItemp>: // IEEE: {property_case_item}
|
||||||
//UNSUP property_case_item { $$ = $1; }
|
property_case_item { $$ = $1; }
|
||||||
//UNSUP | property_case_itemList ',' property_case_item { $$ = addNextNull($1, $3); }
|
| property_case_itemList ',' property_case_item { $$ = addNextNull($1, $3); }
|
||||||
//UNSUP ;
|
;
|
||||||
|
|
||||||
//UNSUPproperty_case_item<nodep>: // ==IEEE: property_case_item
|
property_case_item<caseItemp>: // ==IEEE: property_case_item
|
||||||
//UNSUP // // IEEE: expression_or_dist { ',' expression_or_dist } ':' property_statement
|
// // IEEE: expression_or_dist { ',' expression_or_dist } ':' property_statement
|
||||||
//UNSUP // // IEEE 1800-2012 changed from property_statement to property_expr
|
// // IEEE 1800-2012 changed from property_statement to property_expr
|
||||||
//UNSUP // // IEEE 1800-2017 changed to require the semicolon
|
// // IEEE 1800-2017 changed to require the semicolon
|
||||||
//UNSUP caseCondList ':' pexpr { }
|
caseCondList ':' pexpr { $$ = new AstCaseItem{$2, $1, $3}; }
|
||||||
//UNSUP | caseCondList ':' pexpr ';' { }
|
| caseCondList ':' pexpr ';' { $$ = new AstCaseItem{$2, $1, $3}; }
|
||||||
//UNSUP | yDEFAULT pexpr { }
|
| yDEFAULT pexpr { $$ = new AstCaseItem{$1, nullptr, $2}; }
|
||||||
//UNSUP | yDEFAULT ':' pexpr ';' { }
|
| yDEFAULT ':' pexpr ';' { $$ = new AstCaseItem{$1, nullptr, $3}; }
|
||||||
//UNSUP ;
|
;
|
||||||
|
|
||||||
//UNSUPpev_expr<nodep>: // IEEE: property_actual_arg | expr
|
//UNSUPpev_expr<nodep>: // IEEE: property_actual_arg | expr
|
||||||
//UNSUP // // which expands to pexpr | event_expression
|
//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-2009: property_statement
|
||||||
// // IEEE-2012: yIF and yCASE
|
// // IEEE-2012: yIF and yCASE
|
||||||
//UNSUP property_statementCaseIf { }
|
| property_statementCaseIf { $$ = $1; }
|
||||||
//
|
//
|
||||||
| ~o~pexpr/*sexpr*/ yP_POUNDMINUSPD pexpr
|
| ~o~pexpr/*sexpr*/ yP_POUNDMINUSPD pexpr
|
||||||
{ $$ = $3; BBUNSUP($2, "Unsupported: #-# (in property expression)"); }
|
{ $$ = $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
|
boolean_abbrev<nodeExprp>: // ==IEEE: boolean_abbrev
|
||||||
// // IEEE: consecutive_repetition
|
// // IEEE: consecutive_repetition
|
||||||
yP_BRASTAR constExpr ']' { }
|
yP_BRASTAR constExpr ']'
|
||||||
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
|
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
|
||||||
| yP_BRASTAR constExpr ':' constExpr ']' { }
|
| yP_BRASTAR constExpr ':' constExpr ']'
|
||||||
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
|
{ $$ = $2; BBUNSUP($<fl>1, "Unsupported: [*] boolean abbrev expression"); }
|
||||||
| yP_BRASTAR ']'
|
| yP_BRASTAR ']'
|
||||||
{ $$ = new AstConst{$1, AstConst::BitFalse{}};
|
{ $$ = 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)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:25:13: Unsupported: strong (in property expression)
|
||||||
24 | strong(a);
|
25 | strong(a);
|
||||||
| ^
|
| ^
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... 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)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:29:11: Unsupported: weak (in property expression)
|
||||||
28 | weak(a);
|
29 | weak(a);
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:32:9: Unsupported: until (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:33:9: Unsupported: until (in property expression)
|
||||||
32 | a until b;
|
33 | a until b;
|
||||||
| ^~~~~
|
| ^~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:36:9: Unsupported: s_until (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:37:9: Unsupported: s_until (in property expression)
|
||||||
36 | a s_until b;
|
37 | a s_until b;
|
||||||
| ^~~~~~~
|
| ^~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:40:9: Unsupported: until_with (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:41:9: Unsupported: until_with (in property expression)
|
||||||
40 | a until_with b;
|
41 | a until_with b;
|
||||||
| ^~~~~~~~~~
|
| ^~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:44:9: Unsupported: s_until_with (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:45:9: Unsupported: s_until_with (in property expression)
|
||||||
44 | a s_until_with b;
|
45 | a s_until_with b;
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:48:9: Unsupported: implies (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:49:9: Unsupported: implies (in property expression)
|
||||||
48 | a implies b;
|
49 | a implies b;
|
||||||
| ^~~~~~~
|
| ^~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:52:9: Unsupported: #-# (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:53:9: Unsupported: #-# (in property expression)
|
||||||
52 | a #-# b;
|
53 | a #-# b;
|
||||||
| ^~~
|
| ^~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:56:9: Unsupported: #=# (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:57:9: Unsupported: #=# (in property expression)
|
||||||
56 | a #=# b;
|
57 | a #=# b;
|
||||||
| ^~~
|
| ^~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:60:7: Unsupported: nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:61:7: Unsupported: nexttime (in property expression)
|
||||||
60 | nexttime a;
|
61 | nexttime a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:64:7: Unsupported: nexttime[] (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:65:7: Unsupported: nexttime[] (in property expression)
|
||||||
64 | nexttime [2] a;
|
65 | nexttime [2] a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:68:7: Unsupported: s_nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:69:7: Unsupported: s_nexttime (in property expression)
|
||||||
68 | s_nexttime a;
|
69 | s_nexttime a;
|
||||||
| ^~~~~~~~~~
|
| ^~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:72:7: Unsupported: s_nexttime[] (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:73:7: Unsupported: s_nexttime[] (in property expression)
|
||||||
72 | s_nexttime [2] a;
|
73 | s_nexttime [2] a;
|
||||||
| ^~~~~~~~~~
|
| ^~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:76:16: Unsupported: always (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:77:16: Unsupported: always (in property expression)
|
||||||
76 | nexttime always a;
|
77 | nexttime always a;
|
||||||
| ^~~~~~
|
| ^~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:76:7: Unsupported: nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:77:7: Unsupported: nexttime (in property expression)
|
||||||
76 | nexttime always a;
|
77 | nexttime always a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:80:20: Unsupported: always (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:81:20: Unsupported: always (in property expression)
|
||||||
80 | nexttime [2] always a;
|
81 | nexttime [2] always a;
|
||||||
| ^~~~~~
|
| ^~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:80:7: Unsupported: nexttime[] (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:81:7: Unsupported: nexttime[] (in property expression)
|
||||||
80 | nexttime [2] always a;
|
81 | nexttime [2] always a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:84:16: Unsupported: eventually (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:85:16: Unsupported: eventually (in property expression)
|
||||||
84 | nexttime eventually a;
|
85 | nexttime eventually a;
|
||||||
| ^~~~~~~~~~
|
| ^~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:84:7: Unsupported: nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:85:7: Unsupported: nexttime (in property expression)
|
||||||
84 | nexttime eventually a;
|
85 | nexttime eventually a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:88:20: Unsupported: always (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:89:20: Unsupported: always (in property expression)
|
||||||
88 | nexttime [2] always a;
|
89 | nexttime [2] always a;
|
||||||
| ^~~~~~
|
| ^~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:88:7: Unsupported: nexttime[] (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:89:7: Unsupported: nexttime[] (in property expression)
|
||||||
88 | nexttime [2] always a;
|
89 | nexttime [2] always a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:92:16: Unsupported: s_eventually (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:93:16: Unsupported: s_eventually (in property expression)
|
||||||
92 | nexttime s_eventually a;
|
93 | nexttime s_eventually a;
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:92:7: Unsupported: nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:93:7: Unsupported: nexttime (in property expression)
|
||||||
92 | nexttime s_eventually a;
|
93 | nexttime s_eventually a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:35: Unsupported: always (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:35: Unsupported: always (in property expression)
|
||||||
96 | nexttime s_eventually [2:$] always a;
|
97 | nexttime s_eventually [2:$] always a;
|
||||||
| ^~~~~~
|
| ^~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:16: Unsupported: s_eventually[] (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:16: Unsupported: s_eventually[] (in property expression)
|
||||||
96 | nexttime s_eventually [2:$] always a;
|
97 | nexttime s_eventually [2:$] always a;
|
||||||
| ^~~~~~~~~~~~
|
| ^~~~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:96:7: Unsupported: nexttime (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:97:7: Unsupported: nexttime (in property expression)
|
||||||
96 | nexttime s_eventually [2:$] always a;
|
97 | nexttime s_eventually [2:$] always a;
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:100:17: Unsupported: accept_on (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:101:17: Unsupported: accept_on (in property expression)
|
||||||
100 | accept_on (a) b;
|
101 | accept_on (a) b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:104:22: Unsupported: sync_accept_on (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:105:22: Unsupported: sync_accept_on (in property expression)
|
||||||
104 | sync_accept_on (a) b;
|
105 | sync_accept_on (a) b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:108:17: Unsupported: reject_on (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:109:17: Unsupported: reject_on (in property expression)
|
||||||
108 | reject_on (a) b;
|
109 | reject_on (a) b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:112:22: Unsupported: sync_reject_on (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:113:22: Unsupported: sync_reject_on (in property expression)
|
||||||
112 | sync_reject_on (a) b;
|
113 | sync_reject_on (a) b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:116:9: Unsupported: iff (in property expression)
|
%Error-UNSUPPORTED: t/t_assert_property_pexpr_unsup.v:117:9: Unsupported: iff (in property expression)
|
||||||
116 | a iff b;
|
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
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ scenarios(vlt => 1);
|
||||||
|
|
||||||
compile(
|
compile(
|
||||||
expect_filename => $Self->{golden_filename},
|
expect_filename => $Self->{golden_filename},
|
||||||
verilator_flags2 => ['--assert'],
|
verilator_flags2 => ['--assert --error-limit 1000'],
|
||||||
fails => 1,
|
fails => 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,13 @@
|
||||||
|
|
||||||
module t (/*AUTOARG*/
|
module t (/*AUTOARG*/
|
||||||
// Inputs
|
// Inputs
|
||||||
clk, a, b
|
clk
|
||||||
);
|
);
|
||||||
|
|
||||||
input clk;
|
input clk;
|
||||||
int a;
|
int a;
|
||||||
int b;
|
int b;
|
||||||
|
int c;
|
||||||
int cyc = 0;
|
int cyc = 0;
|
||||||
|
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
|
|
@ -116,6 +117,26 @@ module t (/*AUTOARG*/
|
||||||
a iff b;
|
a iff b;
|
||||||
endproperty
|
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
|
always @(posedge clk) begin
|
||||||
if (cyc == 10) begin
|
if (cyc == 10) begin
|
||||||
$write("*-* All Finished *-*\n");
|
$write("*-* All Finished *-*\n");
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
%Error-UNSUPPORTED: t/t_assert_recursive_property_unsup.v:20:4: Unsupported: Recursive property call: 'check'
|
%Error-UNSUPPORTED: t/t_assert_recursive_property_unsup.v:20:13: Unsupported: Recursive property call: 'check'
|
||||||
: ... In instance t
|
: ... In instance t
|
||||||
20 | property check(int n);
|
20 | property check(int n);
|
||||||
| ^~~~~~~~
|
| ^~~~~
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -1,144 +1,224 @@
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:27:14: Unsupported: within (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:26:4: Unsupported: sequence
|
||||||
27 | weak(a within(b));
|
26 | sequence s_a;
|
||||||
| ^~~~~~
|
| ^~~~~~~~
|
||||||
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
|
... 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)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:29:4: Unsupported: sequence
|
||||||
27 | weak(a within(b));
|
29 | sequence s_var;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:31:14: Unsupported: and (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:34:4: Unsupported: sequence
|
||||||
31 | weak(a and b);
|
34 | sequence s_within;
|
||||||
| ^~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:31:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:9: Unsupported: within (in sequence expression)
|
||||||
31 | weak(a and b);
|
35 | a within(b);
|
||||||
| ^
|
| ^~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:14: Unsupported: or (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:38:4: Unsupported: sequence
|
||||||
35 | weak(a or b);
|
38 | sequence s_and;
|
||||||
| ^~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:35:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:9: Unsupported: and (in sequence expression)
|
||||||
35 | weak(a or b);
|
39 | a and b;
|
||||||
| ^
|
| ^~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:14: Unsupported: throughout (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:42:4: Unsupported: sequence
|
||||||
39 | weak(a throughout b);
|
42 | sequence s_or;
|
||||||
| ^~~~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:39:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:9: Unsupported: or (in sequence expression)
|
||||||
39 | weak(a throughout b);
|
43 | a or b;
|
||||||
| ^
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:14: Unsupported: intersect (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:46:4: Unsupported: sequence
|
||||||
43 | weak(a intersect b);
|
46 | sequence s_throughout;
|
||||||
| ^~~~~~~~~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:43:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:9: Unsupported: throughout (in sequence expression)
|
||||||
43 | weak(a intersect b);
|
47 | a throughout b;
|
||||||
| ^
|
| ^~~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:12: Unsupported: ## () cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:4: Unsupported: sequence
|
||||||
47 | weak(## 1 b);
|
50 | sequence s_intersect;
|
||||||
| ^~
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:17: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:51:9: Unsupported: intersect (in sequence expression)
|
||||||
47 | weak(## 1 b);
|
51 | a intersect b;
|
||||||
| ^
|
| ^~~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:47:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:54:4: Unsupported: sequence
|
||||||
47 | weak(## 1 b);
|
54 | sequence s_uni_cycdelay_int;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:12: Unsupported: ## id cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:55:7: Unsupported: ## () cycle delay range expression
|
||||||
50 | weak(## DELAY b);
|
55 | ## 1 b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:21: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:55:12: Unsupported: ## (in sequence expression)
|
||||||
50 | weak(## DELAY b);
|
55 | ## 1 b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:50:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:57:4: Unsupported: sequence
|
||||||
50 | weak(## DELAY b);
|
57 | sequence s_uni_cycdelay_id;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:12: Unsupported: ## () cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:58:7: Unsupported: ## id cycle delay range expression
|
||||||
53 | weak(## ( DELAY ) b);
|
58 | ## DELAY b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:25: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:58:16: Unsupported: ## (in sequence expression)
|
||||||
53 | weak(## ( DELAY ) b);
|
58 | ## DELAY b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:53:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:60:4: Unsupported: sequence
|
||||||
53 | weak(## ( DELAY ) b);
|
60 | sequence s_uni_cycdelay_pid;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:12: Unsupported: ## range cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:61:7: Unsupported: ## () cycle delay range expression
|
||||||
56 | weak(## [1:2] b);
|
61 | ## ( DELAY ) b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:21: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:61:20: Unsupported: ## (in sequence expression)
|
||||||
56 | weak(## [1:2] b);
|
61 | ## ( DELAY ) b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:56:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:63:4: Unsupported: sequence
|
||||||
56 | weak(## [1:2] b);
|
63 | sequence s_uni_cycdelay_range;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:12: Unsupported: ## [*] cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:64:7: Unsupported: ## range cycle delay range expression
|
||||||
59 | weak(## [*] b);
|
64 | ## [1:2] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:19: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:64:16: Unsupported: ## (in sequence expression)
|
||||||
59 | weak(## [*] b);
|
64 | ## [1:2] b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:59:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:4: Unsupported: sequence
|
||||||
59 | weak(## [*] b);
|
66 | sequence s_uni_cycdelay_star;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:12: Unsupported: ## [+] cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:67:7: Unsupported: ## [*] cycle delay range expression
|
||||||
62 | weak(## [+] b);
|
67 | ## [*] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:19: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:67:14: Unsupported: ## (in sequence expression)
|
||||||
62 | weak(## [+] b);
|
67 | ## [*] b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:62:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:4: Unsupported: sequence
|
||||||
62 | weak(## [+] b);
|
69 | sequence s_uni_cycdelay_plus;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:14: Unsupported: ## () cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:70:7: Unsupported: ## [+] cycle delay range expression
|
||||||
66 | weak(a ## 1 b);
|
70 | ## [+] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:17: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:70:14: Unsupported: ## (in sequence expression)
|
||||||
66 | weak(a ## 1 b);
|
70 | ## [+] b;
|
||||||
| ^
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:66:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:73:4: Unsupported: sequence
|
||||||
66 | weak(a ## 1 b);
|
73 | sequence s_cycdelay_int;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:14: Unsupported: ## id cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:74:9: Unsupported: ## () cycle delay range expression
|
||||||
69 | weak(a ## DELAY b);
|
74 | a ## 1 b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:14: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:74:12: Unsupported: ## (in sequence expression)
|
||||||
69 | weak(a ## DELAY b);
|
74 | a ## 1 b;
|
||||||
| ^~
|
| ^
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:69:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:76:4: Unsupported: sequence
|
||||||
69 | weak(a ## DELAY b);
|
76 | sequence s_cycdelay_id;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:14: Unsupported: ## () cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:77:9: Unsupported: ## id cycle delay range expression
|
||||||
72 | weak(a ## ( DELAY ) b);
|
77 | a ## DELAY b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:19: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:77:9: Unsupported: ## (in sequence expression)
|
||||||
72 | weak(a ## ( DELAY ) b);
|
77 | a ## DELAY b;
|
||||||
| ^~~~~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:72:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:79:4: Unsupported: sequence
|
||||||
72 | weak(a ## ( DELAY ) b);
|
79 | sequence s_cycdelay_pid;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:14: Unsupported: ## range cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:80:9: Unsupported: ## () cycle delay range expression
|
||||||
75 | weak(a ## [1:2] b);
|
80 | a ## ( DELAY ) b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:14: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:80:14: Unsupported: ## (in sequence expression)
|
||||||
75 | weak(a ## [1:2] b);
|
80 | a ## ( DELAY ) b;
|
||||||
| ^~
|
| ^~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:75:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:82:4: Unsupported: sequence
|
||||||
75 | weak(a ## [1:2] b);
|
82 | sequence s_cycdelay_range;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:14: Unsupported: ## [*] cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:83:9: Unsupported: ## range cycle delay range expression
|
||||||
78 | weak(a ## [*] b);
|
83 | a ## [1:2] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:14: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:83:9: Unsupported: ## (in sequence expression)
|
||||||
78 | weak(a ## [*] b);
|
83 | a ## [1:2] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:78:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:85:4: Unsupported: sequence
|
||||||
78 | weak(a ## [*] b);
|
85 | sequence s_cycdelay_star;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:14: Unsupported: ## [+] cycle delay range expression
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:86:9: Unsupported: ## [*] cycle delay range expression
|
||||||
81 | weak(a ## [+] b);
|
86 | a ## [*] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:14: Unsupported: ## (in sequence expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:86:9: Unsupported: ## (in sequence expression)
|
||||||
81 | weak(a ## [+] b);
|
86 | a ## [*] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:81:11: Unsupported: weak (in property expression)
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:88:4: Unsupported: sequence
|
||||||
81 | weak(a ## [+] b);
|
88 | sequence s_cycdelay_plus;
|
||||||
| ^
|
| ^~~~~~~~
|
||||||
%Error: t/t_sequence_sexpr_unsup.v:85:12: syntax error, unexpected [*, expecting TYPE-IDENTIFIER
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:89:9: Unsupported: ## [+] cycle delay range expression
|
||||||
85 | weak([* 1 ] a);
|
89 | a ## [+] b;
|
||||||
| ^~
|
| ^~
|
||||||
%Error: Cannot continue
|
%Error-UNSUPPORTED: t/t_sequence_sexpr_unsup.v:89:9: Unsupported: ## (in sequence expression)
|
||||||
... See the manual at https://verilator.org/verilator_doc.html for more assistance.
|
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(
|
compile(
|
||||||
expect_filename => $Self->{golden_filename},
|
expect_filename => $Self->{golden_filename},
|
||||||
verilator_flags2 => ['--assert'],
|
verilator_flags2 => ['--assert --error-limit 1000'],
|
||||||
fails => 1,
|
fails => 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
module t (/*AUTOARG*/
|
module t (/*AUTOARG*/
|
||||||
// Inputs
|
// Inputs
|
||||||
clk, a, b
|
clk
|
||||||
);
|
);
|
||||||
|
|
||||||
input clk;
|
input clk;
|
||||||
|
|
@ -23,85 +23,101 @@ module t (/*AUTOARG*/
|
||||||
// NOTE this grammar hasn't been checked with other simulators,
|
// NOTE this grammar hasn't been checked with other simulators,
|
||||||
// is here just to avoid uncovered code lines in the grammar.
|
// is here just to avoid uncovered code lines in the grammar.
|
||||||
// NOTE using 'property weak' here as sequence/endsequence not supported
|
// NOTE using 'property weak' here as sequence/endsequence not supported
|
||||||
property s_within;
|
sequence s_a;
|
||||||
weak(a within(b));
|
a;
|
||||||
endproperty
|
endsequence : s_a
|
||||||
|
sequence s_var;
|
||||||
|
logic l1, l2;
|
||||||
|
a;
|
||||||
|
endsequence
|
||||||
|
|
||||||
property s_and;
|
sequence s_within;
|
||||||
weak(a and b);
|
a within(b);
|
||||||
endproperty
|
endsequence
|
||||||
|
|
||||||
property s_or;
|
sequence s_and;
|
||||||
weak(a or b);
|
a and b;
|
||||||
endproperty
|
endsequence
|
||||||
|
|
||||||
property s_throughout;
|
sequence s_or;
|
||||||
weak(a throughout b);
|
a or b;
|
||||||
endproperty
|
endsequence
|
||||||
|
|
||||||
property s_intersect;
|
sequence s_throughout;
|
||||||
weak(a intersect b);
|
a throughout b;
|
||||||
endproperty
|
endsequence
|
||||||
|
|
||||||
property s_uni_cycdelay_int;
|
sequence s_intersect;
|
||||||
weak(## 1 b);
|
a intersect b;
|
||||||
endproperty
|
endsequence
|
||||||
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
|
|
||||||
|
|
||||||
property s_cycdelay_int;
|
sequence s_uni_cycdelay_int;
|
||||||
weak(a ## 1 b);
|
## 1 b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_cycdelay_id;
|
sequence s_uni_cycdelay_id;
|
||||||
weak(a ## DELAY b);
|
## DELAY b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_cycdelay_pid;
|
sequence s_uni_cycdelay_pid;
|
||||||
weak(a ## ( DELAY ) b);
|
## ( DELAY ) b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_cycdelay_range;
|
sequence s_uni_cycdelay_range;
|
||||||
weak(a ## [1:2] b);
|
## [1:2] b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_cycdelay_star;
|
sequence s_uni_cycdelay_star;
|
||||||
weak(a ## [*] b);
|
## [*] b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_cycdelay_plus;
|
sequence s_uni_cycdelay_plus;
|
||||||
weak(a ## [+] b);
|
## [+] b;
|
||||||
endproperty
|
endsequence
|
||||||
|
|
||||||
property s_booleanabbrev_brastar_int;
|
sequence s_cycdelay_int;
|
||||||
weak([* 1 ] a);
|
a ## 1 b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_brastar;
|
sequence s_cycdelay_id;
|
||||||
weak([*] a);
|
a ## DELAY b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_plus;
|
sequence s_cycdelay_pid;
|
||||||
weak([+] a);
|
a ## ( DELAY ) b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_eq;
|
sequence s_cycdelay_range;
|
||||||
weak([= 1] a);
|
a ## [1:2] b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_eq_range;
|
sequence s_cycdelay_star;
|
||||||
weak([= 1:2] a);
|
a ## [*] b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_minusgt;
|
sequence s_cycdelay_plus;
|
||||||
weak([-> 1] a);
|
a ## [+] b;
|
||||||
endproperty
|
endsequence
|
||||||
property s_booleanabbrev_minusgt_range;
|
|
||||||
weak([-> 1:2] a);
|
sequence s_booleanabbrev_brastar_int;
|
||||||
endproperty
|
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
|
always @(posedge clk) begin
|
||||||
if (cyc == 10) begin
|
if (cyc == 10) begin
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue