struct conversion supports struct literals as task/function args

This commit is contained in:
Zachary Snow
2019-04-22 13:58:14 -04:00
parent addc550028
commit d41dcb2bc9
3 changed files with 119 additions and 1 deletions
+57
View File
@@ -100,4 +100,61 @@ module top;
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
+16
View File
@@ -44,5 +44,21 @@ module top;
$display("D: 101 -> 635563");
$display("D: 110 -> 353656");
$display("D: 111 -> 777777");
$display("E: 000 -> 000000");
$display("E: 001 -> 241214");
$display("E: 010 -> 422141");
$display("E: 011 -> 663355");
$display("E: 100 -> 114422");
$display("E: 101 -> 355636");
$display("E: 110 -> 536563");
$display("E: 111 -> 777777");
$display("F: 000 -> 000000");
$display("F: 001 -> 412142");
$display("F: 010 -> 221414");
$display("F: 011 -> 633556");
$display("F: 100 -> 144221");
$display("F: 101 -> 556363");
$display("F: 110 -> 365635");
$display("F: 111 -> 777777");
end
endmodule