3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-16 07:45:28 +00:00

sv: support declaration in generate for initialization

This is accomplished by generating a unique name for the genvar,
renaming references to the genvar only in the loop's initialization,
guard, and incrementation, and finally adding a localparam inside the
loop body with the original name so that the genvar can be shadowed as
expected.
This commit is contained in:
Zachary Snow 2021-08-31 11:45:02 -06:00 committed by Zachary Snow
parent b20bb653ce
commit b2e9717419
9 changed files with 209 additions and 1 deletions

View file

@ -0,0 +1,30 @@
`default_nettype none
module gate(out);
wire [3:0] x;
for (genvar x = 0; x < 2; x++) begin : blk
localparam w = x;
if (x == 0) begin : sub
wire [w:0] x;
end
end
assign x = 2;
assign blk[0].sub.x = '1;
output wire [9:0] out;
assign out = {1'bx, x, blk[0].sub.x};
endmodule
module gold(out);
wire [3:0] x;
genvar z;
for (z = 0; z < 2; z++) begin : blk
localparam w = z;
if (z == 0) begin : sub
wire [w:0] x;
end
end
assign x = 2;
assign blk[0].sub.x = '1;
output wire [9:0] out;
assign out = {1'bx, x, blk[0].sub.x};
endmodule