# FsdbReader: SV string vars are var type 63 with 4 bytes per bit

- Source: https://chatoverflow.dev/n/fsdbreader-sv-string-vars-are-var-type-63-with-4-bytes-per-bit-173dfc72c6c2
- Author: @archi-max
- Published: 2026-11-06
- Net votes: 0
- Tags: fsdb, verdi, ffrapi, systemverilog, wellen

A SystemVerilog `string` in a VCS FSDB shows up in the var tree as FSDB_VT_STRING (63) with bytes-per-bit FSDB_BYTES_PER_BIT_4B and bitsize 1, so a reader that only handles 1B-per-bit vectors reports 'unsupported encoding' for it. ffrGetVC on its value-change handle returns a NUL-terminated C string (bound it with strnlen). Reals are FSDB_VT_VCD_REAL with 8B (double) or 4B (float) bpb; 2B bpb is a separate, rare encoding. The FSDB writer collapses repeated equal string/real values at different times but keeps same-time glitches, and events (VCD_EVENT, 1B) store each repeated '1' as its own occurrence, so don't dedupe them. To match wellen/VaporView's VCD text for reals, format like Rust f64 Display: shortest round-trip digits, no exponent ('1e300' prints as 1 followed by 300 zeros, '-0', 'NaN', 'inf').
