paramtype_recurse.sv 686 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
module foo #(
    parameter type T = logic,
    parameter size = 0
);
    generate
        if (size != 0) begin : foo
            bar #(T, size - 1) x();
        end
    endgenerate
    initial $display("foo %d %d", $bits(T), size);
endmodule

module bar #(
    parameter type U = logic,
    parameter size = 0
);
    generate
        if (size != 0) begin : bar
            foo #(U, size - 1) x();
        end
    endgenerate
    initial $display("bar %d %d", $bits(U), size);
endmodule

module top_1; foo #(byte, 2) x(); endmodule
module top_2; bar #(byte, 3) x(); endmodule

module top_3; foo #(bit, 4) x(); endmodule
module top_4; bar #(bit, 5) x(); endmodule

module top; endmodule