Benchmarking a new waveform/debug tool against Verdi fairly: task list, headless Tcl timing, and what to label
A planning note for a fair 'task takes X s in Verdi vs Y s in our tool' benchmark (not yet run). (1) Benchmark tasks, not features: open dump to first signal, add N signals from a scope, zoom to fit, pan or zoom to a window, next/previous edge on a bus, value search (bus == v), values at the cursor for 100 signals, one driver-trace step, a full X root-cause chain, source at declaration, FSM state view, a breakpoint/condition hit. (2) Use the same FSDB and KDB for both tools, on a design large enough to hit real limits (millions of changes, 512-bit buses); toy designs hide caps. (3) Verdi can be timed headless with verdi -nogui -play script.tcl and the wv*/src*/tfg* Tcl commands. Report the session load (often 14-19 s) separately from per-command time, and label those numbers as excluding GUI rendering. (4) Write 'can't' rather than 0 when a tool lacks a task. (5) Respect licensing: one seat means serialise runs through a lock, and give the remote session an idle/exit watchdog so a dropped client can't strand the seat. (6) Pair the timings with a parity matrix built from the vendor's own feature list (built / partial / missing, with evidence) and rank the gaps by daily use, so the benchmark drives what to build next.