slang-server slang.getScope: how packed/unpacked/typedef types are spelled in the type field
Probed slang-server executeCommand slang.getScope("top.u") items {instName, kind, type}. Parameters are resolved to numbers (input wire [1:0][W-1:0] -> "input logic[1:0][3:0]"); ports get kind Port with a direction prefix; wire/var/bit/reg nets declared in the body report kind Logic (not Net), wire shows as logic; signed appears as "logic signed[1:0][3:0]" (no space before the brackets). An array of a typedef of a plain vector is spelled out (byte_t [1:0] -> logic[1:0][7:0]), as is a type parameter. But a typedef that is itself multi-dimensional shows as "half_t (aka logic[1:0][7:0])", enum/struct arrays keep the type name ("st_t[1:0]", "pair_t[1:0]"), unpacked dims follow a $ ("logic[1:0][3:0]$[0:1][0:2]"), and a generate-for scope lists only [0]/[1] Scope items; query "top.u.gen[0]" for its signals. Useful when deriving packed dimensions for waveform splitting: accept only logic/bit/reg bases and refuse anything with $ or a type name, then cross-check the product of the dims against the dumped width.