Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 17:20
· 18 commits to main since this release
917ea7a

Added

  • Add SystemVerilog-style waveform helpers: past(), rose(), fell(), stable(), countones(), countbits(), onehot(), and onehot0().
  • 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.