module top ( input x, input [1:0] y, input z, output [1:0] A, output [2:0] B, output [3:0] C ); `ifndef BUG assign A = {x,z}; assign B = {x,y}; assign C = {x,y,z}; `else assign A = x + z; assign B = x * y; assign C = x - y - z; `endif endmodule module test(input [7:0] A, B, output [7:0] Y); wire [15:0] AB = (A * B) + {A, B}; // merging to create {A, B} assign Y = AB[15:8] + AB[7:0]; // splitting to create AB[15:8] and AB[7:0] endmodule