@@ -803,10 +803,8 @@ module_or_generate_item:
803
803
| attribute_instance_brace gate_instantiation { $$ =$2 ; }
804
804
// | attribute_instance_brace udp_instantiation { $$ =$2 ; }
805
805
| attribute_instance_brace module_instantiation { $$ =$2 ; }
806
- | attribute_instance_brace concurrent_assert_statement { $$ =$2 ; }
807
- | attribute_instance_brace concurrent_assume_statement { $$ =$2 ; }
808
- | attribute_instance_brace concurrent_cover_statement { $$ =$2 ; }
809
- | attribute_instance_brace concurrent_assertion_item_declaration { $$ =$2 ; }
806
+ | attribute_instance_brace concurrent_assertion_item { $$ =$2 ; }
807
+ | attribute_instance_brace assertion_item_declaration { $$ =$2 ; }
810
808
| attribute_instance_brace module_common_item { $$ =$2 ; }
811
809
;
812
810
@@ -1535,8 +1533,19 @@ block_item_declaration:
1535
1533
// System Verilog standard 1800-2017
1536
1534
// A.2.10 Assertion declarations
1537
1535
1538
- concurrent_assertion_item_declaration :
1539
- property_declaration
1536
+ concurrent_assertion_item :
1537
+ concurrent_assertion_statement
1538
+ | block_identifier TOK_COLON concurrent_assertion_statement
1539
+ {
1540
+ $$ =$3 ;
1541
+ stack_expr ($$).set(ID_identifier, stack_expr($1 ).id());
1542
+ }
1543
+ ;
1544
+
1545
+ concurrent_assertion_statement :
1546
+ assert_property_statement
1547
+ | assume_property_statement
1548
+ | cover_property_statement
1540
1549
;
1541
1550
1542
1551
assert_property_statement :
@@ -1567,6 +1576,10 @@ cover_property_statement: TOK_COVER TOK_PROPERTY '(' expression ')' action_block
1567
1576
{ init($$ , ID_cover); mto($$ , $4 ); mto($$ , $6 ); }
1568
1577
;
1569
1578
1579
+ assertion_item_declaration :
1580
+ property_declaration
1581
+ ;
1582
+
1570
1583
property_declaration :
1571
1584
TOK_PROPERTY property_identifier TOK_ENDPROPERTY
1572
1585
;
@@ -2120,12 +2133,10 @@ statement:
2120
2133
;
2121
2134
2122
2135
statement_item :
2123
- assert_property_statement
2124
- | assume_property_statement
2125
- | blocking_assignment ' ;' { $$ = $1 ; }
2136
+ blocking_assignment ' ;' { $$ = $1 ; }
2126
2137
| nonblocking_assignment ' ;' { $$ = $1 ; }
2127
2138
| case_statement
2128
- | cover_property_statement
2139
+ | concurrent_assertion_statement
2129
2140
| conditional_statement
2130
2141
| inc_or_dec_expression ' ;'
2131
2142
| subroutine_call_statement
@@ -2137,7 +2148,7 @@ statement_item:
2137
2148
| procedural_continuous_assignments ' ;'
2138
2149
| seq_block
2139
2150
| wait_statement
2140
- | immediate_assert_statement
2151
+ | procedural_assertion_statement
2141
2152
;
2142
2153
2143
2154
subroutine_call_statement :
@@ -2367,7 +2378,19 @@ statement_brace:
2367
2378
// System Verilog standard 1800-2017
2368
2379
// A.6.10 Assertion statements
2369
2380
2370
- immediate_assert_statement : TOK_ASSERT ' (' expression ' )' action_block
2381
+ procedural_assertion_statement :
2382
+ immediate_assertion_statement
2383
+ ;
2384
+
2385
+ immediate_assertion_statement :
2386
+ simple_immediate_assertion_statement
2387
+ ;
2388
+
2389
+ simple_immediate_assertion_statement :
2390
+ simple_immediate_assert_statement
2391
+ ;
2392
+
2393
+ simple_immediate_assert_statement : TOK_ASSERT ' (' expression ' )' action_block
2371
2394
{ init($$ , ID_assert); mto($$ , $3 ); mto($$ , $5 ); }
2372
2395
;
2373
2396
0 commit comments