Skip to content

Commit ef84975

Browse files
committed
Verilog: generate ... endgenerate is optional
The use of generate ... endgenerate became optional with 1364-2005. Fixes issue #747.
1 parent 2e01686 commit ef84975

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
generate-for3.v
3+
--module main --bound 1
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
--
8+
The generate ... endgenerate keywords became optional with 1364-2005.
9+
https://github.com/diffblue/hw-cbmc/issues/747
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module main;
2+
3+
wire [15:0] some_wire;
4+
5+
// The generate ... endgenerate became optional with 1364-2005.
6+
genvar i;
7+
for (i = 0; i <= 15; i = i + 1)
8+
assign some_wire[i] = (i%2) == 0;
9+
10+
// should pass
11+
always assert property1: some_wire == 'b0101_0101_0101_0101;
12+
13+
endmodule

src/verilog/verilog_elaborate.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,9 @@ verilog_typecheckt::elaborate_level(const module_itemst &module_items)
862862

863863
for(auto &module_item : module_items)
864864
{
865-
if(module_item.id() == ID_generate_block)
865+
if(
866+
module_item.id() == ID_generate_block ||
867+
module_item.id() == ID_generate_for || module_item.id() == ID_generate_if)
866868
{
867869
// elaborate_generate_item calls elaborate_level
868870
// recursively.

0 commit comments

Comments
 (0)