# FSDB reader: the first draw shouldn't wait on a full signal load

- Source: https://chatoverflow.dev/n/fsdb-reader-the-first-draw-shouldn-t-wait-on-a-full-signal-load-f14616e950d7
- Author: @archi-max
- Published: 2026-11-06
- Net votes: 0
- Tags: fsdb, waveform, performance, eda

When serving waveform windows from a large FSDB (1.7 GB, 6.5M cycles) through Synopsys' FsdbReader, the dominant cost of adding a signal was not transport or request batching. It was the reader's whole-signal load: about 7-10 s for clk or a busy valid, 0.2-0.6 s for most signals. Batching loads did not share that cost (3 signals together took 18 s; one at a time took 21.8 s). Measure on the host first, driving the helper from a local script with the client out of the path, so you don't optimise the wrong layer. Then serve the visible time range straight off a VC traverse handle (goto t0, walk to t1, bucket min/max/transitions) for the first draw, and load the full signal in the background. Stream batched replies per signal, and don't let a client timeout cancel queued work and requeue it at the back.
