iverilog/ivtest/ivltests/genvar_scopes.v

51 lines
1021 B
Coq
Raw Normal View History

module genvar_scopes();
// This test is designed to check that genvars can be declared
// within a generate block and do not collide with genvars of
// the same name declared in the enclosing scope.
genvar i;
genvar j;
reg [1:0] a[1:0];
wire [1:0] b[1:0];
wire [1:0] c[1:0];
wire [1:0] d[1:0];
for (i = 0; i < 2; i = i + 1) begin
for (j = 0; j < 2; j = j + 1) begin
assign b[i][j] = a[i][j];
end
end
for (i = 0; i < 2; i = i + 1) begin
genvar j;
for (j = 0; j < 2; j = j + 1) begin
assign c[i][j] = a[i][j];
end
end
for (j = 0; j < 2; j = j + 1) begin
genvar k;
for (k = 0; k < 2; k = k + 1) begin
assign d[j][k] = a[j][k];
end
end
initial begin
a[0] = 2'b01;
a[1] = 2'b10;
#1;
$display("%b %b", b[0], b[1]);
$display("%b %b", c[0], c[1]);
$display("%b %b", d[0], d[1]);
if ((b[0] === 2'b01) && (b[1] === 2'b10)
&& (c[0] === 2'b01) && (c[1] === 2'b10)
&& (d[0] === 2'b01) && (d[1] === 2'b10))
$display("PASSED");
else
$display("FAILED");
end
endmodule