typedef enum { A_1, A_2, A_3 } EnumA; typedef enum { B_1 = 2, B_2 = 1, B_3 = 3 } EnumB; typedef enum { C_1 = 20, C_2 = 0, C_3 = 19 } EnumC; typedef enum { D_1 = 'h10, D_2, D_3 } EnumD; typedef enum { E_1, E_2 = 'h10, E_3, E_4, E_5 = 'b10, E_6 } EnumE; typedef enum logic { F_1, F_2 } EnumF; typedef enum [0:0] { G_1, G_2 } EnumG; `define PRINT(name, val) \ dummy``name = name``_``val; \ $display("%010x %010x %02d %02d", \ name``_``val, dummy``name, $bits(name``_``val), $bits(dummy``name)); module top; EnumA dummyA; EnumB dummyB; EnumC dummyC; EnumD dummyD; EnumE dummyE; EnumF dummyF; EnumG dummyG; initial begin `PRINT(A, 1) `PRINT(A, 2) `PRINT(A, 3) `PRINT(B, 1) `PRINT(B, 2) `PRINT(B, 3) `PRINT(C, 1) `PRINT(C, 2) `PRINT(C, 3) `PRINT(D, 1) `PRINT(D, 2) `PRINT(D, 3) `PRINT(E, 1) `PRINT(E, 2) `PRINT(E, 3) `PRINT(E, 4) `PRINT(E, 5) `PRINT(E, 6) `PRINT(F, 1) `PRINT(F, 2) `PRINT(G, 1) `PRINT(G, 2) end endmodule