51 lines
1021 B
Coq
51 lines
1021 B
Coq
|
|
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
|