| module scopes_test_01(input [3:0] k, output reg [15:0] x, y); | |
| function [15:0] func_01; | |
| input [15:0] x, y; | |
| begin | |
| func_01 = x + y; | |
| begin:blk | |
| reg [15:0] x; | |
| x = y; | |
| func_01 = func_01 ^ x; | |
| end | |
| func_01 = func_01 ^ x; | |
| end | |
| endfunction | |
| function [15:0] func_02; | |
| input [15:0] x, y; | |
| begin | |
| func_02 = x - y; | |
| begin:blk | |
| reg [15:0] func_02; | |
| func_02 = 0; | |
| end | |
| end | |
| endfunction | |
| task task_01; | |
| input [3:0] a; | |
| reg [15:0] y; | |
| begin | |
| y = a * 23; | |
| x = x + y; | |
| end | |
| endtask | |
| task task_02; | |
| input [3:0] a; | |
| begin:foo | |
| reg [15:0] x, z; | |
| x = y; | |
| begin:bar | |
| reg [15:0] x; | |
| x = 77 + a; | |
| z = -x; | |
| end | |
| y = x ^ z; | |
| end | |
| endtask | |
| always @* begin | |
| x = func_01(11, 22); | |
| y = func_02(33, 44); | |
| task_01(k); | |
| task_02(k); | |
| begin:foo | |
| reg [15:0] y; | |
| y = x; | |
| y = y + k; | |
| x = y; | |
| end | |
| x = func_01(y, x); | |
| y = func_02(y, x); | |
| end | |
| endmodule |