2 module task_func_test01(clk, a, b, c, x, y, z, w);
6 output reg [7:0] x, y, z, w;
8 function [7:0] sum_shift;
9 input [3:0] s1, s2, s3;
10 sum_shift = s1 + (s2 << 2) + (s3 << 4);
23 always @(posedge clk) begin
24 x = sum_shift(a, b, c);
25 y = sum_shift(a[7:4], b[5:2], c[3:0]);
26 z = sum_shift(a[0], b[5:4], c >> 5) ^ sum_shift(1, 2, 3);
36 // -------------------------------------------------------------------
38 module task_func_test02(clk, a, b, c, x, y, z, w);
42 output reg [7:0] x, y, z, w;
44 function [7:0] sum_shift(input [3:0] s1, s2, s3);
45 sum_shift = s1 + (s2 << 2) + (s3 << 4);
52 task add_to(output [7:0] out, input [7:0] in);
56 always @(posedge clk) begin
57 x = sum_shift(a, b, c);
58 y = sum_shift(a[7:4], b[5:2], c[3:0]);
59 z = sum_shift(a[0], b[5:4], c >> 5) ^ sum_shift(1, 2, 3);
69 // -------------------------------------------------------------------
71 module task_func_test03(input [7:0] din_a, input [7:0] din_b, output [7:0] dout_a);
72 assign dout_a = test(din_a,din_b);
78 for (i = 0; i <= 7; i = i + 1)
79 test[i] = a[i] & b[i];
84 // -------------------------------------------------------------------
86 module task_func_test04(input [7:0] in, output [7:0] out1, out2, out3, out4);
103 function [7:0] test3;
109 function [7:0] test4;
111 parameter px = p + 13;
112 parameter p3 = px - 37;
113 parameter p4 = p3 ^ px;
118 assign out1 = test1(in);
119 assign out2 = test2(in);
120 assign out3 = test3(in);
121 assign out4 = test4(in);
124 // -------------------------------------------------------------------
126 // https://github.com/YosysHQ/yosys/issues/857
127 module task_func_test05(data_in,data_out,clk);
138 always @(posedge clk) begin
139 myTask(data_out,data_in);