mirror of https://github.com/zachjs/sv2v.git
161 lines
4.7 KiB
Systemverilog
161 lines
4.7 KiB
Systemverilog
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
|