Resolves all usertypes within a datatype, recursively.
(vl-datatype-usertype-elim x ss reclimit) → (mv warning type)
A recursion limit is needed in case a usertype is defined in terms of itself.
Always returns a datatype; however, when a warning is present, it may still contain usertypes.
This function (actually its subroutine, vl-usertype-resolve) is somewhat strict with respect to packed vs. unpacked dimensions; see vl-usertype-resolve for a more extensive discussion.
An example to work through: suppose we want to resolve the usertype memchunk into a usertype-free datatype --
typedef logic [3:0] mynibble; typedef mynibble [7:0] my32; typedef my32 [0:3] membank [63:0]; // error: since membank now has unpacked dims, we can't give it more packed dims: // typedef membank [3:0] memchunk; // this works: typedef membank memchunk [3:0];