Skip to content

Commit 71dca2b

Browse files
authored
Merge pull request #415 from diffblue/empty_item
Verilog: empty module/generate item
2 parents f2cbfd0 + 17d838f commit 71dca2b

File tree

8 files changed

+32
-0
lines changed

8 files changed

+32
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
empty_item.v
3+
4+
^no properties$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module main;
2+
// The empty item.
3+
;
4+
5+
generate
6+
// Also inside generate
7+
;
8+
endgenerate
9+
10+
endmodule

src/hw_cbmc_irep_ids.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ IREP_ID_ONE(offset)
137137
IREP_ID_ONE(xnor)
138138
IREP_ID_ONE(specify)
139139
IREP_ID_ONE(verilog_module)
140+
IREP_ID_ONE(verilog_empty_item)
140141
IREP_ID_ONE(module_source)
141142
IREP_ID_ONE(module_items)
142143
IREP_ID_ONE(parameter_port_list)

src/verilog/parser.y

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,8 @@ package_or_generate_item_declaration:
10631063
that let constructs may be declared in a
10641064
module/interface/program/checker etc. */
10651065
| let_declaration
1066+
| ';'
1067+
{ init($$, ID_verilog_empty_item); }
10661068
;
10671069

10681070
// System Verilog standard 1800-2017

src/verilog/verilog_elaborate.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,9 @@ void verilog_typecheckt::collect_symbols(
771771
{
772772
collect_symbols(to_verilog_let(module_item));
773773
}
774+
else if(module_item.id() == ID_verilog_empty_item)
775+
{
776+
}
774777
else
775778
DATA_INVARIANT(false, "unexpected module item: " + module_item.id_string());
776779
}

src/verilog/verilog_interfaces.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,9 @@ void verilog_typecheckt::interface_module_item(
277277
{
278278
// already done during constant elaboration
279279
}
280+
else if(module_item.id() == ID_verilog_empty_item)
281+
{
282+
}
280283
else
281284
{
282285
DATA_INVARIANT(false, "unexpected module item: " + module_item.id_string());

src/verilog/verilog_synthesis.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2633,6 +2633,9 @@ void verilog_synthesist::synth_module_item(
26332633
{
26342634
// done already
26352635
}
2636+
else if(module_item.id() == ID_verilog_empty_item)
2637+
{
2638+
}
26362639
else
26372640
{
26382641
throw errort().with_location(module_item.source_location())

src/verilog/verilog_typecheck.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,9 @@ void verilog_typecheckt::convert_module_item(
16381638
{
16391639
// done already
16401640
}
1641+
else if(module_item.id() == ID_verilog_empty_item)
1642+
{
1643+
}
16411644
else
16421645
{
16431646
throw errort().with_location(module_item.source_location())

0 commit comments

Comments
 (0)