sv2v/test/basic/struct_shadow.sv

161 lines
4.7 KiB
Systemverilog
Raw Normal View History

typedef struct packed { reg w; bit x; logic y; } StructA;
typedef struct packed { reg w; logic y; bit x; } StructB;
typedef struct packed { bit x; reg w; logic y; } StructC;
typedef struct packed { logic y; reg w; bit x; } StructD;
typedef struct packed { bit x; logic y; reg w; } StructE;
typedef struct packed { logic y; bit x; reg w; } StructF;
module top;
integer i, j, k;
StructA a;
StructB b;
StructC c;
StructD d;
StructE e;
StructF f;
initial begin
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
a = '{ w:i, x:j, y:k };
b = '{ w:i, x:j, y:k };
c = '{ w:i, x:j, y:k };
d = '{ w:i, x:j, y:k };
e = '{ w:i, x:j, y:k };
f = '{ w:i, x:j, y:k };
$display("A: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
end
end
end
end
initial begin
integer i, j, k;
StructB a;
StructC b;
StructD c;
StructE d;
StructF e;
StructA f;
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
a = '{ w:i, x:j, y:k };
b = '{ w:i, x:j, y:k };
c = '{ w:i, x:j, y:k };
d = '{ w:i, x:j, y:k };
e = '{ w:i, x:j, y:k };
f = '{ w:i, x:j, y:k };
$display("B: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
end
end
end
begin
integer i, j, k;
StructC a;
StructD b;
StructE c;
StructF d;
StructA e;
StructB f;
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
a = '{ w:i, x:j, y:k };
b = '{ w:i, x:j, y:k };
c = '{ w:i, x:j, y:k };
d = '{ w:i, x:j, y:k };
e = '{ w:i, x:j, y:k };
f = '{ w:i, x:j, y:k };
$display("C: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
end
end
end
end
end
task foo;
integer i, j, k;
StructD a;
StructE b;
StructF c;
StructA d;
StructB e;
StructC f;
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
a = '{ w:i, x:j, y:k };
b = '{ w:i, x:j, y:k };
c = '{ w:i, x:j, y:k };
d = '{ w:i, x:j, y:k };
e = '{ w:i, x:j, y:k };
f = '{ w:i, x:j, y:k };
$display("D: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
end
end
end
endtask
initial foo();
task bar;
input integer i, j, k;
input StructE a;
input StructF b;
input StructA c;
input StructB d;
input StructC e;
input StructD f;
$display("E: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
endtask
initial begin
integer i, j, k;
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
bar(i,j,k
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
);
end
end
end
end
function baz;
input integer i, j, k;
input StructF a;
input StructA b;
input StructB c;
input StructC d;
input StructD e;
input StructE f;
$display("F: %1d%1d%1d -> ", i,j,k, a,b,c,d,e,f);
baz = 0;
endfunction
initial begin
integer i, j, k;
integer unused;
for (i = 0; i < 2; i++) begin
for (j = 0; j < 2; j++) begin
for (k = 0; k < 2; k++) begin
unused = baz(i,j,k
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
, '{ w:i, x:j, y:k }
);
end
end
end
end
endmodule