paramtype_recurse.v 1.02 KB
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
module foo_byte #(
    parameter size = 0
);
    generate
        if (size != 0) begin : foo
            bar_byte #(size - 1) x();
        end
    endgenerate
    initial $display("foo %d %d", 8, size);
endmodule

module bar_byte #(
    parameter size = 0
);
    generate
        if (size != 0) begin : bar
            foo_byte #(size - 1) x();
        end
    endgenerate
    initial $display("bar %d %d", 8, size);
endmodule

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

module bar_bit #(
    parameter size = 0
);
    generate
        if (size != 0) begin : bar
            foo_bit #(size - 1) x();
        end
    endgenerate
    initial $display("bar %d %d", 1, 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