Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 15:02
· 49 commits to main since this release

Added

  • Add programmable Pattern execution with normal Python functions through match(body) for checks and collect(body) for extraction.

  • Add Pattern failure diagnostics with require_message= and timeout_message=.

  • Add experimental unknown-mask loading APIs:
    load_unknown_mask(...) and load_matched_unknown_masks(...).

  • Add unified query matcher support for canonical /regex/ syntax, * / **
    wildcards, and typed capture objects.

Changed

  • Unify reader hierarchy, signal resolution, query matching, and matched loading across VCD, FST, and FSDB readers.

  • Improve range handling for native ranges, non-zero ranges, scalar bit selects, packed ranges, and FSDB leaf signals.

  • Improve Waveform.__repr__ / __str__.

  • Make Waveform.compress() preserve value-change points and the final sample.

Fixed

  • Fix Pattern zero-time declarative loops so they cannot run forever in the same cycle.

  • Avoid double-evaluating the first unguarded declarative wait(...) trigger.

  • Improve VCD/FST/FSDB reader behavior for empty signals, invalid ranges, composite signals, and X/Z handling.

  • Validate xz_value consistently.

Breaking changes

  • Redesign Pattern imports and execution. Pattern APIs now live under wavekit.pattern, and execution uses module-level match(...) / collect(...) instead of Pattern().match() / Pattern().timeout(...).

  • Replace MatchResult with MatchRecords / MatchRecord. Results now support row access with records[i], slicing, structured start/end points, status objects, and capture columns.

  • Replace enum-style Pattern statuses and valid helpers. Use MatchStatus.OK(), MatchStatus.Timeout(message), MatchStatus.RequireViolated(message), plus ok, failed, filter_ok(), filter_failed(), and filter_status(...).

  • Update Pattern timing and blocking semantics. wait(...) observes events, consume(...) claims events exclusively for channel-based pairing, and successful blocking steps continue in the same cycle. Use delay(1) for next-cycle behavior.

  • Rename matched-reader parameters from pattern / clock_pattern to signal_path / clock_path.

  • Change matched-reader keys from plain captured values to typed CaptureKey
    tuples containing capture objects such as BraceCapture and RegexCapture.

  • Replace legacy wavekit.scope, wavekit.signal, and wavekit.readers.pattern_parser modules with the unified hierarchy/query model under wavekit.readers.