`default_nettype none

module Device(
    input logic [7:0] a, b,
    output logic [7:0] result
);

    logic [7:0] result1, result2;

    OrParts helper1(.data({a, b}), .result(result1));

    logic [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 logic [15:0] data,
    output logic [7:0] result
);

    always_comb begin
        result = data[15:8] | data[7:0];
    end

endmodule