Skip to content

Commit dd003fe

Browse files
authored
Merge pull request #1548 from diffblue/sequence-and-properties-to-scope
Verilog: add sequence/property identifiers to scope
2 parents ff4f5fb + af2dcad commit dd003fe

File tree

5 files changed

+20
-7
lines changed

5 files changed

+20
-7
lines changed

regression/verilog/SVA/property_vs_typedef1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ module main;
77
// Riviera Pro 2023.04.
88
property some_name;
99
1
10-
endproperty
10+
endproperty : some_name
1111

1212
endmodule

regression/verilog/SVA/sequence_vs_typedef1.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ module main;
77
// Riviera Pro 2023.04.
88
sequence some_name;
99
1
10-
endsequence
10+
endsequence : some_name
1111

1212
endmodule

src/verilog/parser.y

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2514,12 +2514,17 @@ assertion_item_declaration:
25142514
;
25152515

25162516
property_declaration:
2517-
TOK_PROPERTY any_identifier property_port_list_paren_opt ';'
2517+
TOK_PROPERTY any_identifier
2518+
{ auto base_name = stack_expr($2).get(ID_base_name);
2519+
push_scope(base_name, ".", verilog_scopet::PROPERTY); }
2520+
property_port_list_paren_opt ';'
25182521
property_spec semicolon_opt
25192522
TOK_ENDPROPERTY property_identifier_opt
25202523
{ init($$, ID_verilog_property_declaration);
2521-
stack_expr($$).set(ID_base_name, stack_expr($2).get(ID_base_name));
2522-
mto($$, $5); }
2524+
auto base_name = stack_expr($2).get(ID_base_name);
2525+
stack_expr($$).set(ID_base_name, base_name);
2526+
mto($$, $6);
2527+
}
25232528
;
25242529

25252530
property_identifier_opt:
@@ -2706,12 +2711,16 @@ property_case_item:
27062711

27072712
sequence_declaration:
27082713
"sequence" { init($$, ID_verilog_sequence_declaration); }
2709-
any_identifier sequence_port_list_opt ';'
2714+
any_identifier
2715+
{ auto base_name = stack_expr($3).get(ID_base_name);
2716+
push_scope(base_name, ".", verilog_scopet::SEQUENCE);
2717+
}
2718+
sequence_port_list_opt ';'
27102719
sequence_expr semicolon_opt
27112720
"endsequence" sequence_identifier_opt
27122721
{ $$=$2;
27132722
stack_expr($$).set(ID_base_name, stack_expr($3).get(ID_base_name));
2714-
mto($$, $6);
2723+
mto($$, $7);
27152724
}
27162725
;
27172726

src/verilog/verilog_scope.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ unsigned verilog_scopet::identifier_token() const
5151
case verilog_scopet::TASK: return TOK_NON_TYPE_IDENTIFIER;
5252
case verilog_scopet::FUNCTION: return TOK_NON_TYPE_IDENTIFIER;
5353
case verilog_scopet::TYPEDEF: return TOK_TYPE_IDENTIFIER;
54+
case verilog_scopet::PROPERTY: return TOK_NON_TYPE_IDENTIFIER;
55+
case verilog_scopet::SEQUENCE: return TOK_NON_TYPE_IDENTIFIER;
5456
case verilog_scopet::OTHER: return TOK_NON_TYPE_IDENTIFIER;
5557
// clang-format on
5658
}

src/verilog/verilog_scope.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ struct verilog_scopet
2828
FUNCTION,
2929
BLOCK,
3030
TYPEDEF,
31+
PROPERTY,
32+
SEQUENCE,
3133
OTHER
3234
};
3335

0 commit comments

Comments
 (0)