Skip to content

Commit bfe59d7

Browse files
authored
Merge pull request #1452 from diffblue/verilog-assertions-base-name
SystemVerilog: use `base_name` instead of `identifier`
2 parents 518bff1 + b86042b commit bfe59d7

File tree

3 files changed

+30
-22
lines changed

3 files changed

+30
-22
lines changed

src/verilog/parser.y

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,11 +1505,11 @@ package_import_item:
15051505
package_identifier "::" identifier
15061506
{ init($$, ID_verilog_import_item);
15071507
stack_expr($$).set(ID_verilog_package, stack_expr($1).id());
1508-
stack_expr($$).set(ID_identifier, stack_expr($3).id()); }
1508+
stack_expr($$).set(ID_base_name, stack_expr($3).id()); }
15091509
| package_identifier "::" "*"
15101510
{ init($$, ID_verilog_import_item);
15111511
stack_expr($$).set(ID_verilog_package, stack_expr($1).id());
1512-
stack_expr($$).set(ID_identifier, "*"); }
1512+
stack_expr($$).set(ID_base_name, "*"); }
15131513
;
15141514

15151515
genvar_declaration:
@@ -2417,7 +2417,7 @@ concurrent_assertion_item:
24172417
| block_identifier TOK_COLON concurrent_assertion_statement
24182418
{
24192419
$$=$3;
2420-
stack_expr($$).set(ID_identifier, stack_expr($1).id());
2420+
stack_expr($$).set(ID_base_name, stack_expr($1).id());
24212421
}
24222422
;
24232423

@@ -2435,13 +2435,13 @@ smv_assertion_statement:
24352435
{ init($$, ID_verilog_smv_assert); stack_expr($$).operands().resize(2);
24362436
to_binary_expr(stack_expr($$)).op0().swap(stack_expr($4));
24372437
to_binary_expr(stack_expr($$)).op1().make_nil();
2438-
stack_expr($$).set(ID_identifier, stack_expr($2).id());
2438+
stack_expr($$).set(ID_base_name, stack_expr($2).id());
24392439
}
24402440
| TOK_ASSUME property_identifier TOK_COLON smv_property ';'
24412441
{ init($$, ID_verilog_smv_assume); stack_expr($$).operands().resize(2);
24422442
to_binary_expr(stack_expr($$)).op0().swap(stack_expr($4));
24432443
to_binary_expr(stack_expr($$)).op1().make_nil();
2444-
stack_expr($$).set(ID_identifier, stack_expr($2).id());
2444+
stack_expr($$).set(ID_base_name, stack_expr($2).id());
24452445
}
24462446
;
24472447

@@ -3687,7 +3687,7 @@ statement:
36873687
statement == ID_verilog_immediate_assume ||
36883688
statement == ID_verilog_immediate_cover)
36893689
{
3690-
stack_expr($5).set(ID_identifier, stack_expr($2).id());
3690+
stack_expr($5).set(ID_base_name, stack_expr($2).id());
36913691
}
36923692

36933693
mto($$, $5);
@@ -3957,7 +3957,7 @@ deferred_immediate_assertion_item:
39573957
}
39583958
| block_identifier TOK_COLON deferred_immediate_assertion_statement
39593959
{ /* wrap the statement into an item */
3960-
stack_expr($3).set(ID_identifier, stack_expr($1).id());
3960+
stack_expr($3).set(ID_base_name, stack_expr($1).id());
39613961
init($$, ID_verilog_assertion_item);
39623962
mto($$, $3);
39633963
}

src/verilog/verilog_expr.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,7 @@ class verilog_assert_assume_cover_module_itemt : public verilog_module_itemt
20492049
return op1();
20502050
}
20512051

2052+
// The full identifier created by the type checker
20522053
const irep_idt &identifier() const
20532054
{
20542055
return get(ID_identifier);
@@ -2058,6 +2059,11 @@ class verilog_assert_assume_cover_module_itemt : public verilog_module_itemt
20582059
{
20592060
set(ID_identifier, identifier);
20602061
}
2062+
2063+
const irep_idt &base_name() const
2064+
{
2065+
return get(ID_base_name);
2066+
}
20612067
};
20622068

20632069
inline const verilog_assert_assume_cover_module_itemt &
@@ -2119,6 +2125,16 @@ class verilog_assert_assume_cover_statementt : public verilog_statementt
21192125
{
21202126
set(ID_identifier, _identifier);
21212127
}
2128+
2129+
const irep_idt &base_name() const
2130+
{
2131+
return get(ID_base_name);
2132+
}
2133+
2134+
void base_name(irep_idt _base_name)
2135+
{
2136+
set(ID_base_name, _base_name);
2137+
}
21222138
};
21232139

21242140
inline const verilog_assert_assume_cover_statementt &

src/verilog/verilog_typecheck.cpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,12 +1054,10 @@ void verilog_typecheckt::convert_assert_assume_cover(
10541054

10551055
// We create a symbol for the property.
10561056
// The 'value' of the symbol is set by synthesis.
1057-
const irep_idt &identifier = module_item.identifier();
1058-
1059-
irep_idt base_name;
1057+
irep_idt base_name = module_item.base_name();
10601058

10611059
// The label is optional.
1062-
if(identifier == irep_idt())
1060+
if(base_name == irep_idt{})
10631061
{
10641062
std::string kind = module_item.id() == ID_verilog_assert_property ? "assert"
10651063
: module_item.id() == ID_verilog_assume_property
@@ -1069,10 +1067,8 @@ void verilog_typecheckt::convert_assert_assume_cover(
10691067
: "";
10701068

10711069
assertion_counter++;
1072-
base_name = kind + "." + std::to_string(assertion_counter);
1070+
base_name = kind + '.' + std::to_string(assertion_counter);
10731071
}
1074-
else
1075-
base_name = identifier;
10761072

10771073
// The assert/assume/cover module items use the module name space
10781074
std::string full_identifier =
@@ -1124,11 +1120,9 @@ void verilog_typecheckt::convert_assert_assume_cover(
11241120

11251121
// We create a symbol for the property.
11261122
// The 'value' is set by synthesis.
1127-
const irep_idt &identifier = statement.identifier();
1123+
irep_idt base_name = statement.base_name();
11281124

1129-
irep_idt base_name;
1130-
1131-
if(identifier == irep_idt())
1125+
if(base_name == irep_idt{})
11321126
{
11331127
std::string kind = statement.id() == ID_verilog_immediate_assert ? "assert"
11341128
: statement.id() == ID_verilog_assert_property ? "assert"
@@ -1142,10 +1136,8 @@ void verilog_typecheckt::convert_assert_assume_cover(
11421136
: "";
11431137

11441138
assertion_counter++;
1145-
base_name = kind + "." + std::to_string(assertion_counter);
1139+
base_name = kind + '.' + std::to_string(assertion_counter);
11461140
}
1147-
else
1148-
base_name = identifier;
11491141

11501142
// We produce a full hierarchical identifier for the SystemVerilog immediate
11511143
// and concurrent assertion statements.
@@ -1601,7 +1593,7 @@ void verilog_typecheckt::convert_statement(
16011593
sub_statement.id() == ID_verilog_cover_sequence ||
16021594
sub_statement.id() == ID_verilog_cover_property)
16031595
{
1604-
sub_statement.set(ID_identifier, label_statement.label());
1596+
sub_statement.set(ID_base_name, label_statement.label());
16051597
}
16061598

16071599
convert_statement(sub_statement);

0 commit comments

Comments
 (0)