param_list.sv 936 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 32 33 34 35
typedef integer integer_t;
typedef shortint shortint_t;
typedef byte byte_t;

localparam value_a = 1;
localparam value_b = 2;
localparam value_c = 3;

`define DUMP_V(X) initial $display(`"V: X %b %0d %0d`", X, X, $bits(X));
`define DUMP_T(X) initial begin : \dump``X \
        localparam X x = '1; \
        $display(`"T: X %0d %b`", $bits(X), x); \
    end

module mod #(
    localparam integer_t LV1 = value_a, LV2 = value_b,
    parameter type PT1 = logic,
    integer PV1 = 100,
    parameter type(PV1) PV2 = PV1 + value_c,
    parameter type PT2 = byte_t,
    shortint_t PV3 = 4,
    localparam LV3 = 5,
    type LT1 = byte_t, LT2 = shortint_t
);
    `DUMP_V(LV1) `DUMP_V(LV2) `DUMP_V(LV3)
    `DUMP_T(LT1) `DUMP_T(LT2)
    `DUMP_V(PV1) `DUMP_V(PV2) `DUMP_V(PV3)
    `DUMP_T(PT1) `DUMP_T(PT2)
endmodule

module top;
    mod m1();
    mod #(byte, 7, 10, logic [3:0], 5) m2();
    mod #(reg [8:0], 8, 11, integer, 6) m3();
endmodule