`default_nettype none module Device( input wire [7:0] a, b, output wire [7:0] result ); wire [7:0] result1, result2; OrParts helper1(.data({a, b}), .result(result1)); wire [15:0] bothInputs; assign bothInputs = {a, b}; OrParts helper2(.data(bothInputs), .result(result2)); // Expect both result1 and result2 to be equal so... assign result = result1 & result2; endmodule module OrParts( input wire [15:0] data, output reg [7:0] result ); // Update the module input definition since it is assigned in an always block always @* begin result = data[15:8] | data[7:0]; end endmodule