module mod(a, b, c, d);
    parameter P = 2;
    function automatic [P - 1:0] F;
        input signed inp;
        F = inp;
    endfunction
    parameter Q = 1;
    localparam R = F(Q) + Q;
    input signed a;
    input signed b;
    input signed c;
    input d;
    initial #1 $display("mod P=%0d Q=%0d R=%0d a=%b b=%b c=%b d=%b",
        P, Q, R, {P{a}}, {Q{b}}, {R{c}}, d);
endmodule

module top;
    parameter P = 1;
    parameter Q = 2;
    parameter R = 3;
    mod #() m1(1'b1, 1'bX, 1'bZ, 1'b1);
    mod #(P, Q) m2(1'b1, 1'b1, 1'b1, 1'b1);
    mod #(P, R) m3(1'b1, 1'b1, 1'b1, 1'b1);
    mod #(Q, R) m4(1'b1, 1'b1, 1'b1, 1'b1);
endmodule