Skip to content

Releases: Ferrite-Engineering/wavecrux

WaveCrux 1.1.1

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 25 Oct 16:43

A fix release for five problems reported against 1.1.0. Simulators can rewrite a waveform you have closed or reloaded, decoder and Stage bindings survive a changed dump, and narrow bus values no longer show misleading digits. Nothing else about how WaveCrux looks or works has changed. Thanks to Chili.CHIPS for every one of these reports.

Fixed

  • Closing or reloading a waveform releases the file. WaveCrux stopped its background reader before the reader had closed the file, so the file stayed open until you quit. On Windows that kept a simulator from deleting and rewriting its dump. The reader now closes the file first (#53).
  • Decoder and Stage bindings follow their signals when the dump changes. Bindings were saved by an internal signal number, which changes whenever the design or the dump does, so a re-simulated trace opened with empty decoder rows and an empty RVFI Commit Inspector. Bindings now save each signal's hierarchical path and rebind by it. A binding whose signal is gone shows in a banner and binds again when the signal returns. Sessions saved by 1.1.0 still open, and 1.1.0 can still open sessions saved by 1.1.1 (#54).
  • A bus value too wide for its lane keeps its last digits. A value that did not fit was cut at the right edge with no ellipsis, so a narrow lane could show what read as a different number. Leading zeros are dropped first, then the value is shown as … and its trailing digits, the ones that change; if even that does not fit, the lane shows no label (#49).
  • The RISC-V Instruction Trace row shows the disassembly. Each instruction was drawn with no width, so the row showed only tick marks. Each instruction now spans to the next one (#45).
  • Saving a session keeps a relative waveform path relative. A session that pointed at its waveform with a relative path was rewritten with an absolute one on save, which broke sessions committed next to their dumps. The path now stays relative when the waveform is in the session's folder or below it (#31).

Download: https://wavecrux.app/download

WaveCrux 1.1.0

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 19 Oct 16:58

The first feature release since 1.0. Cleaning up a crowded canvas is now one
step instead of dozens, the transaction table shows every transaction a
decoder finds, and more of WaveCrux is free: sending a cross-probe and joining
a collaborative session no longer need a licence. The PCIe TLP decoder in Pro
grows into a full transaction analyzer, and remote control over WCP is ready
for scripts and CI.

New

  • Remove signals in bulk, with Undo. View ▸ Clear Canvas takes every
    row off the active tab and leaves the file, cursors, markers, decoders and
    zoom alone. A group's menu adds Remove Group and Signals (the old
    Remove Group is now Ungroup, which is what it always did), and a
    scope in the signal tree adds Remove All in Scope beside Add All in
    Scope
    . Every removal, including a single ×, can be undone.
  • Cross-probing is free in every edition. Sending a selection to another
    EDACrux app no longer needs a licence; receiving never did.
  • Joining a collaborative session is free. Anyone with WaveCrux can join
    and follow a session. Hosting one (Share Session) stays Enterprise, and
    exporting the session recording and review minutes is for the host.
  • The transaction table has no row cap. It used to stop at 2,000
    transactions; the rows are now drawn as you scroll, so a long trace shows
    every transaction, with the same keyboard and screen reader behavior.
  • Decoder plugins can size a signal from a parameter. A manifest signal can
    name the parameter that sets its width (plugin ABI 1.2), so one decoder
    covers a bus that comes in several widths. Signal pickers and auto-bind now
    list every name of an aliased signal, and use the decoder's configured width
    for built-in decoders too.
  • Decoders a build cannot load stay visible. A session that names a Pro
    decoder, or one from a plugin that is not installed, now shows it as "Not
    available in this build" instead of keeping it out of sight, and you can
    remove it on purpose.
  • Remote control from the command line. --wcp-port <n> or
    WAVECRUX_WCP_PORT turns on the WCP server for one process without touching
    your settings, so a script, a CI job or a second instance can each listen on
    its own port. Port 0 picks a free one and prints it.
  • GTKWave save files import more faithfully. A .gtkw import now applies
    its translate filters, zoom, scroll position and open scopes, not only the
    trace list, markers and cursor.
  • Branded theme presets use their designed colors. Solarized Dark, High
    Contrast Dark, Oscilloscope and OLED XR now paint their own cursor, marker
    and ruler colors, and theme colors reach the main toolbar.
  • PCIe TLP decoder (Pro). It reads 64, 128 and 256-bit beats with byte
    enables, ships presets for Xilinx 7 Series, UltraScale (CQ, CC, RQ and RC)
    and Intel Avalon-ST, pairs completions with their requests to measure
    latency and catch tag errors, checks the PCIe Base Specification
    transaction rules, and adds transaction statistics with a JSON export. The
    reset signal is optional.
  • Debug Advisor (Pro). Each finding now points at the moment it is about,
    so View causal chain traces from the right time, and an X-trace that
    cannot run says why. Zero-delay RTL dumps no longer produce setup and hold
    warnings for registers that change on their own clock edge.
  • A command palette button on tablets. Phones and tablets get a toolbar
    button for the command palette, so it no longer needs a hardware keyboard.
  • Crash detection. If a desktop session ends without a clean exit, the next
    launch sends one event that says so. It carries nothing beyond the standard
    fields usage statistics already send, and it follows the same setting in
    Settings ▸ Privacy: with usage statistics off, nothing is sent.
  • No identifier while usage statistics are off. With them off, the app
    keeps no installation identifier; turning them back on creates a new one.
    On first launch, the default now reads your operating system's region
    setting as well as its language.

Fixed

  • Third-party decoder plugins load on macOS. The notarized app refused any
    plugin library not signed by Ferrite Engineering. The plugin safety notice
    and the optional content-hash allowlist remain the controls.
  • The AXI4-Lite decoder handles pipelined traffic. Several outstanding
    writes and reads are legal AXI4-Lite; the decoder flagged the second as a
    violation and could pair a write response with the wrong address and data.
    Writes and reads still unanswered at the end of the trace are now listed.
  • The live cross-probe broadcast sends. Selecting a signal now reaches
    connected EDACrux apps automatically, as the per-peer send button always did,
    including when the clicked row was already the focus.
  • Remote control (WCP) follows the specification. reload keeps the
    displayed items, cursors and markers; load with no tab open opens one;
    viewport commands report an error when they cannot take effect; every row
    has its own item id; focus_item and set_item_color work for clients that
    follow the specification, and the latter accepts color names and #RGB;
    add_markers takes any marker name.
  • Escape in an open menu closes the menu instead of also clearing the
    cursors.
  • Enterprise session templates apply to the first tab after a cold start,
    instead of the tab opening before the template arrived.

Also

  • Interface polish across the app: two open files with the same name show the
    folder that tells them apart; the "source changed" prompt is the same banner
    in every EDACrux app and can be declined; Split Pane Right needs two tabs
    to split; command palette shortcut hints are readable on the selected row;
    focus rings no longer crowd their text; an empty panel tells a screen reader
    what belongs there; and on macOS the window reopens where you left it, on
    the same display.
  • The Linux build now needs glibc 2.35 instead of 2.38, so it runs on Ubuntu
    22.04 and Debian 12.
  • The Linux packages register WaveCrux's file types, so waveforms open from
    the file manager, and the Windows uninstaller removes the install folder it
    leaves behind.
  • Cross-probing between EDACrux apps now proves the identity of both ends
    without sending the connection token over the wire. 1.0 apps still connect.
  • Built with Flutter 3.47.5.
  • Other performance and quality enhancements.

Download: https://wavecrux.app/download

WaveCrux 1.0.1

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 07 Oct 20:25

A fix release. Decoder plugins now draw their transactions at the right time on
every waveform, and the PCIe TLP decoder binds to simulation exports that carry
no reset. Nothing else about how WaveCrux looks or works has changed, and new
features are on their way in 1.1.

Fixed

  • Decoder plugins place transactions at the right time. WaveCrux 1.0.0
    passed sample times to a plugin in femtoseconds, as the plugin interface
    says, but read the times the plugin returned as if they were in the file's
    own units. On any waveform with a timescale coarser than 1 fs, every decoded
    transaction was drawn too late by that factor (1,000 times too late on a
    1 ps file), usually past the end of the trace, so the decoder row looked
    empty. Plugins that divided their own output to work around this should stop
    doing so on 1.0.1. Thanks to openPCIE
    for the report (#22).
  • Decoder plugin manifests accept enum_labels as a list. A list with one
    label per enum_values entry now works alongside the documented object form.
    Any other shape names the parameter in the error instead of failing the whole
    plugin. The plugin authoring guide
    shows both forms.
  • The PCIe TLP decoder (Pro) no longer requires a reset signal. rst_n is
    now optional, and leaving it unbound means the link is never in reset, so the
    decoder binds to a TLP stream exported from simulation without one.
  • Usage statistics from your first session are kept. If you agree to usage
    statistics when WaveCrux first asks, the session you agreed in is now
    reported, instead of being discarded before you answered. In the browser,
    usage statistics now reach us from Safari and Firefox, and the web app no
    longer checks for desktop updates.

Also

  • Built with Flutter 3.47.3.

Download: https://wavecrux.app/download

WaveCrux 1.0.0

Choose a tag to compare

@martin-robert-fink martin-robert-fink released this 30 Sep 14:07

The first stable release, and the end of the public beta. Two things follow
from that. WaveCrux is now licensed: Open Core is free and stays free, and the
Pro and Enterprise features the beta handed to everyone now need a key. When
one is refused, the app says which tier it belongs to instead of quietly doing
nothing. And the app is named for the product rather than for the tier, so it
is WaveCrux in the Dock, the title bar, the Start menu and your app menu.

Download it from wavecrux.app/download, run it
in the browser at app.wavecrux.app, or read the
manual at docs.wavecrux.app.

New

  • Licensing, in the app. Settings ▸ License takes a key, shows what it
    entitles you to and when it renews, and Manage subscription opens the
    billing portal. Education users can apply for an EDU licence from the same
    panel. For machines that cannot reach the internet there are licence files:
    export a request, import the signed file, and the tier is active offline. A
    licence that has been cancelled or has run out of seats drops the app back to
    Open Core and says so, rather than failing in some other way.
  • A suite licence spends one seat per machine, not one per product. A seat
    is a computer. Installing the third and fourth EDACrux product on a machine
    that already has a seat no longer exhausts the seat count, because all four
    products now present the same machine identity. Deactivate this machine
    releases that seat for every EDACrux product on the computer at once, from
    whichever product you happen to be in, and the confirmation says so before
    you agree to it.
  • First launch asks. You accept the licence agreement, then answer a
    usage-statistics disclosure, before the app opens. Usage statistics start
    switched off in the EEA, the UK, Switzerland and South Korea, and can be
    turned off anywhere in Settings ▸ Privacy, which now also shows the
    installation ID the reports carry, so you can quote it. --reset-eula and
    --reset-telemetry-consent reopen either prompt.
  • One project file that opens in whichever tool you reach for. A
    <design>.crux-project manifest opens from the file picker, from the command
    line, and by double-clicking it in Finder or a Linux file manager; a manifest
    double-clicked on macOS opens in the EDACrux product you chose for it.
  • Open a waveform from VS Code. The EDACrux extension can hand WaveCrux a
    waveform it has never opened before.
  • Drop a file on the window. On macOS, Windows and Linux the whole window
    is a drop target: empty canvas or open waveform, one file or several. Each
    waveform opens in its own tab, an FSDB gets the conversion offer, sessions,
    share packs and project manifests open as they do from the picker, and a
    dropped .gtkw is imported into the active tab. Previously only the browser
    build accepted drops.
  • Cocotb TRACE lines are shown. The log panel was discarding them.
  • Deployment for managed fleets. Alongside the installer and the AppImage
    there is now an MSI for SCCM and Group Policy, and .deb and .rpm packages
    for package-managed Linux. The Linux packages are named wavecrux, so apt
    and dnf install and remove them under that name. SHA256SUMS is written
    so that sha256sum -c verifies it.
  • Organization policy (Enterprise). An administrator can ship a signed
    policy file that sets the update channel, pins a version or points at a
    mirror, allowlists decoder plugins by content hash, sets decoder parameter
    defaults, seeds standard signal groupings, and distributes theme packs and
    session templates. At startup WaveCrux reports which policy file it accepted
    (or that it refused one, and why) and names the keys this build honours and
    the ones it ignores, so a mistyped key is visible instead of silent.
  • An audit trail (Enterprise). Decoder activations, Stage-widget loads,
    session saves, licence tier changes and Pro feature activations are recorded.
    A saved session is logged by file name, never by its full path.
  • Updates know what you are entitled to. A release that only paid seats can
    install is no longer offered to an Open Core seat.
  • WaveCrux by ear. A full pass with a screen reader, now pinned as
    regression tests: the signal tree, its context menu and its selection work
    from the keyboard; the transaction table is walked as controls and rows and
    read in words; focus returns somewhere useful when you close the last file;
    and the first-launch dialogs can be answered without a mouse.
  • Report a problem from inside the app, against the public WaveCrux
    repository, with issue templates on the other end.

Fixed

  • A decoder this build cannot run survives a save. A session that names a
    Pro decoder opened in the open-core build, or a plugin decoder that failed to
    load, used to lose it on the next save. It is now kept and written back
    unchanged.
  • File ▸ Open opens every file you pick. Selecting more than one waveform
    in the dialog did nothing at all; each one now opens, as dropping them always
    did.
  • Escape no longer reports that there is no cursor to clear straight after
    clearing it.
  • On Windows and Linux the menu bar works for the whole session. Items that
    need an open document stayed greyed out from launch until you quit; macOS,
    which uses the system menu bar, was never affected.
  • Dropping a tab on another tab reorders it, rather than doing nothing.
  • LXT and LXT2 files open. Every shipped build failed every LXT/LXT2 open
    that had no fresh sibling .fst, and the browser build failed all of them:
    the converter library was never bundled on any platform. It is now part of
    the one native library every build already ships, on desktop, mobile and the
    web.
  • sigrok decoder plugins start. A plugin was never told which decoder it
    was being created for, so it refused to initialise.
  • The browser build. It starts (it was looking for files only a desktop
    install has), exports download instead of trying to write to a path, the
    transaction table's Export CSV works, and save destinations that only
    make sense on a desktop are hidden rather than offered.
  • GTKWave session import reads the primary marker from the * line and
    skips ^ filter lines, instead of misreading both.
  • Panning, searching and X-trace no longer stall the window. Panning
    re-read every transition in view on each frame; the signal tree filtered on
    every keystroke; tracing an X copied the whole history; the Debug Advisor
    froze the UI for 60–110 ms every time the cursor moved; the transaction table
    tried to render every row. Each of those is fixed, the row cap says when it
    is in effect, and the RTL source cache is now bounded.
  • Colours, dialogs and empty states across the app. Cursors, markers and
    rulers follow the active theme and any edits you make to it; an activated
    theme pack stays active; status-bar text and pane resizers take the theme's
    chrome colours; twenty-nine places that coloured text with a border token are
    corrected; Solarized Dark's status bar is legible; dialogs no longer stack on
    a held shortcut or vanish on a stray click; the presenter hand-off picker has
    a Cancel; every panel shows the same empty state; and revealing or collapsing
    a dock redraws the dock rather than the whole layout.
  • A plugin, Stage widget or organization theme that fails to load now says
    so
    in release builds, instead of disappearing.
  • Double-clicking works, and WaveCrux stops claiming files that are not
    its own.
    .vcd, .fst, .ghw, .lxt, .lxt2, .wavecrux,
    .wavecruxpack and project manifests open from Finder and from Linux file
    managers; WaveCrux no longer offers itself as the handler for every text or
    source file.
  • wavecrux --help prints usage and exits, instead of leaving an empty
    window open.
  • The diagnostics report states the version you are running, not 0.1.0,
    and Tools ▸ Copy Diagnostics Report actually copies it.
  • In-app help links land on pages that exist, and the privacy and terms
    links go to the suite pages.
  • Cross-probe sends report every failure, in your language, and closing the
    panel mid-send is safe.
  • Closing a panel while its file picker is open no longer left the viewer
    ignoring the mouse.
  • A keymap written by a newer build is refused with an explanation, rather
    than silently overwritten.
  • Two settings that changed nothing are gone, Split Pane Right is no
    longer offered where the pane cannot split, and Add All in Scope shows
    progress from the first moment rather than after it finishes.
  • Windows: Generate & Reveal selects the file in Explorer, and a tool
    that is not installed starts nothing instead of a stray process.
  • A cross-probe arriving from another EDACrux tool bounces the Dock icon.

Also

  • macOS 12.0 (Monterey) or newer is now required. WaveCrux 0.8.0 ran on
    macOS 10.15 and later; 1.0 does not. If you are on macOS 11 or earlier, 0.8.0
    remains available and will keep working, but 1.0 and later will not install.
  • On Linux, WaveCrux needs glibc 2.38 or newer. Ubuntu 24.04+, Fedora 39+,
    Debian 13+. The other three EDACrux products need only 2.34. If the AppImage
    or the .deb/.rpm refuses to start or install on an older distribution,
    this is why.
  • On Windows a fresh install goes to C:\Program Files\WaveCrux, not
    WaveCrux Pro. Upgrading over 0.8.0 with the .exe keeps the existing
    WaveCrux Pro folder, because Inno Setup resolves the install directory from
    the recorded application id rather than from the new default; the .msi
    replaces the old install and moves it. Your settings are unaffected either
    way.
  • Linux app-menu entries no longer carry the "Pro" suffix. If you run the
    AppImage, the ...
Read more