In reply to rishikpillai90:
You can add an explicit type to an assignment pattern so it can be used in a self-determined context.
typedef lp_s lp_sq[$];
lp_s vari[$] = { // unpacked array concatenation of struct assignment patterns
lp_s'{a: A_ENUM, b: B_ENUM, C: J_ENUM, D: D_ENUM},
lp_sq'{12{lp_s'{a: A_ENUM, b: B_ENUM, C: J_ENUM, D: D_ENUM}}},
lp_s'{a: A_ENUM, b: B_ENUM, C: J_ENUM, D: D_ENUM }
};
Note, you can’t use default:0 here because 0 is not a valid type to assign to an enum.