You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add clock domains: with r.clock_domain(clock='tb.clk') makes Signal.w / Signal.m / Signal.waveform() / Signal.unknown_mask()
load against an ambient sampling recipe. clock / clock_path on load_waveform, load_unknown_mask, load_matched_waveforms, and load_matched_unknown_masks now default to None and fall back to the same ambient domain when omitted; an explicit clock always takes every sampling parameter from that call, ignoring any active domain.
Add dict-style hierarchy access: reader[path] returns the Signal or Scope at an exact path, nested lookups (scope["a.b"]) resolve relative paths, and sig[7:4] bit-selects like Waveform indexing.
Add Reader.get_matched_nodes(), a kind-agnostic get_matched_signals() / get_matched_scopes() counterpart.
Allow omitting Waveform.slice() bounds: start_index and end_index
default to None, following Python slicing semantics (wave.slice(2), wave.slice(end_index=5)).
Add Linux, macOS arm64, and Pyodide/PyEmscripten wheel builds.
Changed (breaking)
Rename Waveform.clock to Waveform.cycle for the absolute clock-cycle axis; a read-only deprecated Waveform.clock property still returns cycle. The Waveform.data recarray field clock is renamed to cycle
accordingly, and the Waveform(clock=...) constructor keyword becomes cycle= (positional calls are unaffected).
Rename reader window parameters begin_time / begin_cycle to start_time / start_cycle in load_waveform, load_unknown_mask, load_matched_waveforms, load_matched_unknown_masks, and eval
(end_time / end_cycle are unchanged).
Rename reader metadata property begin_time to start_time
(inclusive, matching end_time).
Rename Waveform.slice parameters begin_idx / end_idx to start_index / end_index, and time_slice / cycle_slice parameters begin_time / end_time / begin_cycle / end_cycle to start_time / end_time / start_cycle / end_cycle.
Remove the include_end parameter from Waveform.slice, time_slice, and cycle_slice. All selection windows are now uniformly half-open [start, end); replace include_end=True with an end bound of last + 1 (e.g. cycle_slice(10, 20 + 1)).
Replace the vcdvcd / pylibfst backends of VcdReader and FstReader
with a shared wellen-based implementation backed by the new wavekit-pywellen dependency;
loaded values and window semantics are unchanged.
VCD/FST hierarchy now follows the FSDB composite model: arrays appear as ARRAY parent nodes instead of flat leaves, and FST structs/unions become composite Signal nodes instead of Scope nodes.