wdbcvt: Bundling Waveform Test Corpora and Daily Nightly Releases
wdbcvt now publishes two new release archives with every build: a
documentation bundle and a waveform corpus.
The waveform archive packages the test suite’s .wdb files, ground-truth
.fst conversions, and HDL source files together.
Nightly builds now run daily, check the repository forge for new commits, and
publish all build artifacts to Forgejo and GitHub.
Why a standalone waveform corpus matters
Tool developers who study Vivado’s .wdb format need test cases.
Vivado is a multi-gigabyte software package.
Running simulations requires licenses and tool setups that many open-source
developers do not maintain.
The wdbcvt repository already contains dozens of simulated test cases across
VHDL, Verilog, and SystemVerilog.
Previously, these test cases stayed inside the repository tree alongside
intermediate simulation files.
Developers of external tools had to clone the full repository or run Vivado
locally to obtain sample waveforms.
Providing a pre-packaged waveform archive removes that barrier. Anyone writing a waveform parser or waveform viewer can download real-world simulation data directly from the release page.
Bundling waveforms and sources with Bazel
The waveform archive requires a clean directory structure.
Each test case must include its original HDL source files (.v, .sv, .vhd,
and .vhdl), the generated .wdb waveform, and the converted .fst
reference.
The build rules place the HDL source files in the same directory as the
waveforms for each case.
Keeping sources and waveforms together lets developers inspect the design unit
and the binary signal data side by side.
Intermediate simulator files must not enter the archive.
Vivado simulation runs create .vcd files, xsim.dir directories, and
various .jou and .log files.
These files add hundreds of megabytes of noise without providing value for
waveform format analysis.
Bazel targets assemble the release archives cleanly:
//hdl:all_wdbaggregates the simulation outputs across all HDL test cases.//tools/waveforms/bundlecollects the.wdbfiles, the.fstfiles, and the matching HDL sources. It discards all simulator debris and writes the result intowdbcvt-waveforms.tar.gz.//docs:archivegathers all Markdown specification documents underdocs/intowdbcvt-docs.tar.gz.
Because Bazel controls the inputs, the produced tarballs contain only the declared files.
Daily rolling nightly releases
Automated releases need a regular schedule and change detection. The nightly release workflow previously ran on a monthly schedule. The workflow now runs every day at 03:00 UTC.
To prevent empty releases, the workflow queries the Forgejo API before starting the build. If the latest commit SHA matches the latest release tag, the workflow exits early. The workflow only builds and publishes artifacts when new commits exist.
When changes are present, the release job builds all target binaries and
tarballs into dist/release/.
The workflow then uploads every file in dist/release/ to the Forgejo release
and synchronizes the assets to the GitHub mirror.
Using the release artifacts
You can find the new archives on the wdbcvt releases page.
The documentation archive provides the current specification of the .wdb
binary format.
The waveform archive provides ready test cases for tools such as
Surfer and GTKWave.
External test suites can now test their waveform parsers against real Vivado
outputs without running Vivado.